Twin Cities Code Camp

Spring 2018, Sat, Apr 21, 2018


  • Erik Dahl

    ASP.NET 2.0 - From New Project to CI/CD

    by Erik Dahl
    New to ASP.NET Core 2.0? Or haven't yet seen it all the way through Continuous Integration and Continuous Deployment? In this session we will cover ASP.NET Core 2.0 - benefits of using it and when not to, then look at the project templates (dotnet new and in VS 2017), then look at a simple but real application to search and view log entries from a SQL Server database. The technology used includes Dapper, Bootstrap, jQuery, Kendo UI Core (open source), and TypeScript. We'll explore this application and then look at what it took to enable full CI/CD within Visual Studio Team Services (VSTS).
  • Dani Ames

    Knowing Things Work instead of Thinking Things Work

    by Dani Ames
    Production can be a scary environment. Sometimes things are working great and sometimes they're a complete dumpster fire. How do you know your current status? How do you know where your problem is or which server is causing the degradation? In this talk I'll discuss a journey from no application performance monitoring (APM) to "good enough to troubleshoot today" APM and where the team continued after our tire fire was turned back into a normal day. I'll focus on the abstract types of things to watch for and show how easy retrofitting these abilities can be, but for those curious, the examples are built on influxdb, telegraf, and grafana.
  • Jennifer Simon

    Level up your Hustle! How to sell yourself, your product or idea.

    by Jennifer Simon
    Communication is key to success for every position at every level of a company. If you are a developer who has an idea how will you communicate it to your team? What if you are a project manager with an idea for a better process or procedure? If you are an executive with a great road map, how will you gain interest from the board and other C-Level executives? Come to Jennifer’s talk on Level Up Your Hustle, • Learn how to be your own consultative sales person • How to better prepare for meetings • How to ‘Pitch’ your idea or project • Most importantly, how to make an impact for your organization.
  • Eric Brandes

    Making music with Ableton, Typescript and Node

    by Eric Brandes
    Electronic musicians typically use a keyboard or MIDI controller to create music. But, we’re software developers, so wouldn’t it be more fun if we could generate music with Typescript and Node? This talk is aimed at people of all musical levels. I’ll discuss controlling a digital audio workstation (Ableton Live) with TypeScript, and show you how to use TypeScript and Node to generate MIDI clips for drums, chords, and topline melodies. We’ll actually scaffold out song ideas live, using TypeScript to generate clips that are run through professional grade virtual instruments. Attending this talk should inspire you to see coding as an equally valid avenue to create music, and give you the tools to do so!
  • Chris DeMars

    Believe in the Power of CSS

    by Chris DeMars
    You know that song by Huey Lewis and the News, The Power of Love? "First time you feel it, it might make you sad." Might be how you feel about CSS right? What about the power of CSS? CSS has received a bad name as of late, but truth of the matter is that CSS is such a powerful piece of the front-end puzzle and you should really be excited for what's already here and what's to come! Who would have thought we could create magazine-style layouts with CSS grid? What about ruleset variable scoping with custom properties(CSS variables)? And last but not least, the pain of centering content horizontally and vertically which is now possible in three lines with flexbox! Let's talk about how awesome CSS is, and how we can restore our faith in one of the best things that makes the web amazing!
  • Mike Harris

    Say Good Bye to the For Loop with Higher Order Functions

    by Mike Harris
    Pssst, want to know a secret? I have not written a for loop in years. In fact I kind of forgotten what the syntax for one looks like. What's my secret? Higher Order Functions. Believe it or not for just about everything you are currently doing with for loops someone has already written, optimized, and tested a Higher Order Function that does the exact same thing. In this session we'll look at how to use Higher Order Functions to achieve all of your looping needs. We'll look at using map to do transformations. Using filter to trim narrow down our collections. We'll use fold to apply calculations. You'll walk away knowing how to apply Higher Order Functions to your every day coding and you'll finally be able to say good bye to the for loop.
  • Mike Marshall

    Getting Started With Progressive Web Applications

    by Mike Marshall
    Progressive Web Apps are an evolution, providing benefits over and above a standard web application. They perform better in offline and network-challenged environments, provide faster page loads with better performance characteristics, and allow your application to be first class citizens on your browser's or OS' start or home screen, living side by side with native applications. This session will take you through the basics, building a foundation for you to develop your first Progressive Web App.
  • Greg Sohl

    A DSL for Your API

    by Greg Sohl
    Have you ever wanted to allow your users to be able to write scripts to execute actions within your application? Have you ever wondered how applications that do this accomplish it? During this talk we'll look at an app with a simple, easy to grok API, and and an interpreted scripting language created using the ANTLR4 Parser/Lexer generator, with which to drive it. All this, faster than you can say "The Dragon Book".
  • Ryan Morlok

    Kubernetes: Concepts and Implementation

    by Ryan Morlok
    Kubernetes is quickly becoming the most popular way to deploy applications using containers. In this talk we will go through the concepts that underpin Kubernetes and how they all fit together, as well as concrete advice for how to port existing production applications to Kubernetes from other hosting systems.
  • David Berry

    Applying Design Patterns to Everyday Problems

    by David Berry
    Have you read about design patterns but weren’t quite sure how or where to apply them in your application? Have you heard of principles like loose coupling and programming to an abstraction, but didn’t know if you were really doing it right? If so, this talk is for you. In this talk, I’ll work from several example code segments and show how to recognize which design pattern would be appropriate. I’ll then show how to refactor the existing code to use the chosen design pattern and demonstrate how the resulting code is more understandable, easier to maintain and easier to test. Among the examples I will show is how a dependency on an external system can be refactored using an interface and applying the bridge and adaptor pattern. I’ll also show how to use the decorator pattern to cache results from an external call. Finally, I’ll show examples of how patterns like the strategy pattern and chain of responsibility pattern can replace large blocks of if/else if statements to create a simpler design that is easier to test. When this talk is complete, you will have a good idea of how to recognize where these patterns can be applied in your codebase and how you go about implementing them.
  • Dave Strebel

    Kubernetes In Action: The Developer Experience

    by Dave Strebel
    Containers are the next evolution in modern development, enabling organizations to be more agile than ever before. They can write their app once and deploy everywhere, whether dev, test or production. Containers can run on any hardware, on any cloud, and in any environment without modification. In short, they offer a truly open and portable solution for agile DevOps. This session will begin with a short intro to Kubernetes followed by an end to end demo of testing and deploying a .Net Core application to a Kubernetes Cluster with a CI\CD pipeline. We will finish the session with lessons learned and best practices of using containers in production.
  • Team Computer Glitz

    Using Thunkable to Create a Mobile App

    by Team Computer Glitz
    Thunkable was developed by MIT as a 2nd generation of App Inventor to create mobile apps. Thunkable is simple and fast for first-time app builders, but powerful enough to support your most ambitious apps. We will show how to develop and test a simple Android mobile app. We will show how to use a phone's local database or a Fusion Table of Data on the Cloud for app data. We'll talk about some of the apps we've created and show you resources where you can learn more to help you make your own Android mobile app. Developing mobile apps with Thunkable is fun. This session will make you want to go home and make your own.
  • Brian Hogan

    Automating the Cloud with Terraform, and Ansible

    by Brian Hogan
    Need a web infrastructure for your project? Setting everything up by hand is tedious, and prone to problems. That's why more and more people are moving to immutable infrastructure with Terraform and Ansible. Terraform lets you create server instances, and Ansible lets you provision them with users, software, and configuration. In this talk, you'll see how to build a web server infrastructure using Ansible, Terraform. First, you'll see how to define and create servers with code using Terraform. Then you'll see how to use Ansible Playbooks to provision a webserver and upload the web site. Finally, you'll see how to scale this infrastructure. When we're done, you'll have scripts you can run to set up your own environment.
  • Amy Gebhardt

    Code Reviews: That's a Great Idea!

    by Amy Gebhardt
    We all know that code reviews are beneficial. We’ve been told time and time again that they should be part of our development process. But – like most best practices – a practical implementation is challenging (and time consuming). Your team is convinced they are a great idea. You’ll have an opportunity to squash bugs in the least costly of development times, learn new things from your talented teammates, and build a stronger foundation of trust. Awesome. Everyone is on board. But now what? What tools are out there? What are you actually looking for? How often should the reviews happen? In this talk, you’ll get a practical guide to making code reviews effective. Whether you’re the reviewer or reviewee: there are ways to make sure this really is a great idea.
  • Scott Addie

    Tour de .NET Core CLI

    by Scott Addie
    Poll a large audience of .NET Core developers, and you’ll discover a breed that defies the heavy-handed IDEs of today. It’s inevitable. It’s becoming more commonplace. What are you really missing out on by not using Visual Studio? What does a day in the life of such a developer look like? In this session, we’ll explore what the .NET Core CLI has to offer. From frequently-used commands to item and project template creation to integration with Visual Studio Code, you’ll leave this session with tips to boost your productivity. You'll also gain an understanding of what's going on under Visual Studio's hood when working with a .NET Core app.
  • Dave Brock

    Full-Stack Development with .NET Core and Visual Studio Code

    by Dave Brock
    The advent of .NET Core has unleashed .NET in all its cross-platform power. And since you can write code in almost any platform, why should you be limited in how you write it? Join me so we can talk how you can unleash the power of .NET Core in everyone's favorite lightweight IDE, Visual Studio Code. We can debug C# 7 code, query databases, and become super productive without needing a full version of Visual Studio.
  • Lance Larsen

    Ready Player Two: VR Game Dev

    by Lance Larsen
    In the year 2044, the world is in crisis. To escape that reality, the populace turns to the OASIS, a virtual reality MMORPG that is more than just a game - it is a completely immersive virtual society. Back in 2018, at the dawn of VR, the seeds of our future were planted. What would come to be a billion dollar market, that changed the world forever, began then… Join us in viewing the 2018 talk by the Microsoft MVP Lance Larsen (www.LanceLarsen.com), one of the founders of HOLOSOFT (www.HOLOSOFT.net) This historic presentation inspired a generation of VR developers - leading at least in part to the OASIS we have today. Code focused talk that will get everyone started making Microsoft Mixed Reality VR games… • Focus on the latest and greatest VR hardware and software • Focus on creating VR experiences within Unity / C# and Visual Studio • Focus on integrating VR controllers • Focus on creating your own 3D VR launch icons Target Audience and Takeaways: Talk will accommodate a wide range of experience levels, introducing many for the first time to amazing XR/AR/VR technologies - getting them started with the tools and information to get them engaged. Additionally for the more experienced developers, we'll include strong coding examples and resources to grow quickly and start their development futures in this emerging billion dollar field.
  • Todd Gardner

    The Developer's Guide to Promoting Your Work

    by Todd Gardner
    A few years ago, I had an idea to make the web better. It was going to be great, and I had the team to build it. Nine months of late nights and lost weekends later, we launched it! The problem: no one cared. A brilliant project isn't enough. I had to spread my vision, which was difficult for a developer like me. I learned quickly that even the best ideas needed to be sold. I had to build an audience, tell a story, and win over customers. Join me for a developer's guide to marketing. I'll share hard-fought lessons on page design, social networking, advertising, and analytics that will help you bring your ideas to the world.
  • Anibal Velarde

    Developing a Nose for Code-Smells

    by Anibal Velarde
    As software developers, solving puzzles or finding answers to problems, is an energy source. We love it. We crave it. We code. That drive requires we be equipped with tools that allow us to get better every day at our craft. One tool that can help us in our daily cyber-strife is a nose for detecting bad, smelly code. The goal of this talk is to start you off on a path to improve your skills to find & fix bad code. In addition, we will share with you various resources, on-line tools, techniques and styles that can help you sharpen your skills for detecting bad code and administering the best possible antidotes to correct problems in the code you work on... whatever that code may be: legacy, brown-field or green-field (maybe we can exclude museum-worthy code).
  • Thunder PengWin Robotics Team

    Code Java Virtual Battle Bots with Robo Code

    by Thunder PengWin Robotics Team
    Learn how to code Virtual Battle Bots in Java using Robo Code. During the session you'll learn about various Java Coding tactics to build a successful battle bot. And you'll learn how to update it to make changes, depending on your competitors. See how much fun it is to learn Java coding while creating virtual robots with different behaviors and strengths.
  • Chris Johnson

    Instrumenting your way to success

    by Chris Johnson
    Are your log files disorganized? Are they hard to parse and perform an investigation of the performance of your application? Do you have trouble tracking results of an A/B test? Does your business arm require you to have 27 different tracking pixels? If you answered YES to any of these questions come on down and learn how to make your life easier through instrumentation. In this session, we'll dig into how to best instrument an application by looking at a real-world example with a hand-rolled implementation. We'll talk about how to structure the messages and even look at a tool to parse them out so they can provide real business value. Disclaimer: there will be no actual playing of musical instruments in this session.
  • Jake Reynolds

    Paying the EquiTax, Web Security in 2018

    by Jake Reynolds
    Securely developing a web application starts from the first line of code. Come learn how to hack and secure your own applications. We'll start with basic web attacks and fixes and continue on to more advanced vulnerabilities, spanning multiple web stacks.
  • Dustin Ewers

    Winning With Web Components

    by Dustin Ewers
    The bar for web development continues to increase. While web frameworks proliferate, the rise of the mobile web has made performance a major concern. Fortunately, web standards have evolved. A new set of web standards, collectively referred to as web components, give us the ability to make custom HTML elements. With web components, you can build your own suite of custom elements that work with any JavaScript framework (or none at all). Angular, React, Vue, ShinyNewFramework.js... doesn't matter. You can build a single set of components and use them accross all of your sites. Because they are native browser constructs, applications built with web components also render quickly. In this talk, you will learn about the web components standard and how to use them in your application. You'll learn about the why web components are useful, some libraries that can help you build them, and how to integrate them in your own applications. By the end of this talk, you'll be ready to build your own suite of web components.
  • Scott McAllister

    Building Command-Line Applications with OAuth in Node

    by Scott McAllister
    Node provided a way to bring JavaScript out of the browser and on to server and desktop. In addition to building web applications, now you can build command line interface applications using JavaScript! Come explore some tools and libraries that will help you in your development, and even learn how to complete an OAuth flow from the command line.
  • Jess Stodola

    Mentoring Junior Developers Through Pair Programming

    by Jess Stodola
    Pair programming is being taken on as a standard practice in many large corporations all over the globe. The sharing of knowledge between senior engineers and junior engineers minimizes the siloing of skills by increasing the abilities of junior developers, making them productive much sooner. Pair programming can be an emotional experience, for both for the mentor and the mentee. As seasoned software developers and engineers, mentoring takes a lot of time and patience. It can also be challenging for the mentee to work with someone peering over their shoulder, seeing their every mistake. This session will go over some of the things that happen unintentionally while mentoring through pair programming and how they can negatively affect the learner, the learning process, and the relationship itself. More importantly, it’ll talk about what a mentor can do to improve the success of the learner by making adjustments to how they teach.
  • Jason Bock

    Disasters in Software

    by Jason Bock
    Writing software isn't easy. In fact, it can be insanely hard at times. And when software fails, it can fail in spectacular, dramatic, and/or traumatic ways. In this session, I'll talk about the difficulties in getting software to work and techniques you should use to reduce the chances of epic disasters. We'll discuss well-known incidents of failures, both in software construction and other domains, and we'll learn from these aberrations.
  • Mark Kalal

    Secure Coding

    by Mark Kalal
    Information security involves keeping your systems secure and your company's (and your users) data safe and out of unauthorized hands. We as developers have a number of very important roles in info sec, and one of those is secure coding. In this presentation we'll talk about some secure coding practices, examples of vulnerabilities, and practical ways to avoid doing the sort of things that the bad guys exploit.
  • Keith Voels

    Using Async / Await in C# as Designed

    by Keith Voels
    The syntax for Async / Await in C# is straightforward but the mechanics are not. This discussion will help you to understand those mechanics so you can be a true wizard with Async / Await in C#. While sharing a few advanced scenarios we’ll touch on various topics including: System.Threading.Task, ConfigureAwait, Synchronization Context, Task debugging, Unit Testing, TaskCompletionSource and AsyncLocal. This is for developers who are already comfortable with the basics of Async/Await.
  • Alan Wong

    How to use Excel for good, and not evil (Microsoft Excel for developers)

    by Alan Wong
    Say the words "Microsoft Excel" and you can get anywhere from praised reactions as a great tool to organize loose sets of data, to a clockwork nightmare of spreadsheets that strikes developers as a dagger to the heart. We will show you how to use Excel to improve your experience as a developer; learn tricks to make Excel help write code, create class properties, parse code, use it to supplement your database queries, and more. The talk is intended to provide realistic examples of common problems that developers face, and how Excel can be the right tool for the job, even for a developer.
  • Josh Jones

    Let's Write a Discord Bot!

    by Josh Jones
    Discord is a popular VOIP and chat application used by gaming communities and streamers. In this talk, I'll show you how to get started writing your own bot that interfaces with the service. We'll cover how to get your application registered, how to get an API key, the libraries available for your particular language, and conclude with a live demo showing the creation of a simple bot from start to finish.
  • Tom Soderling

    Automate the Lifecycle of Your Apps with Visual Studio App Center

    by Tom Soderling
    Visual Studio App Center is a the hub of “continuous everything” for you apps: Build, UI test, distribute (think HockeyApp 2.0), see usage analytics and crash reports, and manage push notifications - all in one place. We’ll dive deep into the features, see App Center in action on a few apps, and most importantly, show how you can use App Center to release more frequently, with higher quality, and HAVE MORE FUN, by spending time on coding features instead of clicking buttons and managing overhead.
  • Andrew Cook

    Introduction to Microsoft Visual Studio Team Services

    by Andrew Cook
    Years ago when deploying software you would have to follow a tedious multistep process. A process which would fail under the smallest of errors and inevitably there were errors. Luckily today there are tools to automate not old the deployment process but also the build process. This allows teams and individuals to setup and use continuous integration and continuous deployment. We’ll explore setting up a Git repository, automating builds and deployments from that repository, setting up project work and bug tracking, and creating load tests to measure performance. Microsoft Visual Studio Team Services (https://docs.microsoft.com/en-us/vsts/user-guide/what-is-vsts) is a cloud service for collaborating on code development. It provides an integrated set of features that you access through your web browser or IDE client, including: • Git repositories for source control of your codeBuild and release management to support continuous integration and delivery of your apps • Agile tools to support planning and tracking your work, code defects, and issues using Kanban and Scrum methods • A variety of tools to test your apps, including manual/exploratory testing, load testing, and continuous testing • Highly customizable dashboards for sharing progress and trends • Built-in wiki for sharing information with your team
  • Robert Boedigheimer

    Encrypting the Web

    by Robert Boedigheimer
    Does your entire web site require HTTPS? If it doesn't now, it better soon! The Chrome team just announced starting in July 2018 it will label all HTTP pages as "not secure". Most browsers also require HTTPS to use new features like HTTP/2, service workers, and progressive web apps. Discover the many benefits of using HTTPS beyond just confidentiality, including integrity and trust. Review adoption strategies, including how to use HTTP response headers such as Strict-Transport-Security (HSTS) and Content-Security-Policy. Learn about he misconceptions around HTTPS, and that it isn't as hard to implement as you think.
  • Rockford Lhotka

    WebAssembly: A Whole New Web Dev Experience

    by Rockford Lhotka

    Web development is about to undergo a major change! For many years now people have tried to create new web development languages and experiences on top of JavaScript. This was done by transpiling or compiling code into JavaScript.

    Now there's an exciting new option: WebAssembly. All modern browsers now have the ability to run assembly language AND JavaScript, which means a lot of existing languages can now run in the browser. Languages such as C, Go, and even C#.

    If you've held off on web development because of JavaScript, or been a reluctant JavaScript user, WebAssembly offers you alternatives. The browser is no longer a mono-culture, and the future is very exciting!

  • Elijah Kulesa

    Getting Started with Azure Machine Learning

    by Elijah Kulesa
    This is a gentle introduction to machine learning with the Azure Machine Learning Studio (no linear algebra required!). We'll explore it's intuitive interface, and break down the process of creating a trained AI using machine learning. We'll start with learning how to take your data and teach an AI with it. Next we'll learn how to improve the AI using custom scripts. Finally, we'll look at deploying and using your AI for production scenarios.