PostgreSQL has been growing in popularity for the last few years, partly because its performance continues to be excellent as it scales. But this doesn’t mean that PostgreSQL scales magically or automatically, or that we don’t need to worry about which queries are consuming the greatest resources. pg_stat_statements is a PostgreSQL extension that lets you track query performance over time. In this talk, Lukas Fittl describes some advanced ways in which you can use pg_stat_statements to understand, and then improve, your PostgreSQL database performance.
Ruby is famous for letting programmers do anything and everything. You can change the language, the syntax is extremely flexible, and there are many ways to do the same thing. This flexibility is great for experienced developers, but how does it work for new programmers? In this talk, Matthew Clark enumerates a number of reasons why Ruby is a good language to learn programming, and points to the features that make Ruby easy to understand and learn. As he says, we can talk about things without getting absorbed in the minutiae of where to put parentheses.
Since it was first introduced in 1992, Python has been a dynamically typed language. In other words, any variable can point to any object in Python; there’s no such thing as an “integer variable” or a “string variable.” On the one hand, proponents of dynamic typing say that it’s a great thing — but on the other hand, many people working on large projects have pointed to the drawbacks of dynamic typing, and have long wanted at least some type-checking to come to Python. At this year’s PyCon, Python BDFL Guido van Rossum announced a new direction for Python, which signals a move, slowly and cautiously, in the direction of type checking for Python. What does this mean for existing code? What does it mean for the future of Python? If you’re a Python developer — or even if you’re using another dynamic language — it’s worth hearing from Guido has to say on this topic.
We don’t often think about it, but SQL is a programming language. As such, it has all of the issues that other programming languages have, even thought its style is quite different, and it’s restricted to a specific domain. Moreover, programming languages are themselves programs, which means that we can (and should) implement them with an eye toward efficient execution, which means considering the language in which the language is implemented. In this talk, Tiark Rompf shows parts of a database engine that he and his team have created in Scala (rather than C, which we would normally expect), showing us some of the things they’ve learned about writing and optimizing such a system.
Ember.js is a popular open-source framework for creating client-side Web applications. But over time, Ember.js has grown to include, or be associated with, a large number of other technologies. In this screencast, Jeffrey Biles introduces the many different members of the Ember.js family, and describes what they do, and how they work together. If you’re interested in client-side development, and especially if you’re interested in Ember, then this is a good, quick introduction to the different technologies you’ll be learning and using.
One of the great things about high-level languages is that you can depend on the existence of strings to work with text. Ruby is no exception; its String class is as flexible as it is useful. It’s hard to imagine a program that doesn’t use String somewhere. But how is Ruby’s String class implemented? And how can knowing this help us to write more efficient programs? In this talk, Chris Kelly (re)-introduces us to the innards of Ruby’s String class, and shows us how many parts of Ruby’s memory system interact when working with strings. If you’re a Ruby developer, you’re no longer to take string allocation for granted after watching this talk.
Continuing the discussion of Web security from yesterday’s lecture, today’s talk describes many of the vulnerabilities in modern Web applications — and then goes on to discuss how you can defend against them, as well as test your applications for such holes. Michael Coates, an expert in Web security, looks at some of the most common problems that Web applications experience.
Python is a popular language, in no small part because it’s so easy to learn. But the fact that Python is easy to learn doesn’t take away from the fact that it’s a deep language, with many advanced features. In this talk, Raymond Chandler III introduces some of these advanced features, demonstrating that Python has, to borrow a phrase from the Logo community, “low floors and high ceilings.”
Would you describe your code as “confident” or “timid”? That’s not a question I had really ever considered before watching this talk by Avdi Grimm, which shows how we can write code which doesn’t have to second-guess itself or its inputs. The code becomes easier to read and more maintainable. The examples all use Ruby, but can apply to many different languages, and particularly dynamic object-oriented languages.
The Web was originally aimed at people using browsers on computers. But the Web isn’t only for people any more, and they’re not only running browsers, and they’re not only using what we think of as computers. Does this mean that browsers are dead? Tim Bray describes the current state of affairs, and considers future trends in the computer industry.