Cameron Presley

Cameron Presley

Knowledge Sharer and Problem Solver

Charlotte, North Carolina, United States

Cameron Presley is a Consultant for Lean TECHniques (https://leantechniques.com/), a speaker, and a Microsoft MVP in Developer Technologies.

Based out of Charlotte, North Carolina, Cameron has ten years of experience working with start-ups and large enterprise both publicly and privately held to architect solutions, implement solutions, and training developers to be better today than what they were yesterday!

In his spare time, Cameron can be found hanging out with his family, playing board games, jamming on the bass guitar, and reading books.


Area of Expertise

  • Information & Communications Technology


  • Software Development
  • .net
  • Software Practices
  • Code Reviews
  • Functional Programming

How Functional Programming Made Me a Better Developer

With the rise in popularity recently, functional programming has become “The Next Big Thing”. As of today, there are tons of frameworks and tools that can be used for front-end, back-end, desktop, and mobile development. With that being said, the majority of us are still using object-oriented languages for our day jobs and don’t need to learn functional programming, right?

In this talk, I’ll walk you through my experiences learning functional programming over the last year, how my style of programming has changed, and how I now think about programming with regards to both functional and object-oriented paradigms.

Level up on Functional Programming by rebuilding LINQ

When taking your first steps into functional programming, you'll quickly run into blog posts talking about how to simplify complex loops by using the trinity of list operations: map, filter, and reduce. But what are these methods actually doing under the hood to help simplify your code?

If you're familiar with the .NET landscape, then you already have experience with an implementation of the trinity within LINQ (Language Integrated Query). However, what if I told you that by learning how LINQ implements map (Select), filter (Where), and reduce (Aggregate), you actually know how other languages implement the same constructs?

Intended for C# developers who have some experience with LINQ and an interest in learning functional programming, by the end of this session, you will have learned how to work with the Func type, generics, and extension methods!

A projector is all that is required from a technical perspective. This session is best done in a 50+ minute slot.

Stay on Track - Railway Oriented Programming for Smooth Error Handling

When starting to learn functional programming, one typically starts off with a simple problem or kata where error conditions can be ignored or hand-waved away which allows one to focus on the business logic. Eventually, however, you will need to expand your knowledge to deal with the absence of values and error conditions.

Unlike most Object-Oriented languages which leverage nulls or exceptions, functional languages tend to encode these error conditions into types like Maybe and Either which the compiler then can enforce that the developer handles the error. However, how does one combine these types to accomplish a flow of logic in your application?

In this session, I'll show you what these two different types are, how to refactor your code to leverage these types and apply a technique known as Railway Oriented Programming to handle your error conditions in a more concise manner.

Intended for those new to functional programming, by the end of this session, you will know when to use Maybe and Either in your codebase, how to refactor existing code to leverage these types, and how to combine these concepts into a pipeline leveraging Railway Oriented Programming. Examples will be in .NET and TypeScript but are applicable to other languages.

A projector is all that's needed to present this topic. It's best done with a 50+ minute time slot, but if the audience is already familiar with Maybe and Either, then it can be easily converted to a 30-minute presentation.

Learning Functional Programming Through Construction: First Principles

In the past five years, functional programming has increased dramatically in popularity which has lead to an explosion of resources in learning these concepts. But, between languages (Haskell, Elm, PureScript, F#), libraries (Ramda, fp-ts), and concepts (Monads, Monoids, Functors), it can be overwhelming in determining where to start and how to begin.

In this talk, I'm going to show you three fundamental concepts of functional programming: pure functions, immutability, and composition by not only explanation but we will walk through building these concepts into your code and applications. As we explore each concept, I'll show you the advantages of following these principles, how they will improve your development experience, and how they will set the stage for more advanced ideas.

Intended for those who have experience with TypeScript or C#, by the end of this presentation, you will understand how pure functions lead to easier to test code, how immutability makes debugging easier, and how the power of compositions allows us to build bigger applications by combining smaller applications.

The Engineer's Playbook: Starting a New Role

Starting a new role is never easy. There are a ton of ideas, new processes, people, and new technology to pick up. In addition, you may have also changed problem domains, which means you're having to learn about the problem we're trying to solve. That's a lot to take in, "drinking from the firehose", if you will. That being said, how do we control the flow? How do we optimize our learning to be effective in the short term and not need six months of ramp-up time?

In this session, I'm going to walk you through my playbook of starting a new role by exploring the four pillars of knowledge (product, people, process, and technology) and how they relate to each other. From there, we'll explore each of the pillars more in-depth, looking at what questions are urgent and important and which ones are just important. Finally, we'll wrap up on exploring timelines of what information you need to know by the end of your first week, your first sprint, first month, and first quarter.

Intended for engineers of all experience levels, you will have an example playbook that you can use when you start a new role by the end of this session.

Taking a Gamble With Functional Domain Modeling

Over the past few years, Functional Programming has entered the mainstream when it comes to libraries and frameworks for various kinds of technologies and there are plenty of tutorials and resources to learn the basics.

With that being said, when it comes to building something non-trivial, there's a gap between what tutorials cover and real-world situations. For example, how do we model a system that makes illegal states unrepresentable? How do we handle operations that can fail? How do we combine business rules with application rules?

In this talk, I'm going to show you how to tackle these concerns as we model the game of Blackjack. By doubling down on concepts like algebraic data types, Options, and Results, you'll learn how to build applications that work in the real world.

How To Have Code Reviews Developers Actually Want

This phrase can stir up a lot of emotions for people. For some, it’s aggravation because they’re a waste of time, for others, it’s stressful because it feels like you’re getting personally attacked. However, for some, it’s a great learning experience that leads to the team improving. Do you want to be in the latter group? Then this talk is for you!

In this presentation, I’ll first show you the benefits of code review and the business case for why they should happen. Next, I’ll show some of the most common mistakes that teams make during the review process and how to mitigate them. After talking about the bad, we’ll talk about what to look for in your code review process. Finally, I’ll wrap things up by showing the game plan I use for code reviews.

Code PaLOUsa 2022 Sessionize Event

August 2022 Louisville, Kentucky, United States

Beer City Code 2022 Sessionize Event

August 2022 Grand Rapids, Michigan, United States

CodeStock 2022 Sessionize Event

April 2022 Knoxville, Tennessee, United States

Tech Con '21 Sessionize Event

October 2021

Northern VA CodeCamp Fall 2021 Sessionize Event

October 2021

Scenic City Summit 2021 Sessionize Event

September 2021

Code PaLOUsa 2021 Sessionize Event

August 2021

dev up Conference 2019 Sessionize Event

October 2019 St. Louis, Missouri, United States

Music City Tech 2019 Sessionize Event

September 2019 Nashville, Tennessee, United States

Code PaLOUsa 2019 Sessionize Event

August 2019 Louisville, Kentucky, United States

KCDC 2019 Sessionize Event

July 2019 Kansas City, Missouri, United States

Beer City Code 2019 Sessionize Event

May 2019 Grand Rapids, Michigan, United States

Northern VA CodeCamp Spring 2019 Sessionize Event

May 2019 Reston, Virginia, United States

Cameron Presley

Knowledge Sharer and Problem Solver

Charlotte, North Carolina, United States

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top