Every developer that has ever dealt with contra- and covariance in Java or Scala shivers with fear when they have to deal with these concepts in their code. Typically the solution is to click, click, click, click on the ‘suggested fix’ by the IDE until the error messages finally go away. All this panic is for nothing since at runtime all generics is erased anyway, and for this reason the Dart language made all generic types covariant.
However, fear no more!
In this talk, Erik will provide trauma recovery therapy for victims of variance by explaining the concepts from first principles using real world examples such as vending machines and garbage cans. For additional fun, we will throw in side-effects and show how the simplest possible covariant and contra-variant types are nothing more than the primitive collection types Iterator[+T] and Observer[-T]. Add the idea of self-application, Iterator[Iterator[T] c.q. Observer[Observer[T]], on top of that and we arrive at well known types Iterable[+T] and Observable[+T] that we cannot not live without.
And in case you wondered why Scala uses + for covariance and – for contravariance, and why a contravariant type in a contravariant position becomes a covariant type, well, that is for another talk.
As the Internet of Things (IoT) expands, tremendous amounts of data are being generated by real world devices. Data science and machine learning techniques are extremely useful for people wishing to make sense of this data. In this video, Nitin Borwankar talks about LearnDataScience, a series of IPython Notebooks designed to teach data science to developers.
There is much about the Pivotal Process that is strikingly different from how most software is written. This talk – originally a recruiting talk given at UCB – first describes the Cloud Foundry project and then dives into the Pivotal Process: the whats and the whys behind Pair Programming, Test-Driven Development, and Agile Product Management.
Lack of diversity isn’t just a social problem, it’s also a business problem. In this video, Kane Baccigalupi talks about different types of diversity, why companies should care about it, and what companies can do to improve themselves.
In this talk Phillip Webb provides a whistle-stop introduction to Spring Boot by showing how the “Spring Doge” demo application was built. He’ll show how you can combine AngularJS, Mongo DB and WebSocket technologies using Spring as the glue to hold it all together. He’ll also demo some of the “production ready” features of Spring Boot such as metrics and monitoring.
In this talk, Poornima Vijayashanker, founder of Femgineer, previously founding engineer of Mint.com, shares how she went from building software products and companies to teaching hundreds of people around the world to do the same. She covers challenges that tech entrepreneurs face when validating ideas, building products, and her strategies for helping them overcome those. Finally, she talks about how folks at Pivotal Labs could apply their strengths and knowledge to help this audience.
Crunch time. It’s that high-pressure period before a big deadline. But does it work? Should it be part of your Agile process? In this presentation, software engineer and Agile practitioner Ryan Tang makes the case that it shouldn’t. Extrinsic motivators like crunch time worked 100 years ago in the era of low-tech factories. Today, in the knowledge economy, the high pressures of crunch time makes workers less creative and less productive.
Sharethrough makes it easy to embed ads in a native iOS app, by using their iOS SDK. This SDK enables developers to make money off their app by incorporating ads that have the same look and feel as the rest of the app. Neel Patel gives an intro this SDK, how to incorporate it into your project, and various ways to customize the appearance of the ads that are served.
Ambiguity is something that all projects have to deal with, particularly on the product and design side. By participating early in the design process, engineers can both understand and help to mitigate this ambiguity. In this talk, Rachel Kroft talks about how engineers can participate in various parts of the process, including user interviews, design reviews, and prototyping.
Riak is a distributed database that has historically been a “eventually consistent” system. Version 2 introduced the option to configure it as a strongly consistent system, opening up more flexibility to developers. In this video, Jordan West talks about the advantages of Riak, and some of the biggest changes between versions 1 and 2.