blog :: Brent → [String]
-
Competitive Programming in Haskell: Union-Find, part II - November 18, 2024
-
Competitive Programming in Haskell: Union-Find - November 2, 2024
-
MonadRandom: major or minor version bump? - October 14, 2024
-
Retiring BlogLiterately - October 1, 2024
-
Decidable equality for indexed data types - September 9, 2024
-
Competitive Programming in Haskell: tree path decomposition, part II - August 8, 2024
-
Help me attend ICFP in Milan! - July 20, 2024
-
Rivers: eventually constant streams in Haskell - July 18, 2024
-
Competitive Programming in Haskell: tree path decomposition, part I - July 11, 2024
-
Products with unordered n-tuples - June 25, 2024
-
Competitive Programming in Haskell: sieving with mutable arrays - June 21, 2024
-
Swarm swarm III (virtual hackathon) - June 12, 2024
-
Competitive Programming in Haskell: Two Hard Problems - May 28, 2024
-
Swarm 0.4 release - August 22, 2023
-
Compiling to Intrinsically Typed Combinators - July 13, 2023
-
Competitive Programming in Haskell: two more DP challenges - June 20, 2023
-
Nested folds - June 17, 2023
-
Dynamic programming in Haskell: automatic memoization - June 6, 2023
-
Dynamic programming in Haskell: lazy immutable arrays - June 2, 2023
-
Competitive programming in Haskell: introduction to dynamic programming - May 31, 2023
-
Competitive programming in Haskell: parsing with an NFA - May 24, 2023
-
New ko-fi page: help me attend ICFP! - May 22, 2023
-
Competitive programming in Haskell: tries - May 3, 2023
-
Competitive programming in Haskell: topsort via laziness - April 11, 2023
-
Competitive programming in Haskell challenge: Letter Optimization - March 11, 2023
-
Competitive programming in Haskell: Infinite 2D array, Level 4 - February 24, 2023
-
Subtracting natural numbers: types and usability - February 7, 2023
-
Competitive programming in Haskell: Infinite 2D array, Levels 2 and 3 - January 16, 2023
-
Binary search over floating point representations - January 2, 2023
-
Competitive programming in Haskell: better binary search - January 1, 2023
-
Swarm virtual hackathon - December 12, 2022
-
Competitive programming in Haskell: Infinite 2D array, Level 1 - December 3, 2022
-
Swarm alpha release! - October 6, 2022
-
Competitive programming in Haskell: Infinite 2D array - September 1, 2022
-
Types for top-level definitions - August 27, 2022
-
Swarm: status report - June 20, 2022
-
Competitive programming in Haskell: BFS, part 4 (implementation via STUArray) - November 17, 2021
-
Competitive programming in Haskell: Enumeration - November 15, 2021
-
Competitive programming in Haskell: BFS, part 3 (implementation via HashMap) - October 29, 2021
-
Competitive programming in Haskell: BFS, part 2 (alternative APIs) - October 18, 2021
-
Competitive programming in Haskell: BFS, part 1 - October 14, 2021
-
Swarm: a lot can happen in a week - October 1, 2021
-
Swarm: preview and call for collaboration - September 24, 2021
-
Competitive programming in Haskell: Codeforces Educational Round 114 - September 22, 2021
-
Automatically updated, cached views with lens - September 17, 2021
-
Competitive programming in Haskell: Kadane’s algorithm - September 9, 2021
-
Implementing Hindley-Milner with the unification-fd library - September 8, 2021
-
Competitive programming in Haskell: monoidal accumulation - August 11, 2021
-
Types versus sets in math and programming languages - June 24, 2021
-
Competitive programming in Haskell: folding folds - June 19, 2021
-
Average and median via optimization - June 8, 2021
-
Competitive programming in Haskell: folding challenge - February 23, 2021
-
Competitive programming in Haskell: cycle decomposition with mutable arrays - July 18, 2020
-
Competitive programming in Haskell: 2D cross product, part 1 - July 11, 2020
-
Competitive programming in Haskell: data representation and optimization, with cake - June 29, 2020
-
Competitive programming in Haskell: vectors and 2D geometry - June 24, 2020
-
Anyone willing to help me get set up with something like miso? - June 9, 2020
-
Competitive programming in Haskell: permutations - May 30, 2020
-
Competitive programming in Haskell: building unordered trees - May 22, 2020
-
Competitive programming in Haskell: sorting tree shapes - May 19, 2020
-
Competitive programming in Haskell: summer series - May 16, 2020
-
Data structure challenge: application - April 7, 2020
-
Data structure challenge: solutions - April 6, 2020
-
Data structure challenge: finding the rightmost empty slot - March 23, 2020
-
Competitive Programming in Haskell: modular arithmetic, part 2 - March 3, 2020
-
What would Dijkstra do? Proving the associativity of min - February 23, 2020
-
Competitive Programming in Haskell: modular arithmetic, part 1 - February 15, 2020
-
Unexpected benefits of version control - February 11, 2020
-
Competitive Programming in Haskell: primes and factoring - February 7, 2020
-
Counting inversions via rank queries - December 18, 2019
-
Computing Eulerian paths is harder than you think - November 20, 2019
-
Competitive Programming in Haskell: reading large inputs with ByteString - October 13, 2019
-
Lightweight invertible enumerations in Haskell - July 5, 2019
-
Competitive Programming in Haskell: Scanner - May 22, 2019
-
Lightweight, efficiently sampleable enumerations in Haskell - May 14, 2019
-
Code style and moral absolutes - April 30, 2019
-
Competitive Programming in Haskell: Basic Setup - April 24, 2019
-
Idea for a physics-based rolling ball puzzle game - March 14, 2019
-
What’s the right way to QuickCheck floating-point routines? - February 24, 2019
-
Worstsort - February 16, 2019
-
Finding roots of polynomials in Haskell? - February 13, 2019
-
Hendrix teams at ACM ICPC - November 4, 2018
-
What’s the Difference? video and slides - October 20, 2018
-
Counting inversions with monoidal sparks - October 6, 2018
-
Monoidal sparks - October 1, 2018
-
New ICFP functional pearl on subtracting bijections - June 23, 2018
-
Ertugrul Söylemez: 1985-2018 - May 22, 2018
-
Future of Coding podcast interview - May 19, 2018
-
Apply to attend the Oregon Programming Languages Summer School! - May 9, 2018
-
Conversations with a six-year-old on functional programming - May 6, 2018
-
Call for submissions: FARM 2018 - April 23, 2018
-
Parametricity for Bifunctor - March 31, 2018
-
Beeminder guest post on Beeminding All The Things - March 5, 2018
-
Test your intuition: logarithmic time - March 1, 2018
-
Visiting assistant professor position at Hendrix - February 25, 2018
-
A (work in progress) translation of Joyal’s original paper on species - February 13, 2018
-
Off the Beaten Track: Explaining Type Errors - January 21, 2018
-
Sum of heights in a binary tree - November 3, 2017
-
New baby, and Haskell Alphabet - September 21, 2017
-
The Typeclassopedia is now up-to-date - June 7, 2017
-
Algorithms lecture notes and assignments - May 15, 2017
-
Submit to the Workshop on Type-Driven Development! - April 5, 2017
-
Deep work and email habits: a followup - March 5, 2017
-
Signed sets and ballots and naturality - February 27, 2017
-
Signed sets and ballots, part 2 - February 24, 2017
-
Signed sets and ballots, part 1 - February 21, 2017
-
Virtual species suffice - February 10, 2017
-
Advent of code #16 solution: an algebra of bitstrings - January 27, 2017
-
My new programming languages course - January 13, 2017
-
MonadRandom 0.5 released - January 3, 2017
-
MonadRandom 0.5 and mwc-random: feedback wanted - November 16, 2016
-
The divided difference track - November 9, 2016
-
Adventures in enumerating balanced brackets - October 25, 2016
-
ICFP roundup - October 5, 2016
-
The generic-random library, part 1: simple generic Arbitrary instances - September 20, 2016
-
Meeting people at ICFP in Nara - September 15, 2016
-
Deep work and email habits - September 2, 2016
-
Academic integrity: context and concrete steps - August 21, 2016
-
Academic integrity and other virtues - August 18, 2016
-
POGIL workshop - August 7, 2016
-
New Haskell Symposium paper on "twisted functors" - August 4, 2016
-
Eastman maximal comma-free codes in Haskell - July 7, 2016
-
Any clues about this Newton iteration formula with Jacobian matrix? - June 20, 2016
-
Towards a new programming languages course: ideas welcome! - May 23, 2016
-
How to print things - May 19, 2016
-
How to print things - May 19, 2016
-
In praise of Beeminder - May 18, 2016
-
The network reliability problem and star semirings - April 6, 2016
-
CCSC-Midsouth conference and programming contest - April 2, 2016
-
CIS 194 materials now on github - March 29, 2016
-
Boltzmann sampling for generic Arbitrary instances - March 23, 2016
-
At SIGCSE 2016 in Memphis - March 3, 2016
-
The network reliability problem - February 19, 2016
-
A strange representation of Z6 - November 15, 2015
-
ICFP roundup - November 2, 2015
-
Experience report: oral final exam - October 2, 2015
-
Meeting new people at ICFP - August 29, 2015
-
Catsters guide is complete! - August 11, 2015
-
The Species of Bracelets - July 10, 2015
-
Ally Skills Tutorial at ICFP - June 10, 2015
-
Crystal Ball Connection Patterns via Species and Generating Functions - June 2, 2015
-
BlogLiterately 0.8.1, now with HTTPS! - June 2, 2015
-
Thoughts on grade inflation, part I: is grade inflation bad? - May 26, 2015
-
Pan-Galactic Division in Haskell - May 12, 2015
-
Polynomial Functors Constrained by Regular Expressions - April 15, 2015
-
Blogging again, & some major life events - March 31, 2015
-
Maniac week postmortem - August 19, 2014
-
Readers wanted! - August 10, 2014
-
Maniac week - August 4, 2014
-
Anafunctors - June 16, 2014
-
AC and equivalence of categories - June 5, 2014
-
Unique isomorphism and generalized "the" - May 13, 2014
-
Avoiding the axiom of choice, part I - May 8, 2014
-
Diagrams 1.0 - January 17, 2014
-
Catsters guide - January 14, 2014
-
Catsters guide - January 13, 2014
-
In defense of drawing by coding - October 18, 2013
-
Come visit the FARM! - August 11, 2013
-
FARM 2013: call for demonstration proposals - July 8, 2013
-
Workshop on Functional Art, Music, Modeling and Design - May 13, 2013
-
Monad transformers: a cautionary tale - April 29, 2013
-
Random binary trees with a size-limited critical Boltzmann sampler - April 25, 2013
-
Beeminding for fun and profit - April 17, 2013
-
Introducing diagrams-haddock - March 24, 2013
-
BlogLiterately 0.6 - March 10, 2013
-
The Dawn of Software Engineering - January 13, 2013
-
The algebra of species: primitives - January 7, 2013
-
Diagrams 0.6 - December 12, 2012
-
Species definition clarification and exercises - December 6, 2012
-
Teaching abstraction - November 25, 2012
-
Combinatorial species definition - November 20, 2012
-
foldr is made of monoids - November 6, 2012
-
Using multiple versions of GHC in parallel with GNU stow - November 1, 2012
-
Decomposing data structures - October 28, 2012
-
And now, back to your regularly scheduled combinatorial species - October 18, 2012
-
FogBugz, Beeminder, and... pure functions in the cloud? - October 13, 2012
-
Creating documents with embedded diagrams - August 28, 2012
-
BlogLiterately 0.5.2 release, with improved image uploading - August 27, 2012
-
Identifying outdated packages in cabal install plans - August 25, 2012
-
Unordered tuples and type algebra - August 24, 2012
-
Monads: Easy or Hard? - July 19, 2012
-
Diagrams mentoring at Hac Phi - July 9, 2012
-
BlogLiterately 0.5 release - July 7, 2012
-
New haxr release - July 7, 2012
-
BlogLiterately 0.4 release - July 2, 2012
-
BlogLiterately - July 2, 2012
-
Unsubscribing from Wolfram emails (rant) - June 12, 2012
-
Announcing diagrams 0.5 - March 9, 2012
-
Parsing context-sensitive languages with Applicative - January 5, 2012
-
Typeclassopedia v2: moving my efforts to the Haskell wiki - November 26, 2011
-
Modern art with diagrams: the face of progress - November 12, 2011
-
Generating plane tilings with diagrams - November 12, 2011
-
Wanted GHC feature: warn about unused constraints - November 6, 2011
-
More counting lambda terms - October 24, 2011
-
Announcing diagrams-0.4 - October 23, 2011
-
Effective parse tree support for the working semanticist - October 11, 2011
-
diagrams repos now mirrored on github! - September 11, 2011
-
Math.Tau - September 9, 2011
-
Unbound now supports "set" binders and GADTs - August 24, 2011
-
Idempotent Template Haskell - August 16, 2011
-
Hac phi 3! - July 30, 2011
-
On being a researcher - July 11, 2011
-
Good toolchain for writing a user manual? - June 10, 2011
-
Bit-rotted text adventure EDSL free to a good home - May 27, 2011
-
Themes on Streams, Part II - May 20, 2011
-
Tic-tac-toe maps with diagrams - May 18, 2011
-
Announcing diagrams preview release - May 17, 2011
-
trapd - May 11, 2011
-
Themes on Streams - May 10, 2011
-
Monoids for Maybe - April 18, 2011
-
Call for contributions: second edition of the Typeclassopedia - April 3, 2011
-
Binders Unbound - March 29, 2011
-
Enumerating linear inhabitants - February 24, 2011
-
Counting linear lambda terms: choice and correspondence - February 9, 2011
-
Counting linear lambda terms: Mersenne numbers - February 4, 2011
-
Counting linear lambda terms - January 26, 2011
-
Math.OEIS needs a new maintainer - December 4, 2010
-
Typed type-level programming: status report - December 3, 2010
-
Species subtraction made simple - November 25, 2010
-
Things I have learned about vector spaces - November 20, 2010
-
Minimal test case generator tool? - November 18, 2010
-
Back from Baltimore - October 2, 2010
-
The Haskell Alphabet - September 18, 2010
-
On a Problem of sigfpe - August 12, 2010
-
Typed type-level programming in Haskell, part IV: collapsing types and kinds - August 5, 2010
-
Species and Functors and Types, Oh My! - August 1, 2010
-
Typed type-level programming in Haskell, part III: I can haz typs plz? - July 19, 2010
-
Typed type-level programming in Haskell, part II: type families - July 6, 2010
-
Typed type-level programming in Haskell, part I: functional dependencies - June 29, 2010
-
Improving GHC's constraint solving - June 17, 2010
-
Summer in Cambridge - June 3, 2010
-
Hac φ 2010 roundup - May 27, 2010
-
diagrams slides - May 22, 2010
-
Hac φ 2010! - May 20, 2010
-
cabal init - April 16, 2010
-
Functional pearl on combinatorial species - April 8, 2010
-
Haskell anti-pattern: incremental ad-hoc parameter abstraction - April 3, 2010
-
Math.Combinatorics.Multiset and Sawada's algorithm - March 12, 2010
-
Deriving pleasure from GHC 6.12.1 - March 3, 2010
-
Math.Combinatorics.Multiset - February 20, 2010
-
The random graph - January 26, 2010
-
How to solve this differential equation? - December 16, 2009
-
Mgu's and universal properties - December 11, 2009
-
Collecting attributes - October 28, 2009
-
Typeclassopedia in Japanese! - October 20, 2009
-
Call for submissions: Monad.Reader issue 15 - October 12, 2009
-
diagrams 0.2.1, and future plans - September 24, 2009
-
Functional MetaPost - September 22, 2009
-
Edinburgh - August 26, 2009
-
New 2D text layout library - August 14, 2009
-
Going on vacation - August 9, 2009
-
Species operations: differentiation - August 6, 2009
-
Primitive species and species operations, part II - August 1, 2009
-
Primitive species and species operations - July 30, 2009
-
Hac φ roundup - July 29, 2009
-
More from Hac φ - July 25, 2009
-
Hac φ day 2 - July 25, 2009
-
Introducing Math.Combinatorics.Species! - July 24, 2009
-
Hac φ is underway! - July 24, 2009
-
2009 ICFP programming contest reflections - June 29, 2009
-
Hac φ! - May 28, 2009
-
A strange dream - May 17, 2009
-
BumpTop private beta invite - April 6, 2009
-
Monad.Reader #13 is out! - March 16, 2009
-
First explorations in computer music - March 15, 2009
-
Typeclassopedia -- a generic response - February 17, 2009
-
The Typeclassopedia -- request for feedback - February 16, 2009
-
a chicken monad - February 6, 2009
-
Diagrams 0.2 release - January 31, 2009
-
Fad diets are like burrito tutorials - January 30, 2009
-
Abstraction, intuition, and the "monad tutorial fallacy" - January 13, 2009
-
Data.List.Split - December 21, 2008
-
QuickCheck rocks my socks - December 17, 2008
-
The Poisson distribution and Stirling numbers - September 16, 2008
-
First day of class - September 4, 2008
-
Philadelphia! - August 4, 2008
-
Singing card guts - July 29, 2008
-
Call for an ICFP Mars Server! - July 16, 2008
-
ICFP programming contest reflections - July 15, 2008
-
ZipEdit - June 21, 2008
-
New Haskell diagrams library - April 30, 2008
-
List convolutions - April 22, 2008
-
Collecting unstructured information with the monoid of partial knowledge - April 17, 2008
-
An interesting monoid - April 17, 2008
-
FringeDC talk - March 27, 2008
-
Call for video cameras! - March 20, 2008
-
FringeDC formal meeting, March 22 - March 15, 2008
-
Philadelphia, here we come! - March 14, 2008
-
Patch theory, part II: some basics - February 13, 2008
-
FringeDC informal meeting - February 10, 2008
-
Patch theory thoughts, part I - February 7, 2008
-
Gobby, Haskell, and patch theory - February 4, 2008
-
Visiting Portland! - January 25, 2008
-
Books! - January 13, 2008
-
Type theory, here I come... - December 27, 2007
-
Carnival of Mathematics #23 -- call for submissions - December 20, 2007
-
A word to the wise - December 19, 2007
-
an application (haha) for darcs - December 5, 2007
-
a plea for accountability - October 29, 2007
-
Higher-dimensional enumeration - October 1, 2007
-
Monad.Reader article (Multiset partitions) - September 28, 2007
-
Squarefree numbers in Haskell - September 2, 2007
-
Draft of my TMR article on multiset partitions - August 23, 2007
-
Mapping over a nested functor? - August 16, 2007
-
Rationals! - August 13, 2007
-
Deducing code from types: filterM - June 26, 2007
-
Solving an arithmetic puzzle with Haskell - June 21, 2007
-
About me - May 25, 2007