If you've decided to use Scala, and want to speed up the time it takes to become proficient and productive, then the Simply Scala Fundamentals Retreat is for you.This course will save you time in your transition to Scala. We will take you step-by-step through the most important aspects of the Scala language and API, as well as the important ideas behind them. At each step, you'll gain a deeper understanding of Scala's design and how Scala can help you accomplish a wide range of practical programming tasks. After taking this course you'll be able to code in Scala with confidence, and enjoy the productivity boost that Scala promises to those who master it.
Scala is an unopinionated language: It offers a wide array of choices, from familiar object-oriented features to sophisticated functional programming tools. While these choices offer great freedom, they can be bewildering. The Effective Scala Retreat will help you learn the most effective ways to apply Scala to real-world programming problems.
Bill Venners and Frank Sommers will present concise guidelines and encourage debate. Following each presentation you will have the opportunity to practice applying the guidelines to concrete programming problems. Each exercise session will be followed by show and tell and more discussion.
San Damiano is near hiking trails in the Las Trampas open space preserve in the east bay area. After lunch each day we will organize a hike. We want physical exercise and awesome views to stimulate interesting conversations and sharing of ideas that add to the educational experience of the retreat.
High Performance from Understanding the Low Levels
A deep dive into modern X86 hardware. We look at caches and caching behavior, data-races (and how they show up on an X86), Specter and Meltdown, the Java Memory Model, CPU performance details (e.g. wide and O-O-O issue, hit-under-miss caches, branch prediction) and memory bandwidth - and relate them to writing performant code. We then tear down a simple Big Data analytics processing loop, make some small changes and get a 5x speedup.The (Java) Virtual Machine
A look at Virtual Machines far and wide, with a deep dive into the Java Virtual Machine. We'll cover JIT'ing and GC'ing; bytecode cost models & class loading; deoptimization (and re-opt); safepoints; virtual calls & dynamic dispatch; threading and memory models; fast locks & faster locks; OS support (priorities, files, mmap, time) and much much more. Parallel and Distributed Computing and Debugging
Parallel computing is everywhere and distributed computing is not far behind. Both bring serious challenges, including data-races, consistency and timing, "Heisen-Bugs", testing, parallel-design thinking, performance, profiling and bottlenecks. Note this session is not about micro-services and deployment, but about coding and getting correctness in a parallel & distributed environment.
Cliff Clickis a legend in the world of compilers, distributed systems, a software engineer's engineer. He is known as a life-long developer, founder, and brilliant speaker. Now for the first time, he delivers a full-day workshop that can teach every developer something new, and most importantly, share the insights of a leading practitioner who built some of the things we use daily.
This training will be comprised of three 2-hour workshops, with breakfast, lunch, and coffee breaks included.
Functional Scala is a comprehensive, 5 day course that may be attended locally (in San Francisco / Sillicon Valley) or remotely (California time zone), and either all five days together, or only select days. The course rigorously instructs Scala developers on the most complex, confusing aspects of Scala, and shows them how to use the features of the Scala programming language to write rock-solid, bulletproof business applications that are easy to test, easy to reason about, and easy to change safely in arbitrary directions required by the business.
If you know Scala, but are confused by concepts and techniques in functional programming, or perplexed by advanced features of ScalaвЂ™s type system, then this is the course for you. You will learn how functional programming enables Scala developers to build highly-scalable, concurrent, parallel, asynchronous, testable, and modular programs. You will discover how to program passionately and fearlessly, with confidence, and build and test scalable programs that are correct-by-construction.