“Systems programming” is a category of programming that requires high speed, demanded by such applications as operating systems, network servers, and databases. For many years, and even today, C is the go-to programming language for such work — but over the years, a growing number of other languages have been joining this space, most notably C++, and more recently D, Go, and Rust. What do each of these languages have to offer, and what do the languages’ designers prioritize in their designs? This panel brings together Bjarne Stroustrup (C++), Rob Pike (Go), Andrei Alexandrescu (D), and Niko Matsakis (Rust) to discuss what they think about programming languages, language design, community, and future directions.
Cascading Stylesheets (CSS) is the way in which we describe the design and layout of Web pages. But is CSS a programming language, or something less than one? And have those boundaries changed over time? And what does this mean for the people creating and modifying stylesheets; what skills do they need to have? In this talk, Chris Eppstein describes what CSS has been, is, and will be, and how this will affect front-end design.
Certain things — objects, printed pages, and Web sites — are clearly designed well. And others…. well, not so much. What’s the difference between good and bad design? What leads an organization to create products that are beautiful, functional, and demonstrate an understanding of the people who will be using it? In this talk, Robert Brunner describes what goes into good design. In particular, he points to the fact that a good design rarely (if ever) emerges ready for prime time. Rather, it takes time, discussion, considerations, and testing to ensure that a design is appropriate. Given that our lives depend on the designs of other people, and that we as software developers are responsible for designing products (even if virtual) that others will consume, it’s important for us to think about design and consider how we can improve our approach to it.
Here’s something that you’ve probably heard before: If we introduce technology into classrooms, then students will learn more, better, and more effectively. But the reality is different; just throwing technology at the problem doesn’t help. Which raises the question: What kinds of designs do make for real educational differences? In which classes, and in which ways, can we really use technology to improve learning? In this talk, Lisa Maurer describes work that she and Pearson are doing to research and improve UI/UX design to improve learning outcomes.
IPython notebook (aka Jupyter) is a well known, Python-based system for working with and collaborating on data science. But sometimes you don’t want to have people work on a data-science project, so much as be able to review certain aspects of that data. In other words, you want to create a small application that lets people review and play with limited aspects of the data. As Andrew Campbell explains in this talk, it’s now possible to create and use widgets from IPython, to create useful and interesting applications — streamlining and speeding up the process even more than before.
The “Internet of Things” is the modern embodiment of an idea that has been around for a while — that not only can people be interconnected on the network, but that our appliances, belongings, buildings, and even clothing can be interconnected on the network. The IoT is attracting a great deal of attention, but it’s also pointing to issues with the current infrastructure of the Internet, and with applications that will need to be solved. In this talk, Colt McAnlis points to the problems with implementing the Internet of Things, and how we might need to think about and solve these problems in order to allow our refrigerator, bathrobe, and skateboard to speak with one another.
Developers often complain that designers don’t understand software — and that their lack of understanding leads to all sorts of problems. If only designers would start to program, they would finally understand what’s involved, and it would be so much easier to speak and work with them. In this talk, Alexandra Leisse turns the tables, saying that it would also behoove developers to learn to design. If only developers would learn, understand, and internalize design principles, it would be easier to work with them — and most importantly, the users of the software would benefit greatly. She dismisses several myths about design, such as that designers are born, not made, and offers numerous suggestions for how developers can increase their understanding of design, and their sensitivity to the user experience. If you’re a software designer who is either dismissive of design or in awe of it, this talk should provoke you into learning more about it, for everyone’s benefit.
Developers often talk about the people using our code… but it’s not always in the most positive way. Successful teams think about their users, and the ways in which our users (and customers) will use the products we’re creating. . In this talk, Louisa Barrett talks about how we can and should think creatively, like a designer — not necessarily thinking as an artist, but as someone who wants to help our customers to achieve their needs, and use our products in the most effective ways.
As a technical or creative professional, you’re likely talking to clients on a regular basis. The way in which you present and speak can make a big difference — often, the difference between getting work, and getting paid, and not. In this talk, designer Mike Monteiro tells us why it’s important to have good presentation skills, why we shouldn’t be embarrassed to learn how to sell, and what we can do to improve our presentations — so that they will sell our work effectively.