|Day 1: Wednesday May 21, 2014
|8:30 AM - 9:00 AM
|Opening Keynote: State of the struct address
Andrei Alexandrescu Allocators. The state of D adoption at Facebook. Priorities. Vision. All of these and more will be discussed in this highly interactive presentation.
|Templates in the Wild: A Postmortem
Jonathan CrapuchettesAn industry success story: EMSI needed to improve its data processes with n-dimensional dataset processing, in-memory data manipulation, data type checking, internal testing, and code correctness. D was the language of choice because it couples low-level performance with high-level design.
EMSI began manipulating economic labor market data using Excel. The company next used SQL for computations, while Excel spreadsheets handled the flow of the operations. As more data sets were incorporated and increasingly complex methodology was added, we moved the flow control to PHP because of its “ease” of development and widespread use. One of the goals when moving to PHP was to allow for quarterly runs of the data processing with just the push of a button. Sadly this goal never came to fruition, but during this time some fundamental concepts regarding data storage structure took shape.
Within a few years the PHP code base had become unwieldy and lacked the kind of internal errorchecking that we desperately needed. It was also missing the capacity to manipulate datasets of arbitrary dimensions: up to that point datasets had been twodimensional (e.g., Area by Industry or Area by Occupation), but demographic measureswhich were becoming increasingly in demandadded at least two additional dimensions to each dataset. We decided that a new library of dataset structures and manipulation functions needed to be created.
After much debate, D was selected as the language for the new framework. We have been using D since 2007 for some performance-oriented utilities and appreciated its productive inclusiveness of features from inline assembly to associative arrays in the same clean language. We determined that D’s fast compile times, strong static typing, and powerful templating capabilities were ideal for building strongly-checked and performant data processes. Equally important, D’s highlevel features made it accessible to data developers with a widerange of programming skill and experience.
Most importantly, choosing D allowed for the development of five major constructs which today form the basis for our data processing framework: cubes, data storage engines, dimensions, hierarchies, and measures. Cubes encompass data storage engines and offer abstraction layers for particular sets of functionality. Data storage engines hold the dimensions and data nodes for each cube. Dimensions are compiletime concepts that have templated names and hierarchy node types. Hierarchies handle the runtime concepts of classification codes and their levels (e.g., counties to states and states to the nation). Finally, measures are the data contained within each node in the cubes.
In applying these constructs, we make heavy use of templated structs, classes, and functions to build custom algorithms at compiletime that are optimized for specific use cases and allow for quicker realization of errors. All in all, D provided a faster, cleaner development of data processes and enabled us to build a framework that met our specific needs while giving us a platform from which we can further develop and improve our processes into the future.
I will also be showing examples from our code base of techniques that we have used as well as discussing some of the problems we encountered with D during development.
|A Real D In Programming: Lessons Learned From Eight Years of Teaching D at the University
Chuck AllisonTales from eight years of downloading D mastery into the brains of computer science undergraduates.
The presenter teaches a senior-level course at Utah Valley University on the Analysis of Programming Languages that includes a D-programming component. Come see the result of eight years of honing pedagogical material and projects that covers D from soup to nuts, including the following topics and more: CFTE, UFCS, D’s generics, pass-by-name with alias, coroutines via fibers, alias this, the scope statement, contract programming, mixins, Variant and Algebraic, Nullable, functional programming, and concurrency and infinite streams via message passing.
|12:00 PM - 1:30 PM
|Lunch & Mingling
|Inside the Regular Expressions in D
Dmitry Olshansky Take a sneak peek at a regular expression engine internals. Learn how simple and effective a metaprogramming could be, by observing D's std.regex library unique features described in great detail.
|Experience Report: Using D at Facebook and Beyond
Adam Simpkins Explore Facebook's experiences integrating D into existing C++-based infrastructure.
|Case Studies In Simplifying Code With Compile-Time Reflection
Atila Neves This talk will show how the power of compile-time reflection and user defined attributes in D can be leveraged to reduce the number of lines of code that need to be written. Two real-life case studies will be presented showing how their D incarnations are better than the C++11 ones that inspired them.
|It's Payback Time!
Walter Bright, Andrei Alexandrescu, and more Dislike this or that feature or decision made by the language leaders? Ever pounded your keyboard in frustration watching an exchange on the forum? Really, what were they thinking? Well, it's payback time. They'll be out there for the roasting. Ask them anything, and hold no punches!
|Day 2: Thursday May 22, 2014
|8:30 AM - 9:00 AM
|Keynote: The Last Thing D Needs
Scott Meyers Based on his 25 years of experience with C++, Scott Meyers will offer a recommendation—almost a plea—regarding the D programming language and its community.
|Refactoring JIT Compilation
|Designing an Aurora: A Glimpse at the Graphical Future of D
Adam Wilson Aurora is a brand new Graphics Toolkit written specifically for D and designed for developers with limited to no experience writing graphics code. This presentation is intended to introduce the community to Aurora, demonstrate progress to date, and solicit discussion about the future direction of Aurora and the obstacles that it faces.
|12:00 PM - 1:30 PM
|Lunch & Mingling
|Reducing D bugs
Vladimir Panteleev This talk confronts some of the challenges encountered by D users and developers, such as narrowing down implementation bugs and other problems difficult to diagnose conventionally. Topics covered include DustMite, the source code minimization tool, Git and its use in D development, as well as a miscellanea of other tools of related purpose.
|Tooling: Bringing Developers and Development Together
Brad Roberts Once any project grows beyond one or two developers automation and communication becomes increasingly important. This talk will cover the past, present, and a little bit of the future of what exists in the D community today.
|Debugging in D
Iain Buclaw Talk about steps and processes used to get (near) complete D support in GDB and Binutils. From recognising primitive types to writing a D-style expression parser to run D code interactively with the program in debug. And if using a black and white TUI is not your idea of debugging, there's D syntax highlighting support in CGDB on show too.
|Tiny, Ubiquitous Machines Powered by D
Michael V. Franklin Microcontrollers (MCUs) offer a unique and challenging set of constraints for any programming language. They are not fast (10's to low 100's of MHz), they have very little storage (100's of KB) and have even less RAM. Due to these extremely limited resources, languages used to program these tiny, ubiquitous machines must generate the most efficient code in terms of both size and speed. This talk will show that D can program microcontrollers just as well, if not better than the current de facto languages, and will detail progress on the recently launched effort bring D to the ARM Cortex-M family of MCUs.
|Day 3: Friday May 23, 2014
|8:30 AM - 9:00 AM
|Keynote: High Performance Code Using D
Walter Bright Memory safety, powerful abstractions, and fast compilation are great features to have. But what about high performance code? This talk shows how D can deliver on generating highly competitive, no-compromise performance applications. Conventional wisdom says that high performance and powerful abstractions are in conflict with each other, that one must write close-to-the-metal code to get high performance. Bright will show that this is no longer true with a modern high level language like D.
|Real-Time Big Data in D
Don Clugston "Big Data" applications, which process petabytes of data per year, are computationally demanding, yet they have different requirements from traditional performance-critical applications. A programming language which is well suited for CPU-bound code, isn't necessarily ideal for real-time Big Data.
At Sociomantic Labs, we consume a deluge of real time data every day using an all-D technology stack. This talk will explain how our use of D has been successful in our intensely competitive industry. Unfortunately, most existing D libraries were not designed for Big Data applications. I'll discuss the performance killers they contain, and propose some changes to make D the natural choice for Big Data tasks.
|x86 Bare Metal and Custom Runtime Programming
Adam Ruppe "kernel in D" is a fairly common topic on forums. I've written a minimal runtime and then rebuilt it back up to the point where we can produce a ~30 KB stand-alone executable which can be used on Linux or on bare metal with the support of a decently large subset of the language (classes, exceptions, even closures with some manual care). By creatively hacking the RTInfo facility in object.d, we can also perform some static checks on defined types to help confirm to performance or correctness checks.
For example, storing a slice without the GC is prone to losing track of who owns the memory. Using RTInfo and compile time reflection, we can scan all user types and issue a compile error any time this is done, directing the user to use an owned array struct instead.
It is also worth noting that such techniques may be usable in the full druntime as well, without stepping on other uses, e.g. precise GC.
|12:00 PM - 1:30 PM
|Lunch & Mingling
|Mobile Gameserver Backend in D
Stephan Dilly A gameserver backend that I have developed for a mobile game app project. The server is completely written in D using the vibe.d framework.
Many Have something to say? Has your proposal been rejected? Worse yet, didn't you have the time to put one together? No problem! This is the time when you get the opportunity to get up on the stage and have it for up to five minutes. Send your lightning talk ideas to Walter and Andrei!
|Declarative programming in D
Mihails Strasuns aka "Dicebot" When term "declarative programming" is used in context of imperative languages, it is most often associated with Domain-Specific Languages. However, it is a more general approach with essential value of separating meaningful description from boilerplate behavior. It is already widely used in D programs and won't be a revelation for any experienced D users.
This talk tries to somewhat generalize this approach and popularize it as common D paradigm, as well as speculate upon possible improvements to D reflection capabilities that can make it even more powerful.
|SDC, a D Compiler as a Library
Amaury Sechet One of the forces of D is the great compile time capabilities. These come with a drawback - any tooling around D must be able to semantically analyze the whole language. SDC intend to solve that problem by providing a compiler as a library, usable by 3rd party tools.