Tuesday
Functional F# Programming in .NET – A success story
Presented by: Riccardo Terrell
Time: Tuesday 8:00 AM - 12:00 PMDo you want to learn F# and Functional Programming? Well, you better start coding! Learning a new programming language is not easy, on top of reading a lot you need to practice even more. This workshop is designed to teach you some of the basics of F# and Functional Programming by combining theory...
Room: Indigo BayTrack: Programming PrinciplesFormat: PreCompilerLevel: Introductory and overviewGIT: From beginner to Fearless
Presented by: Brian Gorman
Time: Tuesday 1:00 PM - 5:00 PMThis training is an introduction to GIT for source control. We'll take a look at getting started with GIT on our own machines, as well as working with GIT at public/private repositories on GitHub and/or BitBucket. Tools we'll use include BASH and VSCode GIT can scare people. It shouldn't. GIT is...
Room: Indigo BayTrack: Programming PrinciplesFormat: PreCompilerLevel: IntermediateWednesday
The Demystifying Docker and Kubernetes DOJO
Presented by: Barry Tarlton, Michael Frayer
Time: Wednesday 8:00 AM - 12:00 PMWant to be able to able to go from code to containers and then to a fully resilient, cluster managed environment like Kubernetes? Then this session is for you! This session will start with your code (or ours if you don't want to bring your own) and take you through the steps of packaging it as a...
Room: Indigo BayTrack: Programming PrinciplesFormat: PreCompilerLevel: IntermediateJava 9, 10 & 11 Workshop
Presented by: Christopher Judd
Time: Wednesday 1:00 PM - 5:00 PMWith the quick moving 6-month Java train releases, you like many Java developers and organizations may have remained on Java 8 waiting for the next Long-Term-Support (LTS) release. Well, Java 11 is here so it is time to begin the adoption and upgrading. Java 9 was a HUGE release with many impactful...
Room: Indigo BayTrack: Programming PrinciplesFormat: PreCompilerLevel: IntermediateThursday
Python, the world beyond scripting
Presented by: Charles Yost
Time: Thursday 8:00 AM - 9:00 AMPython is a wonderful language for writing simple scripts. But have you ever wondered how to go to the next level? What does it take to create a library, a desktop application, or a web application in Python? How does documentation, testing, packaging, and deployment work? What are all these crazy...
Room: Indigo BayTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewQuantity vs. Quality: Is less (code) really more?
Presented by: Anne Cahalan
Time: Thursday 8:00 AM - 9:00 AMWe all strive to write clean, concise, reusable code. Everyone's had a moment of looking at a 500-line file or a 50-line method and thinking, "This is just too much code!" There can be real joy in breaking a giant mess into small, tidy bits. But when does the quest for brevity lead us into a swamp...
Room: MangroveTrack: Programming PrinciplesFormat: General SessionLevel: IntermediateIntro to Machine Learning on the cheap and without a PhD in math: Overview
Presented by: Jim Wilson
Time: Thursday 9:15 AM - 10:15 AMMachine learning has traditionally required a command of advanced mathematics, years of university training, and expensive hardware to implement. Now with better open source tools and online resources it’s easier than ever to create your own robust neural networks. Be it image recognition,...
Room: CypressTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewTaking a byte of Java Bytecode
Presented by: Magnus Stahre
Time: Thursday 9:15 AM - 10:15 AMJava, Scala, Groovy, Kotlin, JRuby, Jython, Clojure. What do all these languages have in common? They are all powered by Java Bytecode. With the current ecosystem of languages running on the JVM, it is becoming important to learn more about the least common denominator. This talk gives an...
Room: Portia/WisteriaTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewAPI Design - The Right Way
Presented by: Jit Krishnamurthy
Time: Thursday 10:30 AM - 11:30 AMAPIs are at the core of how applications interact with each other. The first step in developing an API is to design it and ever since Eric Evans introduced Domain Driven Design (DDD) in his book ‘Domain Driven Design: Tackling Complexity in the Heart of Software’, it has been the go-to tool for...
Room: ZambeziTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewHobby Projects Are Awesome!
Presented by: Joel Byler
Time: Thursday 11:45 AM - 12:45 PMThere you are, enjoying a hobby that you love. One that gets you away from your screens and keyboard. Then out of nowhere an idea comes to mind, maybe its spurred by a problem that you encountered or a way that you could improve on a technique, you pull from your experiences and decide to start a...
Room: OrangeTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewModular Monolith: the Best of Both Worlds
Presented by: Seth Kraut
Time: Thursday 11:45 AM - 12:45 PMFirst, everyone wrote monoliths, but monoliths invariably become a big ball of mud. Now, microservices are all the rage, but they come with significant complexity. Modular monoliths combine the simple development and deployment of monoliths with much of the decoupling of microservices. This session...
Room: Portia/WisteriaTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewHold Up, Wait a Minute, Let Me Put Some Async In It
Presented by: Matthew Jones
Time: Thursday 1:00 PM - 2:00 PMThe introduction of async/await to C# has irrevocably changed how .NET developers created their applications. But what about older applications? How can they get the async goodness? In this code-heavy session, we'll take a "older" .NET web app which has no asynchronous code and slowly refactor it...
Room: CypressTrack: Programming PrinciplesFormat: General SessionLevel: IntermediateThe Immutable Laws of Software and Life: Code Accordingly
Presented by: Cory House
Time: Thursday 3:30 PM - 4:30 PMThe first Law of Ecology: you can never merely do one thing. Actions have side-effects. In this session, we'll explore how changes in software design can have unexpected, profound impacts. In this story-based session, I'll reference both popular and little-known "laws" of computing and life. I'll...
Room: ZambeziTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewFun, Friendly Computer Science
Presented by: Mercedes Bernard
Time: Thursday 3:30 PM - 4:30 PMComputer science concepts like Big O Notation, set theory, data structures, and principles of object-oriented programming sound intimidating, but they don’t have to be! This talk will dive into some fundamental computer science topics and debunk the myth that only ‘real’ programmers know...
Room: Salon ETrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewTerseScript: JavaScript with 6 characters or less
Presented by: Mike Hand
Time: Thursday 3:30 PM - 4:30 PMLet's explore the unique properties of JavaScript and learn how to write ANYTHING using only brackets, parentheses, plus, and bang. When you go back to using your full keyboard, you'll do it with a better understanding of JavaScript and some of it's, um, "features." Some of these hacks should NOT be...
Room: RosewoodTrack: Programming PrinciplesFormat: General SessionLevel: IntermediateEverything I Needed to Know About Debugging I Learned in Elementary Physics
Presented by: Nate Taylor
Time: Thursday 4:45 PM - 5:45 PMHas there ever been a time where you got a bug report and you didn’t even know where to start? Have you ever felt overwhelmed with how code is behaving? You’re expecting one thing and it does the exact opposite? Situations like these can be some of the more frustrating aspects of software...
Room: Salon ATrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewFriday
Solving the Boolean Identity Crisis
Presented by: Jeremy Fairbank
Time: Friday 8:30 AM - 9:30 AMWhile powerful in its simplicity and important to computation, the boolean can be limiting in applications. In this talk, briefly explore the history of boolean logic in computation and look at how booleans can become misused in programming languages. Explore examples where booleans obscure the...
Room: CypressTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewThe best code, is the code never written.
Presented by: Daniel Davis
Time: Friday 8:30 AM - 9:30 AMIn the modern realms of software where getting to market fast and with minimal issues is a must in order to stay competitive, we need all the advantages we can get. One such advantage is to limit the amount of actual code produced and shipped. During this session we'll explore some of the practices,...
Room: Salon ATrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewThe Creative Process of Coding
Presented by: Charlie Sweet
Time: Friday 8:30 AM - 9:30 AMThe process of writing software is often misunderstood. When you write business software you are not doing science, but rather art. Your job is not to build, but rather to design. Designing good software is about more than writing code. Knowing what code to write requires empathy and good...
Room: Portia/WisteriaTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewUnit Testing Strategies & Patterns in C#
Presented by: Bill Dinger
Time: Friday 9:45 AM - 10:45 AMLearn common patterns and strategies to effectively unit test your code in C#. We’ll go over design principles and ways to effectively ensure your code can be easily tested as well as how to use common testing tools such as Moq, Autofixture, & MsTest to help remove some of the drudgery of testing....
Room: CypressTrack: Programming PrinciplesFormat: General SessionLevel: AdvancedAn Introduction to Quantum Programming
Presented by: Matt Norby
Time: Friday 11:00 AM - 12:00 PMQuantum computers can solve some classes of problems much faster than conventional computers. But the terminology can be confusing. What are qubits, superposition, and entanglement? And how can you harness them to write programs? In this session, you will learn the language and concepts of...
Room: ZambeziTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overview[CANCELLED] Watch This Talk Before You Go Go
Presented by: John Reese
Time: Friday 11:00 AM - 12:00 PMSession is cancelled. We apologize for the inconvenience.
Room: Portia/WisteriaTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewPractical Functional Programming
Presented by: Jeremy Fairbank
Time: Friday 12:15 PM - 1:15 PMFunctional programming is more than just math and monads. Functional programming empowers developers to solve real problems with safe, predictable, and maintainable code. In this talk, discover the basics of functional programming and how to apply functional concepts in a practical manner. Learn how...
Room: NileTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewGit Back to Basics
Presented by: Angel Thomas
Time: Friday 2:45 PM - 3:45 PMHave you written code that worked, then broke it, only to not remember what the working code was? Git, a version control application could be the solution you are looking for. Git can help you to track changes in your projects, go back to when your code is working, or even find out where it broke....
Room: Salon HTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewDesigning a DSL with Kotlin
Presented by: Nicolas Fränkel
Time: Friday 2:45 PM - 3:45 PMAlthough Kotlin has made a huge impact on Android, it’s equally good on the server side. As Domain-Specific Languages are constrained by the language they run on, Kotlin frees developers from Java fluent builders to propose something better. Using the Hazelcast configuration API as an example,...
Room: RosewoodTrack: Programming PrinciplesFormat: General SessionLevel: Introductory and overviewTest-driven development: save your time, save your sanity, write great code fast
Presented by: Paul Roub
Time: Friday 4:00 PM - 5:00 PMFor the skeptical: Both new and more-seasoned devs -- especially solo practitioners -- can have a lot of misconceptions about TDD. Mostly of the "it's extra work, it's extra code, I can't ship tests, why would I test something simple and obvious" variety. But magic happens when the light bulb...
Room: Indigo BayTrack: Programming PrinciplesFormat: General SessionLevel: Intermediate