- Ascension from Dependency Hell December 10, 2023
-
Scala has a rapidly-changing ecosystem of interconnected libraries. This
tends to lead to dependency hell, in which a project's transitive
dependency graph contains version mismatches. Not only is this painful
to manage, but current approaches leave projects vulnerable to defects
that can be hard to catch in time.
In this post, we explore shading as a simple and robust approach to
deconflicting transitive dependencies in Scala projects.
- Single-Serving Values in Scala with
Linear Types May 21, 2021
-
In this talk, we learn about how linear types can be used in Scala
programs to prevent runtime errors caused by variable underuse or
overuse by detecting them at compile time.
- Introduction to Functional Programming April 25, 2021
-
In this workshop, we learn about the basics of functional programming in
Scala by building simple algebraic data types and implementing common
patterns from category theory.
- Microservices in Real Life
April 10, 2019
-
In this talk, we explore the implementation and evolution of a set of
microservices that have expanded and integrated over time to provide
weather information for Web clients and IoT devices.
- Functional Electromagnetism March 30, 2019
-
In this talk, we use GNU Radio to examine digital signal processing
systems, and explore how we can use our understanding of functional
programming to reason about unfamiliar systems such as software-defined
radio by looking through the lens of category theory.
- Functional JDBC with the Reader
Monad October 11, 2017
-
Working with a database means juggling connections and managing
transactions. With functional programming, we can abstract it away for
cleaner, safer, and more maintainable code.
- Functional Infrastructure May 26, 2017
-
In this workshop, you will learn to use Nix, NixOS, and NixOps as a
declarative toolbox for reliable, repeatable processes. Hands-on
exercises will teach you the basics of the Nix expression language,
which you'll use to build, test, and locally run a Haskell Web
application, deploy it to the cloud, and maintain it in production.
- Tanks a Lot May 21,
2017
-
A minimally-multiplayer experiment using WebSockets and JavaScript.
- Purifying Code with Algebra September 16, 2016
-
In this talk, we look at an approach to abstracting
IO
out
of Haskell functions by representing side effects as generalized
algebraic data types, and implementing a side-effecting top-level
interpreter for them.
- Haskeval August 11,
2016
-
A safe
runhaskell
as a service
- Literate Programming with Codedown
May 29, 2016
-
In this talk, we look at literate programming's roots, how Haskell
provides built-in support for it, and how Codedown enables literate
programming in any language.
- Applicative Validation in Scala
March 30, 2016
-
In this talk, we look at
Validation
: how to use it, why it
works, and where in category theory it comes from. We'll see how to use
the implementations provided by Scalaz and Cats, as well as how to roll
our own from scratch.
- Introduction to Monads January 22, 2016
-
This is an informal introduction to monads using Java 8.
- Scala via JavaScript August 14, 2015
-
In this talk, we'll go through some of the more compelling examples, and
see what one language might learn from the other.
- Sad Trombone July 29, 2015
-
Womp womp.
- Nix, Plus or Minus Cabal July 14, 2015
-
In this talk, we look at Haskell deveplopment with the Nix package
manager, and how to use it in addition to (and in place of) Cabal to
make tool installation a breeze, and dependency conflicts a thing of the
past.
- Types and JavaScript June 23, 2015
-
How to use types to reason about code.
- Specified Versioning June 17, 2015
-
A guide to choosing version numbers for software projects that designate
tests as specification.
- Notes on Nix June 5,
2015
-
Some notes on the Nix package manager, language, and ecosystem.
- Wikidata Explorer May
18, 2015
-
Traverse Wikidata as a knowledge graph.
- Discovering Knowledge in Linked
Data April 24, 2015
-
In this talk, we'll look at how to search Wikidata from a graph database
via a domain-specific language.
- Scheduled Prioritization April 16, 2015
-
Putting the fun in ROI functions.
- Notes on Elasticsearch March 12, 2015
-
Some notes on Elasticsearch usage and development.
- SOA Proliferation Through
Specification January 27, 2015
-
A look at how Swagger specifications can help in the development,
adoption, and deployment of services in a service-oriented architecture.
- Functional Refactoring January 24, 2015
-
Refactoring provides an accessible opportunity to learn about imperative
and functional design patterns, and Scala's hybrid OO/FP design caters
to both.
We explore examples of Scala code written using familiar imperative
design patterns, and refactor each one using a counterpart functional
pattern. We learn how to replace mutable variables with the state monad,
loops with folds, thrown exceptions with sum types, dependency injection
with the reader monad, and much more. As we go, we build a mapping of
corresponding imperative and functional patterns.
- Ray Casting December 14, 2014
-
I have no idea what I'm doing.
- Budgetr September 25,
2014
-
Fiddling with sliders in JavaScript.
- Notes on JavaScript September 25, 2014
-
Some notes on the JavaScript language, libraries, and ecosystem.
- Gravity September 19,
2014
-
GmM/r^2
- Scala DevOps: Collaborative Development
and Continuous Deployment August 8,
2014
-
In this talk, we look at how a Scala development team can work
collaboratively to build, test, and deploy their software using GitHub,
sbt, Travis CI, Coveralls, and Heroku.
- Putting Functional Programming to
Work June 26, 2014
-
In this session, we dig into one particular tool: the state monad, to
see how it lives up to these promises and helps power the Versal
platform.
- Real-World Functional Programming
May 28, 2014
-
Integrating multiple APIs of different sorts (e.g. Web facing RESTful,
internal library, data storage, low level event logging, etc.) into a
single application, the complexity of the manifold interactions can very
quickly become an obstacle to agility. In this session, engineers from
Versal will discuss how their move to a functional programming model
allowed them to migrate from an event-sourced architecture and in-memory
hierarchical data model to an on-disk relational data model that allowed
them to greatly simplify their application development process. Examples
of how to apply functional programming concepts to various API designs
will be provided.
- Effect Systems January 24, 2014
-
Effect systems allow the separation of the semantics of a program from
the specification of a program. An effect system is made up of effect
types, effectful programs, and effect handlers. An effect is an
operation, behavior, pattern, or signature of which the meaning is up
for interpretation by an effect handler.
We explore different ways to implement effect systems in Scala. We begin
by describing an effectful program that we would like to write as a pure
value. We then write different toy effect systems that can run it.
- Notes on Standard ML October 17, 2013
-
Some notes on the SML language.
- Rapid Scala Development with sbt September 14, 2013
-
In this talk, we look at a simple way to develop sophisticated software
in Scala using these tools together.
- Scala in 2018: A Panel with Rod
Johnson September 12, 2013
-
In this panel, we debate Rod Johnson's ScalaDays 2013 keynote about
obstacles to Scala's widespread adoption.
- Hands-On Category Theory August 2, 2013
-
Skip the similes, and muzzle the metaphors. In this talk we take a look
at functors and applicative functors. Using a text editor and the REPL,
we build from scratch a small library that we can use with our
production code.
- Programming Exercises July 31, 2013
-
Some programming exercises that have helped me keep sharp over the
years.
- TDD with FireOtter June 11, 2013
-
In this talk we describe FireOtter, a library for human readable
CSV-based specification testing.
- That's the joke. June 4, 2013
-
You suck, McBain!
- Notes on Scala March
28, 2013
-
Some notes on the Scala language, libraries, and ecosystem.
- Dependency Injection in Scala with
Jellyfish January 14, 2013
-
Delimited continuations allow functional effects to be expressed in a
direct style, eliminating the need for nested flatMap
callbacks and for
comprehensions.
Jellyfish is a Scala library for direct-style functional dependency
injection via delimited continuations.
- The State Monad December 13, 2012
-
In this talk, we explore the State monad as a way to represent state
changes in a purely functional way.
- Imperative Web Workflows via Delimited
Continuations July 9, 2012
-
In this talk we discuss the use of delimited continuations to build
complex, multi-step Web workflows out of easy to follow imperative code.
- Delimited Continuations July 7, 2012
-
An introduction to delimited continuations in Scala.
- Functional Programming in C June 22, 2012
-
Not because we should, but because we can.
- Type Classes March 11, 2012
-
An exploration of type classes in Scala.
- Notes on Haskell February 18, 2012
-
Some notes on the Haskell language, libraries, and ecosystem.
- Functional Reactive UI Thing November 14, 2011
-
In this presentation we'll talk about declarative UI programming using
delimited continuations and functional reactive programming. It's a neat
way to hide the noise of Java's ActionListener API and to keep UI
behavior cleanly defined in one place.
- Swarm: Transparent Scalability Through
Portable Continuations August 8, 2011
-
In this talk, we present an approach to building transparently scalable
applications using Swarm, a framework which enables code execution to
follow data within Scala's serializable delimited continuations.
- Reference Architectures April 11, 2011
-
A reference for common patterns in software and data.
- JCode June 4,
2010
-
A simple rules-based substitution cypher for mischief.
- Krypto September 11,
2009
-
Two minus three equals negative fun!
- Notes on Java March 16,
2009
-
Some notes on the Java language, libraries, and ecosystem.