Title: Functional Programming for the Blue Team

Instructor: eigentourist

Abstract: This is an introduction to functional programming concepts. It's not an intro to a language or a tool, but to a set of ideas. It's a powerful one for any hacker to learn, but especially for blue teamers who find themselves writing or maintaining increasingly complex code. Practicing it can help defenders write safer code that scales well.

Why speak particularly toward blue team?

Defenders are often unsung heros today. Blue teamers, like system admins, may find themselves writing code to glue things together, fill in the gaps between existing tools, or make up for lack of tools altogether. If your codebase evolves into a critical system, the work of managing its rising complexity can become a serious challenge. Defense is hard, and studying the esoterics of software architecture can be a rare luxury (or an exercise in frustration, depending on your situation.) This workshop aims to hand you the distilled, demystified truth, sans the cryptic terminology. We will collectively build some code that illustrates the philosophy of the functional paradigm, and has a good chance of being useful in your work.

Why functional programming?

This is a paradigm from the days of Lisp and the original generation of MIT hackers. After decades of obscurity, it is moving into the mainstream because it answers two serious problems particularly well: rising code complexity, and the need to support parallelism. Any parts of it that you take away from this workshop are likely to improve your quality of life as a software engineer.

For this workshop, we will choose two programming languages to work with: one for comfort, and one for stretching. Python will be the comfort language, because of its widespread use in many fields. Haskell will be the stretch language, and no one is expected to try it if they're not comfortable. What we want is for you to get a sense of how the functional approach looks, not just in a mainstream language like Python, but also in a language built especially with the functional style in mind.

Level: Intermediate

Pre-Requisites: Some CS fundamentals are helpful, but anyone who has written code as part of their job should be able to walk away with something of value. We won't be using the arcane vocabulary associated with this field, except in the tiniest of amounts, until we begin to talk theory at the end. We don't do theory until everyone has had experience of success writing code based on the concepts.

Required Materials:- A laptop that can last A good three hours on battery under light/medium workload (or else the good fortune to sit near A power outlet.)

- Your operating system of choice with Your preferred text editor ready to go