Coders have ethical responsibilities. We can extract remarkably precise intuitions about people. Do we have a right to know what they didn't consent to share, even when they shared data leading us there? Balancing human needs and business specs can be tough. How do we mitigate against unintended outcomes? In this talk, we look at examples of uncritical programming, & painful results of using insightful data in ways that were benignly intended. You'll learn practices for examining how code might harm individuals. We’ll look at how to flip the paradigm, for consequences that are better for all.
Carina is a developer, advocate, dev evangelist, and educator who is passionate about getting people to examine our many preconceptions that underly everyday programming. She is also the founder of CallbackWomen, and a certified sex educator.
I'm still figuring it out, but this is my personal, biased opinion about what I think it means to be a software engineer in today's world. None of the classes I took in school prepared me for the human aspects of being a programmer, and I will cover three things I wish I'd known before I started working as a software engineer.
Kate Heddleston is a software engineer from San Francisco who loves building web applications and programming in python. She studied computer science for her Master's degree, and studied Communication and Human-Computer Interacton for her undergraduate degree. Kate enjoys using open source tools to build web applications and especially likes building portions of the product that interface with the user. You can find everything you never wanted to know about her here: https://kateheddleston.com/about
Because I firmly believe that the best thing you can do to be an amazing software engineer is spend some time doing something besides software engineering, I'd like to divert your attention away from the subject for a brief moment. I'll introduce you to a few of my closest friends (who aren't actually my friends, some aren't even alive) who have helped me understand what we do in ways you might not expect. If nothing else, I hope you'll learn some new ideas from this colorful group of writers, scientists, chefs, artists, and musicians.
Michael R. Bernstein (@mrb_bk) loves you. He lives in Takoma Park, MD and spends most of his time thinking about pottery, obscure LPs, food, and the intersection of philosophy and Computer Science.
A discussion of the political, economic, and technical context around providing a freely encrypted web by the non-profit Let's Encrypt certificate authority. Why the green locks of HTTPS matter, how Let's Encrypt is planting a flag further into the territory of HTTPS-for-all, what that will mean outside of the industry, and how our choices as software engineers impact the world.
Jeff Hodges has spent the past six years working in adversarial and distributed systems. He's the author of "Notes on Distributed Systems for Young Bloods". He previously worked at Twitter where he shipped HTTP, anti-spam, search, and other systems. and was featured in the New York Times for his work on forward secrecy. Most recently, he's helped launch Let's Encrypt, a joint effort between Mozilla, the EFF, and others to make a free, non-profit CA.
Debugging programs is hard. Over the last 3 years, I've learned a ton of ways to get into a program's head and figure out exactly what it's doing. We're going to spy on network traffic, make programs go back in time, do mystery-solving about why programs are slow, and more! Along the way I'll try to convince you that debugging is ★ cool and fun ★ and not just something tedious you have to do.
Julia Evans thinks you can be a wizard programmer! She lives in Montreal, blogs about programming at jvns.ca, and works at Stripe on the machine learning team.
What are the building blocks that should be present in every modern software project? What are some of the non-technical challenges involved in building and maintaining a software engineering project? This talk explores some of the difficult problems that graduates will face when transitioning from students to full-time software engineers. The topic is explored from the perspective of a recently graduated student that's worked in a large company for 2 years and a small company for 1 year - me!
Alex Selesse is a software engineering graduate from McGill University in Montreal. He spent 2 years working for a big corporation before switching to a much smaller company with only 4 other developers. He's been involved in several CUSECs; he was co-chair in 2014. Alex's areas of interest include code readability, automation and continuous delivery. His talk is based on his professional experience with continuous delivery, with an emphasis on the challenges associated with process improvement. In his spare time, Alex likes contributing to open source, reading books, tracking stats, writing on his blog, refining his dotfiles and rock climbing.
What actually happens when your code is run? Our programs are simple text documents composed of patterns of rules, but the processes they guide aren't nearly as well behaved. Function scopes are generated, data is plumbed through pathways, bits are shifted and applications are evaluated. There's a lot of ins, a lot of outs. It's a very complicated case. We can gain some insight into the process with console.log and step-through debuggers, but we're left to develop a full program simulation in our minds based only on the code we wrote and the tiny snapshots our debugger gives us -- effectively requiring a JS interpreter to be compiled into our wetware. This can make it somewhat challenging to reason about our work. We'll look at some ways of remedying this, starting with data structures and tiptoeing toward full programs. Your code is the DNA for a process: let's build an illustrated anatomy guide.
Dann enjoys building things, like programming languages, databases, distributed systems, communities of smart friendly humans, and pony castles with his two year old.
Building a successful career as a software engineer involves lots more than knowing how to code. Whether you’re an entrepreneur or the first developer in a start up or joining a large company, there are so many skills you’ll need to develop over time in addition to constantly growing as a developer.
In this talk, you’ll learn about practical ways to approach building these new skills quickly… backed by science!
Julie is a software developer who somehow discovered that she’s really into teaching and helping people improve. This led her on a journey to fight her fear of public speaking by becoming an instructor at a coding school and eventually became CTO. More recently, she’s rejoined Shopify to head up the Onboarding team, where she continues her quest to create amazing learning and growth experiences. Julie attended her first CUSEC in 2005 and went on to help organize it for many years. #cusecog
Professor Laurie Hendren leads the Sable Research Group at McGill University. She received her B.Sc. and M.Sc. degrees from Queen's University, Canada and her Ph.D. from Cornell. She has been a professor at McGill since 1990, was made an ACM Fellow in 2010, was awarded a Canada Research Chair in Compiler Tools and Techniques in 2011, and was made a Fellow of the Royal Society of Canada in 2012. The Sable Research Group has previously designed and implemented Soot and associated tools for the analysis and transformation of Java. For the last five years the group has been developing McLAB, a framework for compiling and executing MATLAB and extensions of MATLAB. In addition, she is currently part of a multi-disciplinary team developing domain-specific lanaguages and tools for patients and physicians in radiation oncology.
The software industry has been plagued by bugs from its very inception. All kinds of remedies have been proposed but, of course, the most popular remains thorough testing. Model checking invented in the 1980s by Clark, Emerson and Sifakis offers the hope for a more rigourous automated checking of software correctness. Among practitioners this has often met with skepticism. In this talk I will review what model checking is and discuss prospects for its use in the software industry.
Prakash Panangaden was born in Pune, India. He received a PhD from the University of Wisconsin–Milwaukee under the supervision of Leonard Parker. His PhD thesis was on renormalization of interacting fields in curved spacetime. He joined the Department of Computer Science at Cornell University in 1985 as an Assistant Professor, where he worked in the Nuprl project. He moved to McGill University as an associate professor in the School of Computer Science in 1990 and was promoted to professor in 1996. His research has covered programming languages, type theory, concurrency theory, dataflow programming, probabilistic systems, automata theory. He has also worked in pure mathematics and in theoretical physics. Prakash has successfully graduated 14 PhD students and has in total 32 descendants. He has been keynote speaker at many conferences, including the two top conferences in the field -- LICS  and ICALP. He is on the editorial boards of 6 journals. In 2013 he was elected a Fellow of the Royal Society of Candada.
What can learn from software with aggressive reliability requirements where human lives are on the line, such as spacecrafts? What can we integrate into the everyday systems we build, and how can we write tests for these requirements? Are cosmic rays really flipping bits in your machine? At Shopify we’ve taken some of those resiliency patterns to production—we’ll show how we think about resiliency and write automated tests to ensure continued reliability. This talk will introduce humbling concepts from the most complex software in the world, with a perspective on real-world tools, resources and techniques that you can adopt today.
When Simon's not researching walruses or playing chaos monkey for the company's infrastructure, he's hard at work taming the wildlife of production, protecting Shopify from flash sales, scale, misbehaving resources and itself. Other than that, as a new resident of Canada, fulfilling his obligation to call everyone out when they think they've experienced "cold weather".
Reading code is a skill, and one that is often neglected in formal computer science instruction. We learn how to read and write syntax, and sometimes even recognize design patterns, but diving into a new codebase can feel intimidating. Never fear - there are lots of tricks and strategies to make our job easier! We'll cover both mental and digital tools, and walk through a case study of exploring a large codebase for the first time.
Josh is a software developer at Mozilla. He fixes crashes in Firefox, helps build a new web browser called Servo (using the new language called Rust), and mentors many volunteer developers for both projects. He sings in a barbershop quartet, and gets really excited about making open source projects accessible to new contributors!
A whirlwind tour of how artificial intelligence is shaping the next generation of business analytics products. How data science and cognitive methods are driving real world insight.
Robin Grosset is an IBM Distinguished Engineer based in the IBM Ottawa Lab in Canada. Robin has a track record as an entrepreneur having worked in and founded successful software startups which resulted in him joining IBM in 2008 through an acquisition. Robin has over 20 years commercial experience in the field of Business Analytics and he is currently technical lead and architect for Watson Analytics a groundbreaking cognitive analytics system. Robin holds a first class honours degree in both Physics and Computing Science from the University of Newcastle in the UK.
In recent years, the efficiency of current web infrastructure has come under criticism, and we have come up with improvements to keep up with the growing usage of internet, and some have redesigned the entire system. Here, we will talk about the inevitable problems we have with the current web, and introduce project Diffy, a version controlled web inspired by video encoding algorithms, Git and IPFS. We will also talk about IPFS, and focus on the notion of questioning things we learn and use on a daily basis.
Lucille Hua is a fourth year student at McGill University, majoring in software engineering and minoring in music technology. You may know her as a software engineer at YouTube, Google, VP External for CS Undergraduate Society, McHacks board of directors, Secretariat of SSUNS 2014, web developer for numerous sites and a keen researcher. She has deep interests in computer networks, web traffic optimizations, as well as video streaming technology, video codecs, and music tech. She has put hours of work into these fields, and she is looking forward to share it with all of you. Besides her nerdy sides, she is also a seventeen-year ballet dancer, a ten-year guitarist, a singer and composer, and a travelholic.
Etsy is an online marketplace with millions of items for sale. When a user searches for something, we need to show them relevant, high-quality items. It's a common problem that requires a unique, Etsy-specific solution. I'll give an overview of how search engines work and discuss how our company values guide the way we've designed our search ranking to achieve fairness in an inherently competitive environment.
Fiona Condon is a senior software engineer on the search ranking team at Etsy. She works to make Etsy’s vast marketplace easy and fun to explore, with a focus on internationalization. She's a one-time Vancouverite living in Brooklyn and she enjoys reading, eating and tweeting.
Daniel Lanthier will walk you through on how to create a simple connected house plant. You will learn which IOT platform solutions are adequate for your DIY projects. The plant uses the output from the sensor combined with an Electric Imp will then trigger tweets based on its water and light levels.
Daniel is a Development Manager at Macadamian Technologies and has a Bachelor’s Degree in Computer Engineering from University of Ottawa. Daniel has over 10 years of experience in development, from application servers to mobile applications. Dan also coaches high school students on how to write applications. When Daniel isn’t in front of a computer, you can find him in the country, and/or preparing a delicious meal.
In online video games a dedicated server provides all the players with a consistent view of the game world. It has absolute authority over every state change in the system; a true backbone of the network. What happens when this starts to cost too much money or when heavy server arbitration gives you poor performance? This talk will guide you through some of the technical requirements of online open-world games at Ubisoft and explain why peer-to-peer networking is our weapon of choice. Learn how to correctly give clients authority over your system without becoming victim to the various pitfalls of a server free approach.
Nathan Ross Powell (@nathanross) is currently a network programmer for Ubisoft Montreal working on an unannounced title. He is from Middlesbrough in the North East of England, has a degree in Computer Games Software Engineering from Northumbria University and over eight years of professional experience in the games industry. Nathan’s latest video game credit was on Watch_Dogs where he looked after online gameplay, engine replication and first party technical requirements (Microsoft, Sony). In addition to his passion for building connected experiences and modern C++ techniques, Nathan makes and programs mechanical keyboards, snowboards during the long winter, and is slowly working his way through Montreal's impressive selection of craft beers.