Add /resources/tech-talks and /resources/tech-talks/[slug] (#180)
continuous-integration/drone/push Build is passing Details

Closes #36
Closes #37

Try it here: https://csclub.uwaterloo.ca/~a3thakra/csc/adi-tech-talks/

Reviewed-on: #180
Reviewed-by: n3parikh <n3parikh@localhost>
Co-authored-by: Aditya Thakral <a3thakra@csclub.uwaterloo.ca>
Co-committed-by: Aditya Thakral <a3thakra@csclub.uwaterloo.ca>
This commit is contained in:
Aditya Thakral 2021-08-26 00:30:30 -04:00
parent dc114f742e
commit eb4f372de7
82 changed files with 1810 additions and 50 deletions

View File

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

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>
<div className={styles.content}>
<h1>{name}</h1>
<p>{short}</p>
</div>
<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>{title}</h1>
<p>{presentorsStr}</p>
</div>
</a>
</Link>
</article>
);
}

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

@ -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

@ -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,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.

View File

@ -0,0 +1,21 @@
---
index: 58
title: 'Semacode - Image recognition on mobile camera phones'
presentors:
- 'Simon Woodside'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/semacode-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/semacode-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/semacode.avi'
type: 'DivX'
size: '180M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/semacode-xvid.avi'
type: 'XviD'
size: '180M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/semacode.mpg'
type: 'Mpeg'
size: '180M'
---
Could you write a good image recognizer for a 100 MHz mobile phone processor with 1 MB heap, 320x240 image, on a poorly-optimized Java stack? It needs to locate and read two-dimensional barcodes made up of square modules which might be no more than a few pixels in size. We had to do that in order to establish Semacode, a local start up company that makes a software barcode reader for cell phones. The applications vary from ubiquitous computing to advertising. Simon Woodside (founder) will discuss what it's like to start a business and how the imaging code works.

View File

@ -0,0 +1,25 @@
---
index: 57
title: 'Software development gets on the Cluetrain'
presentors:
- 'Simon Law'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/simon-talk-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/simon-talk-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/simon-talk-xvid.avi'
type: 'XviD'
size: '178M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/simon-talk.avi'
type: 'DivX'
size: '178M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/simon-talk.mpg'
type: 'MPG'
size: '177M'
---
Simon Law leads the Quality teams for Ubuntu, a free-software operating system built on Debian GNU/Linux. As such, he leads one of the largest community-based testing efforts for a software product. This does get a bit busy sometimes.
In this talk, we'll be exploring how the Internet is changing how software is developed. Concepts like open source and technologies like message forums are blurring the lines between producer and consumer. And this melting pot of people is causing people to take note, and changing the way they sling code.
The Computer Science Club would like to thank the CS-Commons Committee for co-sponsoring this talk.

View File

@ -0,0 +1,24 @@
---
index: 37
title: 'Software Transactional Memory and Haskell'
presentors:
- 'Brennan Taylor'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/b4taylor-stm.mpg'
type: 'Talk (MPG)'
---
Concurrency is hard. Well maybe not hard, but it sure is annoying to get right. Even the simplest of synchronization tasks are hard to implement correctly when using synchronization primitives such as locks and semaphores.
In this talk we explore what Software Transactional Memory (STM) is, what problems STM solves, and how to use STM in Haskell. We explore a number of examples that show how easy STM is to use and how expressive Haskell can be. The goal of this talk is to convince attendees that STM is not only a viable synchronization solution, but superior to how synchronization is typically done today.

View File

@ -0,0 +1,28 @@
---
index: 56
title: 'Spam Filters: Do they work and Can you prove it'
presentors:
- 'Dr. Gord Cormack'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam-xvid.avi'
type: 'XviD'
size: '473M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam.avi'
type: 'DiVX'
size: '473M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam.mpg'
type: 'MPG'
size: '472M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cormack-spam.ogg'
type: 'Ogg/Theora'
size: '481M'
---
Do spam filters work? Which is the best one? How might filters be improved? Without standards, one must depend on unreliable evidence, such as subjective impressions, testimonials, incomparable and unrepeatable measurements, and vendor claims for the answers to these questions.
You might think that your spam filter works well and couldn't be improved. Are you sure? You may think that the risk of losing important mail outweighs the benefit of using a filter. Could you convince someone who holds the other opinion? If I told you that my filter was 99-percent accurate, would you believe me? Would you know what I meant? Would you be able to translate that 99-percent into the risk of losing an important message?
Gord Cormack talks about the science, logistics, and politics of Spam Filter Evaluation.

View File

@ -0,0 +1,17 @@
---
index: 9
title: 'Starting a VN Indie Game Company as a UW Student'
presentors:
- 'Alfe Clemencio'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/indie-game-dev-clemencio-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/indie-game-dev-clemencio.mp4'
type: 'Talk (x264)'
---
Many people want to make games as signified by all the game development schools that are appearing everywhere. But how would you do it as a UW student? This talk shares the experiences of how making Sakura River Interactive was founded without any Angel/VC investment.
The talk will start off with inspiration drawn of Co-op Japan, to it's beginnings at Velocity. Then a reflection of how various game development and business skills was obtained in the unexpected ways at UW will follow. How the application of probabilities, theory of computation, physical/psychological attraction theories was used in the development of the company's first game. Finally how various Computer Science theories helped evaluate feasibility of several potential incoming business deals.
[From Sakura River interactive](<http://www.sakurariver.ca/>)

View File

@ -0,0 +1,15 @@
---
index: 28
title: 'The Art of the Propagator'
presentors:
- 'Gerald Jay Sussman'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-propagator-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-propagator.mkv'
type: 'Talk (MKV)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-propagator-slides.pdf'
type: 'Slides (PDF)'
---
We develop a programming model built on the idea that the basic computational elements are autonomous machines interconnected by shared cells through which they communicate. Each machine continuously examines the cells it is interested in, and adds information to some based on deductions it can make from information from the others. This model makes it easy to smoothly combine expression-oriented and constraint-based programming; it also easily accommodates implicit incremental distributed search in ordinary programs. This work builds on the original research of Guy Lewis Steele Jr. and was developed more recently with the help of Chris Hanson.

View File

@ -0,0 +1,20 @@
---
index: 34
title: 'The Best Algorithms are Randomized Algorithms'
presentors:
- 'Dr. Nick Harvey'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nick-harvey-random.mpg'
type: 'Talk (MPG)'
---
For many problems, randomized algorithms are either the fastest algorithm or the simplest algorithm; sometimes they even provide the only known algorithm. Randomized algorithms have become so prevalent that deterministic algorithms could be viewed as a curious special case. In this talk I will describe some startling examples of randomized algorithms for solving some optimization problems on graphs.

View File

@ -0,0 +1,27 @@
---
index: 50
title: 'The Free Software Movement and GNULinux Operating System, a talk by Richard Stallman at UCSD'
presentors:
- 'Richard M. Stallman'
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/rms_ucsd.ogg'
type: 'Ogg Theora'
size: '148MB'
---
Richard Stallman will speak about the goals and philosophy of the Free Software Movement, and the status and history the GNU Operating System, which in combination with the kernel Linux is now used by tens of millions of users world-wide.
Richard Stallman launched the development of the GNU operating system in 1984. GNU is free software: everyone has the freedom to copy it and redistribute it, as well as to make changes either large or small. The GNU/Linux system, basically the GNU operating system with Linux added, is used on tens of millions of computers today.
"The reason I care especially, is that there is a philosophy associated with the GNU project, and this philosophy is actually the reason why there is a system -- and that is that free software is not just convenient and not just reliable.... More important than convenience and reliability is freedom -- the freedom to cooperate. What I'm concerned about is not individual people or companies so much as the kind of way of life that we have. That's why I think it's a distraction to think about fighting Microsoft."
**Biography:** Stallman has received the ACM Grace Hopper Award, a MacArthur Foundation fellowship, the Electronic Frontier Foundation's Pioneer award, and the Takeda Award for Social/Economic Betterment, as well as several honorary doctorates.
The Question and Answer session (starting shortly after the hour and half mark) posed a number of interesting questions including, "Do you support the Creative Commons license?" and "Can I use ATI and NVIDIA drivers because Mesa isn't nearly as complete?".
The talk is only available in Ogg Theora, in keeping with Richard Stallman's wishes.

View File

@ -0,0 +1,22 @@
---
index: 31
title: 'The Future of Robotics and Automated Systems'
presentors:
- 'Sam Pasupalak'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sam-papusalak-future.mpg'
type: 'Talk (MPG)'
---
Bill Gates in his article "A Robot in every home" in the Scientific American describes how the current robotics industry resembles the 1970's of the Personal Computer Industry. In fact it is not just Microsoft which has already taken a step forward by starting the Microsoft Robotics studio, but robotics researchers around the world believe that robotics and automation systems are going to be ubiquitous in the next 10-20 years (similar to Mark Weiser's analogy of Personal Computers 20 years ago). Natural User Interfaces (NUIs) are going to revolutionize the way we interact with computers, cellular phones, household appliances, automated systems in our daily lives. Just like the GUI made personal computing a reality, I believe natural user interfaces will do the same for robotics.
During the presentation I will be presenting my ongoing software project on natural user interfaces as well as sharing my goals for the future, one of which is to provide an NUI SDK and the other to provide a common Robotics OS for every hardware vendor that will enable people to make applications without worrying about underlying functionality. If time permits I would like to present a demo of my software prototype.

View File

@ -0,0 +1,14 @@
---
index: 1
title: 'Unix 102 Spring 2017'
presentors:
- 'Fatema
- Charlie'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/unix102-s17-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/unix102-s17.mp4'
type: 'Unix 102 Spring 2017 (mp4)'
---
Finished the bash unit in CS246 and still don't see what's great about Unix? Want to gain some more in-depth knowledge, or some less well-known tips and tricks for using the command line? Unix 102 is the event for you! Fatema is "kind of successful" and "knows things about Unix" and you can be too! Topics covered will be: users, groups and permissions, ez string manipulation, additional skills, tips and tricks.

View File

@ -0,0 +1,26 @@
---
index: 48
title: 'Usability in the Wild'
presentors:
- 'Dr. Michael Terry'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2.avi'
type: 'XviD'
size: '521M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2.ogg'
type: 'Ogg/Theora'
size: '535M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2.mp4'
type: 'MP4'
size: '509M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mterry2.mpg'
type: 'MPG'
size: '520M'
---
What is the typical monitor resolution of a GIMP user? How many monitors do they have? What size images do they work on? How many layers are in their images? The answers to these questions are generally unknown: no means currently exist for open source applications to collect usage data. In this talk, Professor Michael Terry will present ingimp, a version of GIMP that has been instrumented to automatically collect usage data from real-world users. Prof. Terry will discuss ingimp's design, the type of data we collect, how we make the data available on the web, and initial results that begin to answer the motivating questions. ingimp can be found at http://www.ingimp.org.
The slides from the talk are available here: [ingimp\_uw\_csc\_talk\_6\_27\_2007.pdf](<http://mirror.csclub.uwaterloo.ca/csclub/ingimp_uw_csc_talk_6_27_2007.pdf>).

View File

@ -0,0 +1,24 @@
---
index: 52
title: 'UW Software Start-ups: What Worked and What Did Not'
presentors:
- 'Larry Smith'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2.avi'
type: 'DivX'
size: '332M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2-xvid.avi'
type: 'XviD'
size: '332M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2.mpg'
type: 'MPG'
size: '332M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk2.ogg'
type: 'Ogg/Theora'
size: '341M'
---
A discussion of software start-ups founded by UW students and what they did that helped them grow and what failed to help. In order to share the most insights and guard the confidences of the individuals involved, none of the companies will be identified.

View File

@ -0,0 +1,23 @@
---
index: 29
title: 'Why Programming is a Good Medium for Expressing Poorly Understood and Sloppily Formulated Ideas'
presentors:
- 'Gerald Jay Sussman'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-why-programming-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-why-programming.mkv'
type: 'Talk (MKV)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sussman-why-programming-slides.pdf'
type: 'Slides (PDF)'
---
I have stolen my title from the title of a paper given by Marvin Minsky in the 1960s, because it most effectively expresses what I will try to convey in this talk.
We have been programming universal computers for about 50 years. Programming provides us with new tools to express ourselves. We now have intellectual tools to describe "how to" as well as "what is". This is a profound transformation: it is a revolution in the way we think and in the way we express what we think.
For example, one often hears a student or teacher complain that the student knows the "theory" of some subject but cannot effectively solve problems. We should not be surprised: the student has no formal way to learn technique. We expect the student to learn to solve problems by an inefficient process: the student watches the teacher solve a few problems, hoping to abstract the general procedures from the teacher's behavior on particular examples. The student is never given any instructions on how to abstract from examples, nor is the student given any language for expressing what has been learned. It is hard to learn what one cannot express. But now we can express it!
Expressing methodology in a computer language forces it to be unambiguous and computationally effective. The task of formulating a method as a computer-executable program and debugging that program is a powerful exercise in the learning process. The programmer expresses his/her poorly understood or sloppily formulated idea in a precise way, so that it becomes clear what is poorly understood or sloppily formulated. Also, once formalized procedurally, a mathematical idea becomes a tool that can be used directly to compute results.
I will defend this viewpoint with examples and demonstrations from electrical engineering and from classical mechanics.

View File

@ -0,0 +1,20 @@
---
index: 42
title: 'Why you should care about functional programming with Haskell'
presentors:
- 'Andrei Barbu'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu1.mpg'
type: 'MPG'
---
TODO

View File

@ -0,0 +1,24 @@
---
index: 33
title: 'Wilderness Programming'
presentors:
- 'Paul Lutus'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/plutus-wilderness-programming.mpg'
type: 'Talk (MPG)'
---
Paul Lutus describes his early Apple II software development days, conducted from the far end of a 1200-foot power cord, in a tiny Oregon cabin. Paul describes how he wrote a best-seller (Apple Writer) in assembly language, while dealing with power outages, lightning storms and the occasional curious bear.
Paul also describes his subsequent four-year solo around-the-world sail in a 31-foot boat. And be ready with your inquiries -- Paul will answer your questions.
Paul Lutus has a wide background in science and technology. He designed spacecraft components for the NASA Space Shuttle and created a mathematical model of the solar system used during the Viking Mars lander program. Then, at the beginning of the personal computer revolution, Lutus switched career paths and took up computer science. His best-known program is "Apple Writer," an internationally successful word processing program for the early Apple computers.

View File

@ -1,4 +1,4 @@
import { promises as fs } from "fs";
import fs from "fs/promises";
import path from "path";
import matter from "gray-matter";

39
lib/tech-talks.ts Normal file
View File

@ -0,0 +1,39 @@
import fs from "fs/promises";
import path from "path";
import matter from "gray-matter";
import { serialize } from "next-mdx-remote/serialize";
export interface Metadata {
slug: string;
index: number;
title: string;
presentors: string[];
thumbnails: { small: string; large?: string };
links: { file: string; type: string; size?: string }[];
}
const TALKS_PATH = path.join("content", "tech-talks");
export async function getTechTalk(slug: string) {
const raw = await fs.readFile(path.join(TALKS_PATH, `${slug}.md`));
const { content, data: metadata } = matter(raw);
return {
content: await serialize(content),
metadata: { ...metadata, slug } as Metadata,
};
}
export async function getTechTalkNames() {
return (await fs.readdir(TALKS_PATH))
.filter((name) => name.endsWith(".md"))
.map((name) => name.slice(0, -1 * ".md".length));
}
export async function getTechTalks() {
const names = await getTechTalkNames();
const talks = await Promise.all(names.map(getTechTalk));
return talks.sort((a, b) => a.metadata.index - b.metadata.index);
}

View File

@ -110,6 +110,9 @@ The `<MiniTechTalkCard />` component is used on the Resources page to display co
information about Tech Talks.
<MiniTechTalkDemo />
---
## `<ConnectWithUs />`
The `<ConnectWithUs />` component is used on various pages such as the About page and the Get Involved Page!

View File

@ -23,7 +23,7 @@ export function Advice(props: { children: ReactNode }) {
<>
<div className={styles.titleContainer}>
<h1 className={styles.title}>Waterloo Undergraduate Advice</h1>
<Image src="/resources/advice/codey.svg" className={styles.codey} />
<Image src="/images/advice.svg" className={styles.codey} />
</div>
<div className={styles.adviceBarContainer}>
<Link href="/resources/advice/coop">

View File

@ -1 +0,0 @@
# Tech Talks Page

View File

@ -0,0 +1,66 @@
.page {
margin: calc(60rem / 16) 0;
}
.headerContainer {
display: flex;
flex-direction: row;
align-items: flex-end;
padding-bottom: 1rem;
margin-bottom: calc(40rem / 16);
border-bottom: calc(1rem / 16) solid var(--primary-heading);
}
.header {
padding-right: calc(82rem / 16);
}
.header h1 {
color: var(--primary-heading);
margin: 0 1rem 0 0;
text-align: left;
}
.headerContent {
max-width: calc(450rem / 16);
}
.image {
height: calc(165rem / 16);
object-fit: cover;
}
.miniCards > *:nth-child(odd) {
background: var(--secondary-accent-light);
}
@media only screen and (max-width: calc(768rem / 16)) {
.page {
margin-top: 0;
margin-bottom: calc(20rem / 16);
}
.headerContainer {
flex-direction: column-reverse;
margin-bottom: calc(20rem / 16);
}
.headerContent {
display: none;
}
.image {
margin: 0 auto;
height: calc(75rem / 16);
}
.header {
width: 100%;
padding: 0;
}
.header h1 {
text-align: center;
margin: 0;
}
}

View File

@ -0,0 +1,51 @@
import { GetStaticProps } from "next";
import React from "react";
import { Image } from "@/components/Image";
import { MiniTechTalkCard } from "@/components/MiniTechTalkCard";
import { getTechTalks, Metadata } from "@/lib/tech-talks";
import styles from "./tech-talks.module.css";
interface Props {
talks: Metadata[];
}
export default function TechTalks({ talks }: Props) {
return (
<div className={styles.page}>
<Header />
<div className={styles.miniCards}>
{talks.map((talk) => (
<MiniTechTalkCard
{...talk}
poster={talk.thumbnails.small}
key={talk.slug}
/>
))}
</div>
</div>
);
}
export function Header() {
return (
<header className={styles.headerContainer}>
<div className={styles.header}>
<h1>Tech Talks</h1>
<p className={styles.headerContent}>
These are the audio and video recordings of past CSC and other
university-related talks. Our public events can also be found on our
YouTube channel.
</p>
</div>
<Image src="images/tech-talks.svg" className={styles.image} />
</header>
);
}
export const getStaticProps: GetStaticProps<Props> = async () => {
return {
props: { talks: (await getTechTalks()).map(({ metadata }) => metadata) },
};
};

View File

@ -0,0 +1,50 @@
import { ParsedUrlQuery } from "querystring";
import { GetStaticPaths, GetStaticProps } from "next";
import { MDXRemote, MDXRemoteSerializeResult } from "next-mdx-remote";
import React from "react";
import { TechTalkCard } from "@/components/TechTalkCard";
import { getTechTalk, getTechTalkNames, Metadata } from "@/lib/tech-talks";
import { Header } from "../tech-talks";
import styles from "../tech-talks.module.css";
interface Props {
content: MDXRemoteSerializeResult;
metadata: Metadata;
}
export default function TechTalk({ content, metadata }: Props) {
return (
<div className={styles.page}>
<Header />
<TechTalkCard
{...metadata}
poster={metadata.thumbnails.large ?? metadata.thumbnails.small}
>
<MDXRemote {...content} />
</TechTalkCard>
</div>
);
}
export const getStaticProps: GetStaticProps<Props, Params> = async (
context
) => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const talk = await getTechTalk(context.params!.slug);
return { props: talk };
};
interface Params extends ParsedUrlQuery {
slug: string;
}
export const getStaticPaths: GetStaticPaths<Params> = async () => {
return {
fallback: false,
paths: (await getTechTalkNames()).map((slug) => ({ params: { slug } })),
};
};

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -0,0 +1,55 @@
<svg width="703" height="465" viewBox="0 0 703 465" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="path-1-inside-1" fill="white">
<rect x="15" y="79" width="396" height="255" rx="13.0346"/>
</mask>
<rect x="15" y="79" width="396" height="255" rx="13.0346" fill="#525284" stroke="#2A2A62" stroke-width="35.9558" mask="url(#path-1-inside-1)"/>
<path d="M147.838 170.619C131.57 173.691 118.517 184.97 113.382 200.376C109.639 211.655 110.311 223.317 115.254 233.684C117.893 239.203 120.677 242.899 125.428 247.458C137.809 259.121 156.284 262.624 172.264 256.337L174.76 255.329L179.655 257.009C196.211 262.48 213.198 258.593 225.436 246.45C234.121 237.859 238.009 228.788 239.016 214.534C239.256 210.983 239.832 206.855 240.264 205.415C241.656 200.808 244.391 196.248 248.038 192.505L251.445 188.953L253.413 190.489C257.972 194.089 262.435 201.72 263.826 208.295C265.266 215.11 264.018 223.413 260.515 230.132C258.596 233.732 251.781 240.643 248.23 242.563C246.79 243.331 244.103 244.435 242.279 245.011L239.016 246.066L241.896 248.706C245.687 252.114 251.637 255.473 257.06 257.201C273.232 262.432 290.172 258.353 302.217 246.45C310.087 238.675 314.454 229.316 315.606 217.798C316.326 210.359 313.926 199.848 309.751 192.505C307.112 187.849 301.305 181.466 296.89 178.299C284.941 169.756 269.345 167.644 255.428 172.731L251.589 174.123L248.758 172.971C243.383 170.811 239.736 170.187 232.586 170.187C225.244 170.187 222.124 170.763 215.646 173.259C205.472 177.195 195.731 186.65 191.46 196.824C189.3 201.96 188.196 206.999 187.717 214.054C187.477 217.606 186.949 221.733 186.517 223.173C185.221 228.069 182.534 232.676 178.791 236.564L175.288 240.211L173.944 239.443C171.784 238.195 167.321 232.58 165.45 228.788C163.242 224.277 162.283 220.102 162.283 214.774C162.283 209.255 163.242 205.271 165.738 200.136C169.241 193.033 176.871 186.506 184.117 184.298C185.173 184.01 186.325 183.626 186.709 183.53C187.237 183.386 187.045 182.906 185.989 181.85C182.15 177.771 173.56 173.067 166.842 171.291C161.803 169.996 152.829 169.66 147.838 170.619ZM161.035 183.146C161.611 183.386 161.227 184.154 159.163 186.794C152.205 195.72 148.798 206.423 149.47 217.366C150.094 227.205 154.125 237.091 160.267 243.907C161.179 244.915 161.803 245.874 161.659 246.018C161.515 246.21 159.451 246.45 157.148 246.546C142.128 247.362 128.067 236.804 124.66 222.213C123.604 217.798 123.7 211.175 124.852 206.663C127.635 195.672 136.561 186.698 147.502 183.818C150.909 182.954 159.355 182.522 161.035 183.146ZM237.817 183.146C238.392 183.386 238.009 184.154 235.945 186.794C229.707 194.809 226.107 204.839 226.107 214.39C226.107 218.998 224.812 224.373 222.652 228.932C221.069 232.244 219.917 233.78 216.558 237.139C213.198 240.499 211.663 241.651 208.352 243.235C202.353 246.114 195.155 247.314 189.54 246.402L187.765 246.066L189.828 243.619C196.594 235.652 199.714 227.253 200.625 214.534C201.393 203.927 203.649 198.6 210.031 192.217C216.414 185.834 223.324 182.954 232.442 182.906C234.985 182.858 237.385 183.002 237.817 183.146ZM278.271 183.578C287.629 185.786 295.211 191.929 299.578 200.856C303.993 209.879 303.945 219.526 299.434 228.932C297.85 232.244 296.698 233.78 293.339 237.139C289.98 240.499 288.444 241.651 285.133 243.235C279.135 246.114 271.936 247.314 266.322 246.402L264.546 246.066L266.61 243.619C274.528 234.308 278.367 221.781 276.975 209.879C275.919 201 272.032 191.881 266.85 186.026C264.882 183.866 264.642 183.386 265.314 183.194C267.281 182.666 275.536 182.906 278.271 183.578Z" fill="#FDF8F5"/>
<path d="M15.0862 334.994H410.914C418.984 334.994 425.527 341.536 425.527 349.607V364.433H0.473103V349.607C0.473103 341.536 7.01561 334.994 15.0862 334.994Z" fill="#525284" stroke="#525284" stroke-width="0.946205"/>
<rect y="355.182" width="426" height="9.72325" fill="#2A2A62"/>
<rect x="329.375" y="326.62" width="41.9315" height="7.90014" rx="2.70219" fill="#FDF8F5"/>
<rect x="137.931" y="326.653" width="177.802" height="7.5431" rx="2.70219" fill="#FDF8F5"/>
<rect x="39.8706" y="326.653" width="24.7845" height="7.5431" rx="2.70219" fill="#FDF8F5"/>
<rect x="70.0432" y="326.653" width="24.7845" height="7.5431" rx="2.70219" fill="#FDF8F5"/>
<rect x="100.215" y="326.653" width="24.7845" height="7.5431" rx="2.70219" fill="#FDF8F5"/>
<ellipse cx="643.525" cy="268.933" rx="59.0354" ry="64.767" fill="#1482E3"/>
<path d="M382.456 256.303L446.183 287.483C446.183 287.483 382.989 404.974 379.262 405.632C375.535 406.29 341.906 390.829 339.432 386.144C338.064 383.553 352.838 339.559 366.526 305.561C376.442 271.377 382.456 256.303 382.456 256.303Z" fill="#1482E3"/>
<path d="M401.474 61.6198C401.474 61.6198 418.713 69.5001 427.225 77.7753C439.343 89.556 447.851 115.821 447.851 115.821L385.148 131.061C385.148 131.061 381.765 103.676 387.125 87.5215C390.766 76.5461 401.474 61.6198 401.474 61.6198Z" fill="#5CAFF9"/>
<path d="M405.27 77.8095C405.27 77.8095 417.451 82.6081 423.389 87.8143C431.843 95.226 437.464 112.073 437.464 112.073L392.393 123.028C392.393 123.028 390.453 105.367 394.565 94.82C397.358 87.6546 405.27 77.8095 405.27 77.8095Z" fill="white"/>
<path d="M511.653 61.6239C511.653 61.6239 494.414 69.5041 485.902 77.7793C473.784 89.56 465.276 115.825 465.276 115.825L527.979 131.065C527.979 131.065 531.362 103.68 526.002 87.5255C522.361 76.5501 511.653 61.6239 511.653 61.6239Z" fill="#5CAFF9"/>
<path d="M507.023 78.1796C507.023 78.1796 493.941 83.7395 487.524 89.6693C478.387 98.111 472.144 117.108 472.144 117.108L520.143 128.774C520.143 128.774 522.464 108.915 518.22 97.1299C515.337 89.1232 507.023 78.1796 507.023 78.1796Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M529.944 400.526C515.966 409.537 500.002 414.514 482.48 414.514C417.271 414.514 347.788 377.259 355.169 256.322C356.621 247.11 357.951 238.26 359.225 229.781C372.54 141.189 379.787 92.9713 456.618 92.9713C520.172 92.9713 539.684 141.834 559.684 191.921C565.892 207.467 572.147 223.131 579.78 237.489C625.007 254.161 648.701 289.244 648.701 330.822C648.701 384.603 605.15 398.684 529.944 400.526Z" fill="#5CAFF9"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="354" y="92" width="295" height="323">
<path fill-rule="evenodd" clip-rule="evenodd" d="M529.413 400.513C515.435 409.525 499.471 414.502 481.948 414.502C416.739 414.502 347.255 377.246 354.637 256.31C356.089 247.097 357.419 238.248 358.693 229.769C372.008 141.177 379.255 92.9592 456.086 92.9592C519.64 92.9592 539.152 141.822 559.152 191.909C565.36 207.455 571.614 223.119 579.248 237.476C624.474 254.149 648.168 289.231 648.168 330.809C648.168 384.589 604.617 398.67 529.413 400.513Z" fill="#5CAFF9"/>
</mask>
<g mask="url(#mask0)">
<path d="M446.372 304.187C451.158 373.14 488.213 437.427 426.8 411.821C411.204 410.623 388.493 373.14 383.708 304.187C378.922 235.235 393.024 173.528 437.678 170.429C461.949 168.744 489.113 183.396 482.198 224.932C478.782 245.455 444.757 280.921 446.372 304.187Z" fill="white"/>
</g>
<path d="M574.594 304.124L643.092 314.336C643.092 314.336 651.761 340.471 642.716 365.117C633.67 389.762 611.709 402.602 611.709 402.602C611.709 402.602 540.79 449.972 538.026 449.37C535.262 448.769 514.639 428.803 513.839 424.924C513.396 422.779 527.857 396.989 544.387 377.747C531.06 316.579 574.594 304.124 574.594 304.124Z" fill="#5CAFF9"/>
<path d="M447.079 296.597L507.808 327.215C507.808 327.215 448.763 433.407 445.232 433.901C441.7 434.394 409.661 419.15 407.276 414.764C405.957 412.338 419.629 372.307 432.35 341.438C441.491 310.285 447.079 296.597 447.079 296.597Z" fill="#5CAFF9"/>
<ellipse cx="410.762" cy="148.281" rx="9.17055" ry="5.7316" transform="rotate(-9.26095 410.762 148.281)" fill="white"/>
<ellipse rx="9.17055" ry="5.7316" transform="matrix(-0.981752 -0.190165 -0.190165 0.981752 485.303 148.515)" fill="white"/>
<path d="M459.347 205.445C460.71 223.91 438.165 227.613 423.479 224.326C408.795 220.924 403.956 203.427 406.476 192.529C408.996 181.631 422.83 175.567 437.513 178.969C444.248 182.213 445.334 185.577 449.284 189.804C453.914 194.62 455.343 198.105 459.347 205.445Z" fill="white"/>
<path d="M427.356 191.551C433.4 191.671 438.361 188.673 438.436 184.856C438.511 181.039 433.673 177.847 427.629 177.728C421.585 177.608 416.624 180.606 416.549 184.423C416.473 188.24 421.312 191.432 427.356 191.551Z" fill="#2A2A62"/>
<path d="M458.716 214.074C455.782 216.782 451.822 218.893 448.103 220.433C443.222 222.526 438.575 224.393 432.484 223.581C416.971 221.316 407.403 209.833 408.81 196.954C409.803 187.524 417.434 180.414 427.389 178.191C414.031 177.696 406.027 186.181 404.622 198.945C403.081 212.744 414.346 225.873 429.858 228.139C442.613 230.005 454.141 224.01 458.716 214.074Z" fill="#2A2A62"/>
<path opacity="0.5" d="M427.25 196.738L435.251 205.885L425.83 216.071L417.561 203L427.25 196.738Z" fill="#5CAFF9"/>
<path d="M427.355 191.554C427.355 191.554 426.444 208.477 443.519 201.669" stroke="#2A2A62" stroke-width="4.82387" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M427.404 189.136C427.404 189.136 427.023 208.373 413.034 198.993" stroke="#2A2A62" stroke-width="4.82387" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M435.308 203.345C435.308 203.345 426.225 231.4 417.019 201.601" stroke="#2A2A62" stroke-width="4.82387" stroke-linecap="round" stroke-linejoin="round"/>
<g opacity="0.25">
<circle cx="388.457" cy="156.071" r="42.987" transform="rotate(1.13298 388.457 156.071)" fill="#FDF8F5"/>
<circle cx="484.781" cy="155.69" r="42.987" transform="rotate(1.13298 484.781 155.69)" fill="#FDF8F5"/>
<path d="M425.501 167.13C425.501 167.13 432.47 165.548 436.996 165.638C441.522 165.727 448.423 167.583 448.423 167.583L448.287 174.46C448.287 174.46 441.347 173.176 436.849 173.087C432.351 172.998 425.365 174.007 425.365 174.007L425.501 167.13Z" fill="#FDF8F5"/>
</g>
<circle cx="388.457" cy="156.071" r="40.575" transform="rotate(1.13298 388.457 156.071)" stroke="#2A2A62" stroke-width="4.82387"/>
<circle cx="484.781" cy="155.69" r="40.575" transform="rotate(1.13298 484.781 155.69)" stroke="#2A2A62" stroke-width="4.82387"/>
<path d="M425.501 167.13C425.501 167.13 432.47 165.548 436.996 165.638C441.522 165.727 448.423 167.583 448.423 167.583L448.287 174.46C448.287 174.46 441.347 173.176 436.849 173.087C432.351 172.998 425.365 174.007 425.365 174.007L425.501 167.13Z" fill="#2A2A62"/>
<ellipse cx="411.724" cy="168.577" rx="9.17055" ry="10.3169" transform="rotate(1.13298 411.724 168.577)" fill="#2A2A62"/>
<ellipse cx="477.055" cy="169.869" rx="9.17055" ry="10.3169" transform="rotate(1.13298 477.055 169.869)" fill="#2A2A62"/>
<path d="M345.565 42.9475L361.225 89.1195C361.838 90.9272 363.743 91.9551 365.59 91.4755C367.389 91.0087 368.548 89.2629 368.28 87.4241L361.25 39.1783C360.506 34.073 355.243 30.9552 350.408 32.7564C346.304 34.2854 344.159 38.7999 345.565 42.9475Z" fill="#4ED4B2"/>
<path d="M299.226 69.9645L337.019 100.767C338.498 101.973 340.658 101.832 341.969 100.445C343.245 99.0936 343.299 96.9989 342.096 95.5832L310.513 58.4398C307.171 54.5093 301.056 54.6637 297.916 58.7576C295.251 62.233 295.831 67.1975 299.226 69.9645Z" fill="#4ED4B2"/>
<path d="M277.357 115.037L325.141 124.721C327.012 125.1 328.858 123.971 329.373 122.132C329.874 120.343 328.947 118.463 327.223 117.77L281.987 99.5842C277.2 97.6598 271.858 100.642 270.984 105.726C270.241 110.043 273.065 114.167 277.357 115.037Z" fill="#4ED4B2"/>
<g opacity="0.25">
<path d="M584 76.4754H633" stroke="#1482E3" stroke-width="6.81502" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M608.476 101V52" stroke="#1482E3" stroke-width="6.81502" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

8
types.d.ts vendored
View File

@ -66,9 +66,11 @@ declare module "*.talk.mdx" {
import { ComponentType } from "react";
interface TalkMetadata {
name: string;
short: string;
poster?: string;
slug: string;
title: string;
presentors: string[];
thumbnails: { small: string; large?: string };
links: { file: string; type: string; size?: string }[];
}
const ReactComponent: ComponentType;