Twin Cities Code Camp

Spring 2019, Sat, Apr 13, 2019


  • Erik Dahl

    Empowering Developers Through Templates and Packages

    by Erik Dahl
    Many teams are trying to peel parts of their monolithic applications into smaller chunks that can stand on their own and even be deployed independently of other applications (microservices, anyone??). This talk will describe the benefit that creating starters, templates, and packages can have on teams doing this kind of work -- or even simply starting more than one new application. The concrete examples will be shown using .NET Core, but these concepts can apply to any language and team that is trying to break down monoliths. Packages and templates can encapsulate your opinions and make them sharable and updatable much better than saying "copy / paste these pieces from another project". Demonstrated in this talk will be an ASP.NET Core Web API template that includes bearer token authentication, error handling / logging, and Swagger, as well as an ASP.NET Core Web MVC project that includes standard npm packages, OpenId/OAuth2 setup for authentication, and logging. We'll spend most of our time looking at the mechanics of the templates - the templates themselves, publishing as Nuget packages, and using the CLI to instantiate projects.
  • Mark Webb

    An Introduction to Vue and Vuex

    by Mark Webb
    Ever wonder what the big deal is about Vue? Let's take a look at what it is and how this quickly-rising framework is used! Additionally, I'd like to show you when and why you should think about using Vuex (a Redux-like state management plugin) in your projects.
  • Cameron Vetter

    Integrating Machine Learning Capabilities into your team

    by Cameron Vetter
    Machine Learning is here today and is quickly becoming an expected skill of development teams. As a technical leader on your team, you need to not only help your team learn how to do machine learning, but also select the right tools, integrate the tools into your tool chain, and understand how to deploy and version machine learning models. This talk answers these questions using the Microsoft stack as an example. We will walk through my approach to integrating Machine Learning into a team. The topics covered include: • Where to start, while minimizing investment and risk. • The spectrum of tools from off the shelf to handcrafted. • Packaging and deploying your model. • Integrating your model into your system. • Other considerations and risks. You'll leave with my perspective on how to introduce a team to machine learning and how I recommend integrating machine learning into your software development toolkit. TARGET AUDIENCE: Senior Developers, Architects, Technical Leaders
  • Elsa Vezino

    Queryable Logs: Getting Started with Structured Logging

    by Elsa Vezino
    In this age of blossoming data analytics, even your logs can be aggregated to find the most important information quickly! This talk will start by showing you an example application using Serilog, one of the top libraries available for .NET. Next we'll demonstrate how to navigate structured logs and how it compares to traditional logging. We will cover libraries available for the different development platforms so you can pick an approach that works for you. If you are interested in taking your logging to the next level, this talk is for you!
  • Joel Lord

    I Don't Care About Security (And Neither Should You)

    by Joel Lord
    Remember when setting up a login page was easy? It seems like nowadays it can take weeks to start a project--creating a signup form, a login form, a password recovery screen, and all the validation in between. And you haven’t even started on security considerations yet. During this presentation, the attendees will be introduced to OpenID Connect and OAuth. They will also learn how to leverage these technologies to create more secure applications. Most importantly, they will learn how to delegate authorization and authentication so they can focus on their real work and forget about all that security stuff.
  • Barry Stahl

    Design Patterns for Loosely Coupled Applications

    by Barry Stahl
    Building loosely coupled applications is critical to creating solutions that follow good object oriented development principles. These principles help make sure our applications are testable, maintainable and extensible. In this session we will explore several design patterns that are key to building applications that maintain loose coupling. We start by reviewing a tightly coupled application. Then, we explore several critical design patterns by using them to convert the application into a maintainable and extensible solution that can be validated using unit tests.
  • Robert Boedigheimer

    Improving Web Performance

    by Robert Boedigheimer
    This session starts with a traditional web page and shows step by step how to improve its performance and user experience! Discover performance techniques that everyone should use, then learn techniques that differ when targeting HTTP 1.1 vs. HTTP/2. Review tools that can help identify and validate sound performance best practices. Explore how to defer resource requests with lazing loading, asynchronous loading, and postponing 3rd party tag requests. Many other performance boosting techniques will also be discussed, which can reduce response time while also boosting the scalability and reliability of your site. Learn the techniques that can have the largest impact on web performance with the least amount of work.
  • Kristen Kinnear-Ohlmann

    Let's Tackle SQL

    by Kristen Kinnear-Ohlmann
    SQL is a powerful tool to have in your tech toolbelt. Whether this a quick refresh or your head-first dive, let's tackle SQL together and get some usable tips for your projects.
  • Michael Lockett

    Behind the scenes - Customized DMX Lighting solution with .NET and MongoDB (Laser/lighting demo included!)

    by Michael Lockett
    Experience dynamic lighting and special effects while learning the source code that drives them. My session demonstrates automated control of DMX fixtures (including lasers!) with accompanying music as we delve into the source code that that produces the magic. Stimulate your senses while unleashing your own creative ideas as you follow my fun development journey. Learn how integrate .NET solutions with MongoDB (No-SQL) data collections for driving dynamic solutions. Learn how to maximize the functionality of .NET Datagridviews, how to make your own reusable toolbox controls, and even how to tap into the graphic components of .NET. Are you motivated to turn your coding ideas into reality? You will be after this session!
  • Jennifer Simon

    Putting it All Together - Nail the Interview, Get the Job, and Deliver Value

    by Jennifer Simon

    Jennifer will provide tips to enhance skills in the areas of interviewing for success, securing the job offer, and consistently bringing value to the workforce.

    Specific topics of presentation will include:

    • How to sell yourself and be your own advocate
    • Networking for the benefit of yourself and others
    • Interviewing techniques to help land the job
    • Ongoing habits to ensure your continued career success
    • Benefits of traditional fulltime employment vs. consulting
  • Megan Boczar

    Imposter Syndrome: Why Did They Let Me Come Up Here and Talk to You?

    by Megan Boczar
    What am I doing here? All these people are so much smarter than me. They’ll find out I have no idea what I’m talking about. Why did they even let me do this in the first place? I should’ve just stayed at my last job. Sure, I hated it, but I knew how to do it.

    Sound familiar? You might have Imposter Syndrome. Imposter Syndrome is a very, very common issue that a lot of us face. In the ever-growing world of tech, it sometimes seems difficult to both get and keep up to speed on what’s going on in your company. Especially for those of us that are career-changers, the task sometimes seems even more daunting.

    In this workshop, we’ll examine Imposter Syndrome and learn how to nip it in the bud! We’ll learn techniques for recognizing and squashing those imposter-y feelings before you let it take over your life and career.

  • David Pine

    WebAssembly: The New Endgame?

    by David Pine
    You may have heard of WebAssembly, like myself you probably asked "why"? Why have another way of doing web? Why introduce another standard or technology? In a world of technology saturation, what good can this do? All these questions will be answered in this session. We will explore Microsoft's experimental .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly. We will uncover the capabilities and limitations. We will see this in action and debug C# code in the web dev tools, and more. Is this the next major web innovation for the developer community? I hope you join me to find out.
  • Mike Benkovich

    Where's my Stuff? Exploring data storage options in Azure

    by Mike Benkovich
    Data is the currency of tomorrow, and with the explosion of IoT, edge devices, cloud computing and cheap storage it's never been more important to define and build around a solid data architecture. The tools of yesterday brought us to where we are, but the relational engine is not your only choice. In this session we look at storage options, including Relational, NoSQL and Document databases including SQL Azure, MySQL, Cosmos DB and Azure Storage, and show pros and cons of each. We walk thru converting a real application from using SQL Server to using storage options in the cloud, including SQL Database, table storage and Cosmos DB. We see how to leverage storage patterns to make the most out of our investment in the cloud.
  • Albert Choy

    Build Your Own Smart Car - Advances in Computer Vision

    by Albert Choy
    Every car company (from Tesla to BMW) is trying to build a self-driving car. One of the major components is computer vision. In this hour, we will look at convolutional neural networks and the latest in open source image processing libraries. Bring your laptop, a strong beverage, and join in the coding fun.
  • Dave Strebel

    Kubernetes For Mere Mortals

    by Dave Strebel

    At first sight Kubernetes can seem daunting for most users, as it has many abstractions. Knowing where to start with Kubernetes is half the battle and focusing on learning the core concepts can ease the knowledge gap.

    In this talk we will go from :

    1. Running a Microservice based application on your computer.
    2. Building container images for each service of the Microservice application.
    3. Introduction to Kubernetes. Deploying a Microservice based application into a Kubernetes Managed Cluster.

    The gradual build up provides the depth required for a mere mortal being able to grasp the simplicity of Kubernetes. Yes, Kubernetes is not so complex when you start with the core concepts and understand the abstractions it provides to the end-user.

  • Keith Voels

    Using Async / Await in C# as Designed

    by Keith Voels
    The syntax for Async / Await in C# is straightforward but the under-the-covers mechanics are not. This discussion will provide a high-level understanding of those mechanics so you can be a true wizard with Async / Await in C#. We will start with an example showing the amazing performance gains that can be had using Async / Await. Then discuss Task Based Asynchronous Processing and the under-the-covers mechanisms ExecutionContext and SynchronizationContext to understand their role. We finish with some advanced examples showing the power of the Tasks namespace. This is an intermediate discussion for C# developers who are already using Async/Await.
  • Scott Sauber

    Explaining HTTP Security Headers You Need On Your Website

    by Scott Sauber
    In this session, we'll explain a handful of HTTP Security Headers (including HSTS, CSP, XFO, and more) from the bottom up. We'll explain what they are, what they do, and how you can implement them to secure your sites. On each of these, we'll demo a before and after so you can see first hand what each of these security headers do.
  • Alan Wong

    How I Stopped Worrying and Learned to Use Excel

    by Alan Wong
    Say the words "Microsoft Excel" and you can get anywhere from praised reactions as a great tool, to a clockwork nightmare of spreadsheets and formulas. 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 as a software developer.
  • Chris Woodruff

    Developing Great Web APIs Architectures with ASP.NET Core 2.2

    by Chris Woodruff

    You know you have to have a great experience when you develop your apps, right? The greatest experience for your user's centers around their data. That’s why developing a great set of Web APIs is so important. Using ASP.NET Core Web API is a modern cross-platform framework for the modern web. ASP.NET Core Web API can be run on Windows and Linux using all the modern web servers. The secret to it all is knowing how to architect your Web APIs for the best experience.

    Using the architecture in this talk allows your APIs specifically to work better due to:

    • Allowing a clear decoupling of the API endpoints, Data Access (Synthetic or Production) and finally the Data Domain classes.
    • The API Endpoints (Controllers) have no knowledge or responsibility of Data Domain and behind it Data Access.
    • Because of the decoupling and separation of responsibilities testing can be done easily and without issues.
    • Data Access segments of the architecture can easily be switched out without impacting the Domain or API Endpoints.

    By using this architecture not only does the development story become easier but your end users get a much more stable API set to consume. The talk will explain and get you started on using these concepts with your ASP.NET Core 2.2 Web API solutions.

  • Nathan Good

    Graceful Decomposition

    by Nathan Good

    Once you've made a decision to modernize your Java Enterprise Edition applications, how do you safely decompose your monolith into micro services?

    Many enterprises are undergoing initiatives to modernized their monolithic application into micro services. But the act of decomposition isn't always straight-forward, and decomposing an application incorrectly can cause more problems than it solves. How do you handle common code to prevent rework? How do you get the most benefit out of deployment isolation?

    In this session, I examine several time-tested techniques that can be used to gracefully decompose your monolith into useful micro services. Using good practices, you will get the most out of your new architecture.

    Walk away from this session with techniques and practices that will help you be successful with micro services from monoliths.

  • Brian Hogan

    Building and Deploying Static Sites with Hugo

    by Brian Hogan
    Most web sites don’t have data that changes, so why power them with a database and take the performance hit, or worse, inflict it on your visitors? In this talk we’ll explore how to build a web site using Hugo, an open-source tool for building static content sites quickly. In this live demo, you’ll learn how to make a master layout for your pages, how to create content templates to stamp out new pages quickly, how to use Markdown to build content, and how to get all the other pieces a static site needs. Then you'll see how to deploy the site we made to production using containers. After the talk, you’ll be able to build and deploy static web sites quickly with minimal tooling.
  • Kurt Christensen

    Building a Clojure app from the bottom up

    by Kurt Christensen
    Clojure is alive and well - a pragmatic Lisp for the real world, on both the JVM and the CLR. Although the language and its libraries are interesting in their own right, what is perhaps even more powerful is the Lisp way of working - building your app at the REPL, from the bottom up. In this talk, Kurt Christensen will build a simple Clojure app in real time, and hopes to show you new ways of approaching your work.
  • Jacqueline Quintanilla

    Discover Grid

    by Jacqueline Quintanilla
    CSS Grid is here! Finally, we can build flexible, accessible, and dynamic layouts without all of the tricks, hacks, or complicated frameworks. In this session, you’ll get a taste of the potential CSS Grid opens up, learn the basics of this new layout model, and modernize your web layout game. Explore this new world of layout possibilities and get comfortable with CSS Grid.
  • Jason Rowe

    Microservice plumbing with RabbitMQ

    by Jason Rowe
    This talk will be about my experience using RabbitMQ as a message broker between our microservices. Over the years I've used messaging systems such as MSMQ, NServiceBus, MassTransit and others. What I've found is RabbitMQ just works and is simple to use. I'll talk about the basics of RabbitMQ messaging options and techniques we have used to ensure reliable messaging.
  • Darrell Andersen

    Agile Team Member: The key to real delivery value

    by Darrell Andersen
    Some Agile teams have Product Owners, some have Scrum Masters, but all of them have Team Members. While ceremonies are important, prioritizing of work is helpful and a daily standup never hurts, but without team members, nothing gets done. In this session we will highlight the key delivery aspects than an agile team member is responsible for and you will leave with the top five things you can do on your agile team to maximize delivery value.
  • Eric Dahlvang

    Bots Bots Bots

    by Eric Dahlvang
    The Microsoft Bot Framework, Azure Bot Service and Cognitive Services enable creating complex conversational experiences in minutes. In this session I will demonstrate multiple tools useful for creating intelligent bots that understand human language, communicate on various channels, and tap into the power of Azure. I'll also show how to use both the Node and .Net Bot Builder SDKs.
  • Mike Cole

    #RemoteLife

    by Mike Cole
    In this talk, Mike will present several tips and techniques that he has learned over several years working remotely. We’ll cover what you can do when you have issues staying motivated because you are isolated physically from the rest of your team. We’ll review a few different kind of communication breakdowns and what you can do if you feel like a second rate employee of the company. We’ll also look at ways to foster a good remote relationship with your manager and co-workers. Working remotely is culturally becoming a viable option more and more as time passes, increasing by 140% since 2005. There are great opportunities available to people that may feel stuck or restricted geographically. This presentation is aimed at giving you a headstart or boost in your remote life.
  • Evan Hennis

    Reinforcement Learning: The Evolution of the Q-Learner

    by Evan Hennis
    I will present my research project on Reinforcement Learning. It starts with the original Q-Learner and evolves to the Double Deep Q-Network used by Google Deep Mind to beat a large number of Atari games
  • Mark Kalal

    Machine Learning 101

    by Mark Kalal
    What do self-driving cars, email spam filters, and online recommendation offers all have in common? They all involve machine learning! It's at the forefront of analyzing and making decisions based on large amounts of data, and in this presentation, we'll introduce the basics of machine learning, talk about common applications, and walkthrough some examples and algorithms. Demos and code examples will be in Java (using Weka), and C# (using ML.Net).
  • Elijah Kulesa

    An Intro to Mixed Reality with the Hololens

    by Elijah Kulesa
    Let your apps respond to reality with the Hololens. In this talk, we'll see Mixed Reality in action - and learn to do the same! We'll create a project in Unity and learn how to put our own models into 3D space. Then we'll visualize and map the real-world. With that, our models can respond and interact with our world. Once that's done, we'll go the other way and use the built-in gesture system to control our models. Come learn to let your apps live in the real-world!