StarCon 2019 Talk Lineup
How Not To Build A Virtual Escape Room
Virtual Reality (VR) is on the rise and figuring out how to develop for it will be useful when we all inevitably start living in the matrix. In my talk “How Not To Build A Virtual Escape Room”, I will be talking about my disastrous attempts to build a VR escape room and how I finally got it right. Requiring no previous knowledge of VR, we will go step-by-step through building a basic escape room and the tools needed. The talk will include an introduction to the unity engine, attempts to unravel my thought process, the different obstacles I faced, and the resources and tools available. The VR industry has just found its legs and it has quite a while to go. Developing for it can be both annoying and amazing and we have a chance to really shape the industry’s future and flex our creative muscles. This talk serves to be a fun introduction to VR and the many projects that one can develop.
Creative Coding: Making Art on a 3D Printer
“Creative Coding” is the act of writing a computer program to create art.
It can be a fun and rewarding way to engage in computer programming.
I use Creative Coding to generate abstract, 3D printed geometric art.
This is called “Generative Art”.
It’s also called “Parametric Design”, because you define
numeric parameters that control what gets generated. By tweaking the parameters,
you can explore a design space and find the one that best expresses your
For my work, I created an open source tool and language called Curv.
It lets me write short, beautiful programs that I share with other
people (because the source code is part of the art work).
And it supports a wide range of 3D modelling techniques,
which I will demo during this talk.
I will also describe the underlying technology, “signed distance fields”.
I’ll explain why it is better suited for parametric design and 3D printing
than the conventional technology used in most 3D CAD and sculpturing programs,
and why recent advances in GPUs have made the technology more practical.
Tarjan’s Algorithm: Now You’re Cooking with DAGs!
Tarjan’s Strongly Connected Components algorithm is my favourite, and one of
Knuth’s too! In one fell swoop, it cleaves graphs into smaller parts for
processing and puts these parts in the most convenient order. Most
intriguingly, it manages to do all this in linear time!
In this talk, I’ll talk about how this algorithm works and when you might want
to use it, as well as demonstrate its utility by thwacking problems with Git,
build tools, and boolean satisfiability into submission.
I like this algorithm because it’s relatively obscure, easy to understand and implement, and yet widely applicable
Web Accessibility is More than Colour Contrast
Web development seems to focus its accessibility concerns are around colour contrast for fonts. Making a site accessible for all individuals is so much more. In this talk you’ll hear the following accessibility items:
- POUR (perceivable, operable, understandable, and robust.)
- Keyboard navigable
- Screen Reader friendly using semantic HTML
- Structures for all learning types
- Some helpful tools and sites
This talk is of interest because in Ontario by Jan 1 2021 it is required for sites to be WCAG AA compliant.
*Note: This is not an in depth talk on all that’s required
Ghost in the Compiler: Backdooring Rust
Compilers are cool! They take our code and turn it into something that runs (sometimes). But who compiles the compiler?
Turns out that a lot of compilers we use are “self-hosted”, which means they’re written in the same language they compile and are compiled by … themselves .. ?
The way this works is really interesting, and a cool side-effect is the famous “Trusting Trust” attack detailed by Ken Thompson in his 1984 paper. In this attack, one can backdoor a compiler in such a way that the backdoor insers itself into copies of the compiler compiled by itself, even when you remove it from the source code!
This has always fascinated me and was one of the main reasons I became interested in compilers in the first place. A while ago I decided to try it out myself. I wrote a backdoor for the Rust compiler that was self-propagating and could disappear from the source. It was a very fun exercise and made me appreciate compilers more.
In this talk, I’ll explain how self-hosted compilers work, how the trusting trust attack works, and describe how one can write such an attack on a self-hosted compiler. I hope this will encourage others to try working on compilers and maybe write their own version of this attack!
Search Engines: How They Work and Why You Need Them
Do you ever wonder what is happening when you click the “Search” button on a website? The search bar is the most important feature of many applications and yet most people don’t know how it really works!
Databases provide rudimentary search tools, but a truly effective search function will use a custom search engine. In this talk, we will learn about why search engines are important and how they work “under the hood” by utilizing simple data structures to provide fast and meaningful results.
You should leave this talk knowing when to build a custom search engine and what open source tools are available to help you do so!
Ping at the speed of light
A network of more than a million kilometers of fiber optic cable crisscrosses the earth, carrying our emails and tweets and cat videos at a speed of almost 300,000 kilometers per second. But do they actually go that fast? What is the physical speed of a TCP/IP packet being sent across the internet?
Trying to answer this question lead me down a fascinating rabbit hole involving packet routing, refraction of light, the undersea fiber optic cable market, GeoIP, and a variety of mediums for data transmission.
In this talk, I’ll tell you how I went about answering this question, talk about the results I got and what they mean, and explain why searching for answers to whimsical questions is important.
Conjure ye File System, transmorgifier!
Filesystem in Userspace (FUSE) is a weird interface that lets you create your own File System. Most importantly, this file system can be fake! How fake? Well, fake enough that I made an entire game played entirely by operating on your file system. The game is called Fushia.
This talk will go over FUSE, show some practical demos (a filesystem based on a JSON object), demo my game, and demonstrate what is required to implement file systems using FUSE.
People will hopefully leave this talk being super inspired to create their own file systems!
WTF is Big Data?
Hadoop what? MapReduce who? It’s very easy to get intimidated by Big Data, especially when Hadoop and its friends seem less than welcoming.
The amount of data that exists in our world is only growing. In fact, in the past minute 527,760 photos were sent on snapchat, over 4 million youtube videos were streamed, 456 000 tweets were sent out on twitter and 46,740 photos were posted on instagram. As data keeps growing, companies are abandoning their old ways of data processing and storage and adopting an entirely new way of doing things.
This talk will introduce the concepts of Big Data and how it differs from the traditional data systems we all know and love. We will dive deeper into some of the popular components that exist in the Hadoop ecosystem, such as HDFS (The Hadoop File System), MapReduce, Yarn and Hive, and understand how they all work together to solve the ‘Big Data’ problem.
By the end of this talk, you will be able to answer the question “WTF is Big Data?”
Unlock your ROM Sniffing Superpower
Were you ever curious about how to get data off of a machine without even turning it on? Read only memory (ROM) can contain information needed to boot up a machine, or the source code, music and sprites of your favorite video game. In my talk, “Unlock your ROM Sniffing Superpower”, you will learn how to get the ROM off of any circuit board. I’ll share my personal experience of dumping the ROM off an old gaming console cartridge and I’ll walk you through information you need to look for before beginning to “sniff” data.
You’ll be introduced to some hardware concepts like ROM, sniffing, parallel bus, serial bus and pins, and will begin to connect some dots between hardware and software. Together, we’ll look at game cartridge hardware, cover C code used to communicate with it to it, as well as some Python code used to parse the sniffed data. We’ll also take a look at the data that was extracted from the ROM.
or, the whale
When I was an 8 year old child I read Herman Melville’s classic Moby Dick. I loved it, especially the pictures! Embarrassingly, I didn’t realize what ‘abridged’ meant until well into my twenties. As an adult I tried and failed to finish the original. Now, as a software engineer, I will use the power of computers and natural language processing to compare the two books and figure out what I have missed.
Building Fortune Tasker
Fortune Tasker is an interactive installation using a dissembled Amazon Alexa utilizing a small printer, that gives you absurdist fortunes and suggestions on tasks you should attempt for the day. This talk will break down some of the challenges between version one, and version two, which sees the addition of ambient environmental controls, and using real world input through NFC to affect the device’s decision making. It will also include some general thoughts on using personal assistant platforms in unconventional and artistic contexts.
Collecting User Data Responsibly and at Scale
Accidentally, for technical reasons, or because it fuels their business models, organizations collect user data. With the recent implementation in May 2018 of the General Data Protection Regulation (GDPR) in the European Union there have been a flurry of talks about what it means to collect data, what qualifies as user consent, and how to store and process it.
When your data is measured in terabytes per day, getting these things right is important. This talk looks at a particular example of how one organization gains user consent, collects user data, and provides a framework to both meet the needs of legislation and to improve the organization’s ability to make decisions about their data. It then uses that case study to develop a framework for how any organization might responsibly and effectively collect and process user data.
AWK-nowledge the power! Conquering text in a single line of code
Have you ever found yourself dealing with a mountain of text files, searching for relevant information, brooding over lost time? Maybe your solution at the time was to write a couple dozen lines in your favorite language, just to invoke a single regular expression. But a dozen lines? 5 minutes to write a program? You’ll never recover all that wasted time! There’s a better way! What if a single line of code could make all your dreams come true?!
Introducing AWK, the most powerful text parsing program language that you should be using. With typical, simple programs only a single line long, AWK can be used to validate output, scrape word documents, and defeat entire armies*!
This talk will be focused on the dos and don’t of the AWK programming language and how it came into existence. I believe that with the relatively simple syntax and powerful capabilities of the language, programmers of all skill can regain control over regular expressions and bend them to their programming will!
*of text documents
Functional Programming on the Web
The audience will be introduced to how functional programming can be used in non-academic settings, advantages and disadvantages of using Elm on the Web, the growing community around Elm, and its various cool features. I have made games (and other things) with Elm which I would love to demo.
I have always been a fan of functional programming, and when I found Elm, it made web development much more enjoyable. I would love to share what I’ve gleaned so far and hope it inspires other people to learn more as well!
How Can One Make A Unicode?
Unicode is great! Unicode is the Tiny Technical Detail™ that allows any citizen of the world to communicate in their own writing system. Unicode takes on the ambitious problem of “how can we encode Latin, Arabic kasratan, historic Brahmi script, Egyptian hieroglyphs, ASCII pipe drawings, and a rocketship picture in a way people will actually adopt?”
This talk will cruise at a high level, giving insight into the (not very) secretive cabal that decides what goes into Unicode and who is in this cabal. Special attention will be given to the most recognizeable part of Unicode: emoji! And also how emoji leads to widespread adoption of Hanifi Rohingya script.
But this talk will also get into some nitty gritty, giving examples of problems Unicode can bring. This will include the “PayPaI” class of attacks and even hacking Spotify password resets!
In an ideal world, technical capacity would not limit what script a user can write their own name, username, email, or even variable identifier in without introducing security risks or causing errors. In the real world, this is not the case. This talk aims to bridge this gap, bringing Sumerian Cuneiform markings to usernames around the world.
Converting Off-the-Shelf Video Games into Exergames
Video game modification to change the look, feel, or functionality of the game, so called “modding”, is a practice that many game developers enjoy. This talk focuses on modding existing games with the goal of converting them into exergames, video games that take exercise input to cause some functionality in the game.
In a functional exergame, an exercise-related metric recorded on a sensor is required to be transferred to the game system to affect the game’s output. Step count and heart rate recorded on a pedometer and heart rate monitor, respectively, are some examples of exercise-related metrics. The output from the game system can be increasing a character’s run speed or attack power.
Converting an off-the-shelf game to an exergame requires modification of the source code or accessing certain contents to enable utilizing recorded data on the sensors. In this talk, through an example, I will discuss this conversion, with some commentary regarding the extent to which playing the game could be considered exercise, playtester’s response to the game, the fun factor, and user engagement.