Indy.Code() Sessions

A Technical Deep Dive Into Containers

Containers have become an invaluable tool in the developer's toolbox, but how do they work exactly?

A lot of times the dicussion ends at "They're more lightweight than virtual machines" - but there is a lot more going on under the hood. There is decades of history and an amalgamation of different tools that leads to the modern day container.

This talk will explain and showcase the differences between various container technologies, such as Docker, containerd, and runc to name a few. Each technology will be explored in depth to help attendees gain a strong working knowledge of how containers work behind the scenes.

Speaker

Paul Steele

Paul Steele

Senior Software Engineer, SEP

AI For Highway Maintenance

Software touches every aspect of our lives, and no where is that clearer than in the automotive industry. With the recent surge to AI for self driving cars, we lose sight of adaptive cruise control, anti-lock breaks, and in-cab media centers that all require software to operate.

However, did you realize that software plays a fundamental role in the streets you drive on? This talk is a post-mortem of a prototype system we built for optimizing the use of municipal funds for highway maintenance in the state of Indiana. While the optimizer is a central piece of the system, it wasn’t the whole system, or even the most challenging problem!

In this talk, we’ll cover:

  • The general problem of highway maintenance
  • How users acceptance and understanding may be a more important metric than pure cost optimization
  • How to build AI in an agile manner
  • How AI was merely a part of a much larger system
  • What changes when your software has to change hearts and minds as well as accomplish a technical task?

I’m hoping the audience takes away:

  • Sometimes the best technical solution isn’t the best overall solution
  • Even when AI is required for a product, it is never the whole product
  • No piece of software, no matter how complex, is not approachable with agile techniques

Speaker

Jordan Thayer

Jordan Thayer

AI Practice Lead, SEP

An Introduction to Progressive Web Apps

The concepts that founded Progressive Web Apps date back as early as the year 2000. But, much like NFC technology, PWAs could not succeed in the market until the major players decided to hop on board. This presentation will walk through:

  1. An overview of what a PWA is (and is not)

  2. The history of PWAs from 2000-2023 highlighting major movements & milestones

  3. Why PWAs are awesome: PWAs are web apps that can:

    • “Win the Home Page” No need to find and download from an App Store Personalize campaigns to achieve multiple opportunities to get that “Win”

    • PWAs can leverage mobile OS system calls From places you couldn’t before

    • PWAs are one codebase (web, iOS, Android) and (almost) as fast and responsive as native apps

The vision above sounds wonderful, but there ARE limitations. We’ll leave the audience with REALISTIC expectations on how they can apply PWA tech in their products.

Speaker

Tiffany Trusty

Tiffany Trusty

Director, Product Management, Tech@Lilly, Eli Lilly

Answering the Question, "When will it be done?" Using Probabilistic Forecasting

"When will it be done?" How often have you been asked that question? It's a question that strikes fear or frustation in most people. It often results in someone throwing up their hands in frustration or tossing out a wild guess. Surely there's a better way?

Forget story points, t-shirt sizing, historical averages. Have you considered building a simple forecasting model—one that provides a range of possible outcomes with confidence levels?

Though often the punch line of a joke, weather forecasting—specifically hurricane forecasting—has gotten surprisingly good over the past few decades.  This increased accuracy is mainly due to the application of techniques like Monte Carlo simulation and continuous forecasting. 

In this talk, we will explore those same practices and discuss how you might leverage them to answer the question “When Will It Be Done?”.  We will walk through some examples and explain how to get up and running quickly.

Answering the question "When will it be done?" will no longer create frustation or fear like it once did.

Speaker

Chris Shinkle

Chris Shinkle

Director of Innovation, SEP

ARM, Bicep, knees and toes! Infrastructure as code for beginners.

Infrastructure as code allows you to deploy consistent and stable environments in an automated fashion eliminating the need for manual configuration. Tools like ARM, Bicep and Terraform are used to build templates that make these deployments possible, but the syntax of some of them can make it challenging to get started. In this talk, we will explore the differences between these tools and how you can deploy resources using each of them. By the end of this talk you’ll be ready to create your own templates and deploy your resources to the cloud.

Speaker

Samuel Gomez

Samuel Gomez

Technical Lead, Geneca

AWS CDK​ - Introduction & Beyond

The AWS CDK is a development framework that allows you to define your cloud application resources and infrastructure using programming languages instead of configuration files. By defining your resources as code you can benefit from your normal development tooling and more easily define you application.

This talk provides an introduction to Infrastructure as Code, discusses key AWS CDK concepts and usage, provides tips for AWS CDK usage, and an overview of AWS CDK Best Practices.

Speaker

Jason Butz

Jason Butz

Solution Architect & Practice Lead, DMI

Blending Product Thinking with Architecture

Too much design up front and you are bumping into the design all of the time (and losing time). Not enough design and your system can crumble in reality. How do you blend architecture so you have the right decisions at the right time, and give them enough due dilligence? How do you embrace cloud and microservices and not risk getting into different failure scenarios or overly complicated maintenance and ripple effects?

In this session we will walk through visualizations that help teams blend product thinking with architecture. Along the way, we will look at microservices and domain modeling as well as chaos engineering and fault tolerance - blending all of these into a context that is consumable by all and gives the right emphasis at the right time.

Leave this session with simple visualizations and approaches that you can apply immediately to start blending product with architecture, especially if you are looking to run in a cloud world.

Speaker

Joel Tosi

Joel Tosi

Co-Founder, Hands-On Coach, Dojo & Co

Business and Legal Aspects of IT Consulting

IT consulting covers a wide variety of job descriptions, from full time consultants to independent contractors. We will discuss what you need to join an already established IT consulting business, become a free-lance contractor, or to start your own IT business. Regardless of your current career goals, this presentation will be beneficial to anyone working in IT.

Speaker

Sam Nasr

Sam Nasr

Sr. Software Engineer, NIS Technologies

Cache Rules Everything Around Me

Caching can bring speed to the slow systems in your enterprise. In this session, we'll explore how to avoid expensive computations and reduce database (or other systems) load with caching. Considerations include when to cache (cache policy), how to cache, and when/how to evict. This session will also explore and discuss problems and gotchas like cache sizing, eviction mistakes, and where your cache should live. Finally, we'll look at how caching is implemented in the "memory-first" Couchbase architecture.

Speaker

Matthew Groves

Matthew Groves

DevRel Engineer, Couchbase

Can We Learn to Manage Uncertainty? Probably!

When we’re asked when something will be done, it’s tempting to answer the question. “It’ll be done on March 32nd” or “it’ll take 182.5 days” or “we need 15 sprints”. It doesn’t matter if that answer is the best-case, average, or worst-case scenario.

The answer is fundamentally wrong because using a single value hides the fact that what we really meant was a distribution of possible dates, durations, or outcomes. The exact value is uncertain. Development may be faster or slower than we thought. What if the tech lead wins the lottery and retires? What if a global pandemic forces us to change the way we work?

While we can’t control any of those factors, we can be mindful of their existence and communicate more clearly. In this talk we will introduce “bet” language, which makes uncertainty and luck an explicit part of the conversation. This mindset helps us accurately assess risks, pick the right risks to embrace, and avoid analysis paralysis. It also helps us learn in an uncertain world, where even if we make good decisions, we may experience bad outcomes (and vice versa!).

Speaker

Robert Herbig

Robert Herbig

Lead Software Engineer, SEP

Containerize your development database with Docker

In the beginning stages of a project and sometimes longer, it is nice to have a local copy of the database. This copy can be tweaked, updated, deleted and reloaded on a moment's notice without affecting the workflow of any other developers. In this session we will focus on solving this problem with Docker and using the MSSQL container provided by Microsoft as our base. The session will also go over using Docker Compose, creating shell scripts and sql scripts to create and load the database and a general workflow that could be followed.

Speaker

Victor Pudelski

Victor Pudelski

V.P. of Development, Zubisoft, LLC

Continual Product Discovery with StoryMapping, OKRs, and more

Description

Whether you are a product owner, manager, analyst, engineer, or tester, you build products. And building products is challenging - not only getting the product right but also making sure the team working on the product understands the nuances of your product. How do you go about designing, delivering, and adapting your product to deliver better solutions while incorporating product learnings as you go?

In this 1-day hands-on workshop, you will learn and use product discovery tools used to help teams discover and continuously learn about their product. You will learn:

Lean Product Discovery with product framing, design targets, and storymapping
Product validation with experience tests
Driving product language within and across teams
Blending discovery with delivery to drive continuous product learning

You will use:

Product framing, design targets, and OKRs to drive product alignment and meaning
Storymapping and user journeys to explore options, dependencies, and validate decisions
Annotations to drive product language within and across teams
Leveraging continual product discovery as part of product development

All exercises are hands on and done in small groups Who should attend:

Product Owners / Managers looking to understand how to blend product thinking into delivery within and across teams
Managers, analysts, designers, and team leads challenged with getting the 'requirements' right
Engineers tired of not having a voice in the process

Whether you are new to product discovery and lean or are looking to hone your skills, this class will give you hands on experience applying these techniques in real world scenarios. The course is designed for anyone working on building or leading teams building products, within or outside of software.

Speaker

Joel Tosi

Joel Tosi

Co-Founder, Hands-On Coach, Dojo & Co

Creative Problem Solving

You're a developer. Solving problems is a big part of what you do. But how can you learn to think more clearly and more creatively about the problems you are solving? In this session, you will learn about the cognitive science of creative thinking. You will also learn some practical things you can do to solve problems individually or as a team.

Speaker

Eric Potter

Eric Potter

Director of Technical Education, Sweetwater

Cypress or the end of laborious end-to-end testing

Cypress is a solution that makes setting up, writing, running and debugging end-to-end tests easy.

In this workshop, we're going to demonstrate how Cypress works, take a look at its features, and write a couple of tests as well!

Speaker

Alain Chautard

Alain Chautard

Angular Consultant, Angular Training

Decoding: The Art of Reading Other People's Code

One of the hardest parts of the job is understanding code you didn't write - and code you wrote so long ago you can't remember what you meant! In this sesson, we'll discuss a systematic approach to figuring out what strange code means, even when there's no documentation and the original author is long gone. Attendees will leave with more confidence in their ability to navigate and understand an unfamiliar codebase.

Speaker

Jacqui Peterschmidt

Jacqui Peterschmidt

Senior Software Engineer, Vendr

Deep Dive into Product Ownership

The title of Product Owner means a lot of different things to different people. In this presentation we'll break down the high level objectives across Product Ownership, the different levels of Product Ownership and how to be an effective and successful Product Owner with software products. We'll walk through real examples of both failed and successful software products.

Speaker

Jeanine Brosch

Jeanine Brosch

United States, Eli Lilly and Company

Effective Crisis Management

Your system is having a major problem. Stakeholders are calling you in a panic. Developers and technical support agents are reporting metrics and analyses. How do you calm everyone down while making progress towards a solution?

I have been a developer and now manage the support team for a large software application. I am on the front lines, trying to prevent and manage crises. I’ll share my methods for preventing and managing a crisis.

What actually constitutes a crisis? How do you plan for a crisis and create a crisis management plan? How do you coordinate everyone involved?

We’ll walk through these topics so that you feel more prepared to handle whatever your application may throw at you.

Speaker

Natalie Guthrie

Natalie Guthrie

Manager of Web Development, Herff Jones

Harnessing Innovation to Transform Organizations

Indianapolis is excited to welcome Gokul Radhakrishnan to our beloved Indy tech community! It’s not every day that we attract the former Head of Engineering & Operations for the Apple Online Store to come live in corn country?!

This keynote session will be a Q&A session with Gokul as he walks us through: • his impressive 20+ year career history in software (including his decade at Apple) • how he came to Indianapolis • and how even risk-averse companies can harness innovation

The questions will be served up by Mark Collins, the Executive Director of Software Product Engineering at Eli Lilly. Mark’s perspective is unique in itself as he’s been here for the full history of the Tech@Lilly transformation. Mark Collins LinkedIn: https://www.linkedin.com/in/markcollins8/ Gokul Radhakrishnan LinkedIn: https://www.linkedin.com/in/gokulrad/

Speaker

Gokul Radhakrishnan

Gokul Radhakrishnan

Senior VP, Software Product Engineering and Information Officer, Eli Lilly

Intro to MongoDB

Relational databases have long been the defacto standard for data management. In recent years, a number of competing technologies have started gaining favor. Among these technologies lies MongoDB, a robust document database designed to naturally fit into a variety of development environments. By storing data as documents that reflect the structures as they exist within our applications, MongoDB changes how we approach data storage and retrieval.

Let's explore data management with MongoDB. We'll discuss how collections and the document model require different thought processes than more traditional relational structures. We'll then discuss managing data through CRUD operations and the aggregation pipeline. We'll also look at some performance tuning considerations and even some common schema patterns. At the end of our discussion you should have a solid understanding of some core MongoDB concepts, how MongoDB could fit into your environment, and a foundation for further study.

Speaker

Dave Fancher

Dave Fancher

Lead Software Engineer, Vibenomics

Introducing Juvet: Building Bots in Elixir

There is another massive shift happening with how we interact with companies through software. Users feel comfortable naturally talking with their applications through chat bots. Chat is the next generation of the user interface.

Companies like Slack, Facebook, WhatsApp, and WeChat have some of the most popular apps in the world and they are all betting on a messaging interface.

Elixir is the perfect language and ecosystem for building bots and for conversational interfaces. In this session, we will see how we can build scalable, realtime web applications (or “bots”) using a new library Juvet and the Slack API. We will see what a good bot architecture looks like and how we can integrate with existing artificial intelligence services to make our bots smarter.

Speaker

Jamie Wright

Jamie Wright

I am the one who knocks, Brilliant Fantastic

Leadership Journey: From Individual Contributor to Leader

You’ve spent years working on your technical skills and can write code with the best of them. Then, one day, a leadership position opens up on your team, and you start thinking about it. Should I or shouldn’t I? What if I hate it? What if I love it? What if I'm not that good at it? In this interactive session, we’ll explore “why leadership,” answer some hard questions, and talk about one developer’s path from individual contributor to leader.

Speaker

Michael Eaton

Michael Eaton

Principal Consultant, Improving

Learning Go: From Hello World to Web Service

Have you heard about the power of the Go language and wanted to try it out? Are you interested in seeing how you can use Go to build performant web services quickly?

In this workshop, we will cover the fundamentals of the Go language. We will cover the tools you need to build useful applications. You will get hands-on experience writing code and building apps in Go in the lab exercises.

You will start with Hello World and finish by building your first web service.

Speaker

Eric Potter

Eric Potter

Director of Technical Education, Sweetwater

Maximize Developer Productivity with Developer Productivity Engineering

In this workshop offered to you by Gradle, we will be discussing “Developer Productivity Engineering” (DPE).

If you are not already familiar with DPE, it is a new software development discipline that uses data analytics and acceleration technologies to speed up the critical software development processes—from builds to testing to CI—and make them more efficient.

In this hands-on training with labs we will describe DPE processes and best practices in action—using examples from Java projects that rely on Maven or Gradle build tools.

At a high level you will learn how to:

Leverage build and test acceleration technologies like build caching and distributed testing to instantly speed up feedback cycles as much as 90%. Cut debugging and troubleshooting time in half using data analytics to rapidly identify incident root causes and better manage avoidable failures like flaky tests. Continuously improve performance and guard against regressions through metric, KPI and trend observability. More specifically, this training will cover how to:

Accelerate debugging and root cause analysis leveraging “build scans” Achieve significant reductions in local and remote build times using “build caches” Avoid performance regressions and continuously improve toolchain reliability with performance management “analytics” Detect, prioritize and eliminate the most damaging flaky tests utilizing a “test dashboard” * Integrate with Git/Jenkins The end-result of pursuing DPE excellence will be a transformative and highly satisfying developer experience.

Speaker

Baruch Sadogursky

Baruch Sadogursky

Lead Developer Advocacte, Gradle, Inc

Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP

YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users.

In this session we'll explore using YARP, and how it uses the "Strangle Fig Pattern" to allow you to incrementally migrate your applications to modern technologies. We'll look at the tooling that is available to help you with the migration, and see some shims that make it easier to integrate cross-cutting concerns between your legacy and modern application, such as session storage and authentication.

Speaker

Jonathan "J." Tower

Jonathan "J." Tower

Partner & Principal Consultant, Trailhead Technology Partners

Node.js Multithreading

Node.js's sweet spot has traditionally been with I/O-intensive processes. It's event-driven architecture allows I/O operations to run concurrently while their associated callbacks are executed synchronously in the event loop. This, however, comes with a dark side in that CPU-bound operations are likely to block the event loop thus delaying when those callbacks are invoked. Fortunately, Node.js ships with several modules that allow us to offload those blocking CPU-bound operations from the main event loop so it's free to handle other tasks while the CPU-bound operations go about their business. Most notably we'll explore some ways in which the childprocess and workerthreads modules can keep your Node.js application performant while still handling those CPU-intensive operations.

Speaker

Dave Fancher

Dave Fancher

Lead Software Engineer, Vibenomics

Off the Shelf AI

Hearing about artificial intelligence is unavoidable these days if you’re watching the news or staying abreast of the technical sector. We frequently hear about the power of AI-enabled tools, and are shown soundbytes of experts extolling the virtues of their approach.

While these stories inform and entertain, they also create the perception that AI i s extremely difficult and exclusively the realm of experts, which simply isn’t true! These days we do not need to be an AI expert to reap the benefits of the research community. Off-the-shelf open source tools exist which are powerful enough to solve many industrial problems. In this talk we will map business problems to tools and show how to translate a problem domain into the expected input of the tool. Using these tools will help us identify development opportunities that we might have otherwise missed and save time by not re-implementing common solving techniques.

In this talk, we’ll cover: * Three common problems that can be solved with AI * Routing vehicles around a map * Solving sudoku puzzles * Building controllers for autonomous vehicles * Three off-the-shelf tools that can solve these problems * Fastdownward * Minisat * OpenAI Gym * The formalisms that allow us to translate the real world problems into ones these solvers recognize * Heuristic search * Boolean Algebra * Markov Decision Processes

Speaker

Jordan Thayer

Jordan Thayer

AI Practice Lead, SEP

Platform Engineering at Hudl

Software platforms are structures built to allow multiple products to leverage a shared technical infrastructure. In Software Engineering when examining our systems we often talk about performance metrics, fault tolerance, testing, scalability, availability, tooling, etc. In this talk I'll posit that we'd be well served to include feature velocity as a top concern when evaluating our systems. Platform engineering is building systems that enable high feature velocity and that adapt more easily to the frequent changes in product needs.

At Hudl we use AWS to ingest and encode thousands of hours of sports video every day. I'll use Hudl's video ingest and publish pipeline as a case study on applying platform engineering principals to shared application infrastructure that supports multiple rapidly evolving products at the same time with the same code.

Speaker

Andy Pryor

Andy Pryor

Sr. Engineering Director, Hudl

Policy for Use-case Awareness

Summary

All software has sharp edges. This talk will showcase how we use rego and OPA to find users at our software edges and guide them back to happy paths.

Overview

My team of 3 SREs and 3 developers supports 25000+ integration points with external counterparties. While we delegate as much responsibility as we can to individual business units, we are ultimately responsible for the flows. We keep our ticket count low by empowering our users and providing tools. One new tool we're piloting uses Rego and OPA to find integrations that are outside the expectations of the expectations of our business units. Initial runs within a particular BU identified 50% of their integrations didn't conform to their standards.

My aim for this talk is to showcase the use of technology to enhance the function of the organizational structure. Some teams are highly regimented while others very flexible, which prevents centralized rules. Providing a tool allows each BU to implement their own policy and how strictly it is enforced. These goals are at the heart of marrying development and operations. It also shows an example of policy-as-code outside the normal use-cases of admissions controllers and authorization.

Progressive state management with Angular

You’ve probably heard about NgRx, Redux, and other options for state management with Angular. Perhaps you considered those solutions but steered away from them because of the extra complexity and volume of code introduced by NgRx and Redux. In this talk, Alain is going to explain the basics of how to manage your application state with Angular, as well as cover a more progressive approach to state management. We will be talking about RxJs, Subjects, Observable Stores, and get into Ngrx Store as the ultimate step in our state management journey.

Speaker

Alain Chautard

Alain Chautard

Angular Consultant, Angular Training

Push Your Way Into Tech

How grit, determination, and pure luck helped me land my first tech position. As a black woman with nerurodivergence I used social media (LinkedIn), networking, creative branding to land my first position with Eli Lilly. I will discuss what I was going before I started in tech, my journey through tech, take aways from starting in techm and where I see my career going from here.

Speaker

Andra Winters

Andra Winters

Automation Strategist Operation Technologist Apprentice, Eli Lilly

Secrets Management and Why You Should Care

Secrets management is one of the cornerstones of modern application security, but things can go very wrong quite easily. Just look at recent breaches at major companies, where credentials hardcoded in source code or scripts caused major security incidents.

In this talk, we will present ways to properly manage secrets from development to production. We will show how to protect them in CI/CD processes and Kubernetes RBAC and how to limit access to them to processes that need them. We'll cover how to store secrets centrally to allow security teams to manage and audit them in one place and avoid "security islands", while still allowing applications to have access to them right where they're needed, even across multiple cloud providers and ecosystems. We’ll compare different secrets management strategies and show some approaches to solving the “secret zero” dilemma.

At the end we’ll demo an innovative way to keep secrets out of your application completely, using the “Secretless” paradigm which allows applications to be completely unaware of secrets, thereby simplifying development and decreasing your attack surface at the same time.

Speaker

Shlomo Heigh

Shlomo Heigh

Senior Software Engineer, CyberArk

Security and Productivity - Pick Two with Reproducible builds

Reproducible builds are crucial for ensuring software integrity but can be challenging to achieve. On the other hand, build caches provide a way to speed up builds by reusing previously-built artifacts and dependencies.

This talk will explore how reproducible builds and build caches can work together to create a more efficient, secure, and enjoyable development workflow. We will discuss the benefits and challenges of reproducible builds and build caches and provide practical tips for implementation.

HINT: If a build is reproducible, it's also cacheable!

Attendees will come away with a solid understanding of reproducible builds and build caches and how to implement them to achieve faster, more reliable, and more secure software builds.

Speaker

Brian Demers

Brian Demers

Developer Advocate, Gradle

Stronger Than Fear - Mental Health in the Developer Community

In this talk, Ed Finkler, founder of Open Sourcing Mental Illness (OSMI) and 25 year web dev vet, will share his personal journey as a successful developer with mental health struggles and discuss the impact of mental health issues in the developer community. He will also explore practical steps that individuals and organizations can take to prioritize mental health and support those affected. By attending this talk, participants will gain a deeper understanding of the challenges faced by developers with mental health issues and learn practical ways to support themselves and others in the tech community.

Talk Outline:

Introduction
    Ed's personal journey as a successful developer with mental health struggles
    The reality behind the façade of success

Mental Health Statistics
    Global prevalence and impact
    Increase in anxiety and depressive disorders
    Economic cost
    Treatment options and accessibility

Mental Health in the Tech Industry
    Limited research available
    OSMI's contributions
    Mental Health in Tech survey results
    Personal anecdotes from developers

What Can We Do as Individuals?
    Prioritizing personal health
    Refusing to sacrifice well-being for work
    Learning how to help oneself and support others
    Mental Health First Aid training
    Knowing your rights with OSMI Handbooks

What Can Organizations Do?
    Understanding the influence on employee health
    Supporting employees with Mental Health First Aid
    Knowing organizational responsibilities with OSMI Handbooks
    Actively communicating the importance of mental health and well-being

Resources
    Mental Health First Aid: mentalhealthfirstaid.org
    OSMI Handbooks: osmihelp.org/resources

Conclusion and Q&A
    Acknowledging the importance of mental health in the developer community
    The role of individuals and organizations in promoting mental well-being
    Contact information for Ed Finkler and OSMI

Speaker

Edward Finkler

Edward Finkler

US, Open Sourcing Mental Illness

STUCKness: Zen and the Art of Software Development

You're losing time. You're incompetent. You don't know what you're doing.

You should be ashamed of yourself.

Tell me you've never felt this way before.

Let's get real about how we get STUCK. Let's talk about getting unSTUCK. Let's talk about what STUCKness is, what Zen is not, and how you and your team can maybe stop thrashing between Imposter Syndrome and the Dunning-Kruger effect long enough to ship some kickass code.

Speaker

Jon Fazzaro

Jon Fazzaro

Senior Consultant, Industrial Logic

Testable Vanilla Javascript

When a small feature is being developed, one of the first things to get ignored are tests. Developers from different backgrounds may have occasion to write Javascript, but wish to use the same testable structures they are used to. Dependency Injection is a structure that allows code to be extremely testable by allowing something outside of a function or object to pass in dependencies. While Javascript has its own conventions regarding code style, there are few best practices for using Dependency Injection (DI) or Inversion of Control (IOC) containers outside of a front end framework. Even worse, most existing IOC container solutions for JS require significant refactoring of legacy code. The good news is that Javascript code can easily be written or refactored minimally so it is testable without requiring an advanced framework. With the increased need for Javascript knowledge, developers focusing on server or desktop platforms are beginning to find themselves outside of their comfort zone: maintaining legacy JS.

I have identified 5 basic patterns for adding testability to vanilla JS code that should allow developers with backgrounds in Javascript, Angular/JS, PHP, and Java to feel at home. Each pattern is introduced, shown how to use, and shown how it is implemented under the hood. All examples are capable of running natively in legacy browsers.

Speaker

David Ragsdale

David Ragsdale

Tech Lead, Aptiv

The Toy Alchemist : Have fun, build a game, and learn Elixir

Elixir is my favorite language in the world and I want to show you why by solving a fun puzzle game.

”The Toy Robot” is an interview exercise where you build a simulation of a toy robot moving around a square tabletop through a series of move commands. You can’t let the robot fall off the board!

In the workshop, we will build this game using the Elixir language and functional programming paradigms. We are not going to jump right in but rather start with the basics of Elixir and build up from there. Get a deep head start!

If we have time, we will make the game multiplayer using processes in Elixir and put it on the web using Phoenix LiveView!

Elixir needs more alchemists.

Speaker

Jamie Wright

Jamie Wright

I am the one who knocks, Brilliant Fantastic

Threading the Needle With Ease

Title (Long Version): "Threading the Needle With Ease: Using the Understanding of Complexity, Causality, and Design Thinking to Innovate"

Agenda: - Pattern Recognition - Causation & Complexity - Design Thinking: Is this Architecture? - The Self-Threading Needle

Abstract: In this thoughtprovoking talk, we explore the intersection of complexity, causality, and design thinking as a powerful tool for innovation. We delve into the critical role pattern recognition plays in identifying casual threads that can drive creative problem-solving. By examining the intricate relationship between causation and complexity, we seek to uncover novel approaches to complex challenges in a range of domains. We then take a deep dive into design thinking and its potential as a framework for innovation in technology and software. Finally, we share a real-world application of these concepts: the idea of a self-threading needle, showcasing the transformative power of leveraging complexity, causality, and design thinking to drive innovation. Attendees will leave with a deeper understanding of the concepts and techniques that can unlock the potential for creative and innovative solutions to the most complex problems.

Speaker

Joey Davis

Joey Davis

Tech Lead Engineer / Consulting Engineer, JD North America / JD Finish Line

Treating Your Software Development Process Like a Product

Continuous learning is a critical principle in agile methodology; teams use the “inspect and adapt” principle to become high-performing and more self-organizing. We don’t exist in a silo, however, and sometimes our pain points come from client services, implementations, marketing, design, and many more. Shockingly, we cause those teams frustrations too.

Backing up to 10,000-foot view and cataloging pain points in your organization can be overwhelming. Which ones most need to be solved? What solution will resolve a particular problem? How do you build connections across functional teams and get buy-in for change?

Modern product design and user research offers a host of tools to catalog pain points in products and assess which should be tackled first. This interactive session will focus on using these techniques to examine your software development process, identify the most critical problems, explore solutions, and work on improvements.

Speaker

Valerie Hurwitz

Valerie Hurwitz

Manager of Software Development, Accutech Systems Corporation

Website Accessibility: The Why And How

The past few years have shown a shift in desires to require websites to be accessible. It is a key to equality of access and to welcome all audiences that website accessibility be considered in all development. However, many teams are unaware of what should be done, or why it is important for their audience.

In this session, we will quickly review WHY this is important, and how a website might appear different to users. After this quick review, we will dive into specific ways to validate, document, and fix your existing website to ensure that you are compliance. We will review such regulations/rules as Web Content Accessibility Guidelines (WCAG) as well as Section 508 compliance.

After this session attendees will know what tools are available to help them, as well as steps necessary to continue to monitor their sites for compliance going forward.

Speaker

Mitchel Sellers

Mitchel Sellers

CEO, IowaComputerGurus, Inc.