Lessons from a DSL where all you have is ranges
Ranges are so good, we semi-accidentally ended up developing software in a language where ranges were almost the only feature developed. Inspired heavily (cough cough) by D's ranges, we were able get moving fast with basic data processing before most of the language was complete. Over many months of writing code—including a lot by non-D users and people who weren't at the start active programmers—many lessons were learnt; some sweet, some bitter, some downright perplexing. Overall a picture emerged of what ranges are good for, what they aren't suited to, and what they could become good at given specific language and community attention.
This is both an experience report of using D itself in industry and the concepts that modern D embodies. The aim is to make people aware of just how much you can do with ranges and how this opens the door to writing code without having to leverage so much deep programming craft. The talk would consist of perhaps 5-10 mins introduction on how ranges work (including some of the unpleasant parts like how to initialise the front), 15-20 mins on examples of interest of how ranges have worked for us at Symmetry and 20-30 minutes of exploring the limits of ranges as a generic framing for a variety of programming tasks, with a special focus on ease of use and readability informed by our experiences so far using a heavily range-based DSL.
I am a long time low-frequency contributor to the D community in various forms, ranging from one-line fixes on new dub repositories to wider visions of what D can do in science and GPU computing (my thanks to many other people for making their more substantial visions reality) to tips and tricks for comers both new and old on the D forums. I have a background in physics and aim to bring the disciplined yet creative pragmatism of that field to what I produce, both in open source and my work at Symmetry Investments.