I only had the chance to visit four presentations due to my participation at QDinner (an organised dinner with other conference attendees) the evening before and my early flight home. But two of the presentations were my favorites from the entire conference. (See Day 1 for my top pick, Rob Witoff’s discussion of Coinbase)
Trisha Gee: Real World Java 9
A very interesting presentation showing, very briefly, the new features in Java 9 - especially how to define and use Java 9 modules, aka. “Project Jigsaw”.
Most of the presentation was live coding on a Java 8 microservices application which made heavy use of Java 8 streams. This system got migrated to Java 9 and reactive streams. As Gee confirmed, the new streams don’t look that different from the old ones.
Still, they behave differently in the way they support the very important backpressure mechanism. This happens when a subscriber sitting at the end of a stream has issues handling the load. Throttling needs to take place that has to be handled properly by all former members of the chain.
A further differentiation of reactive streams to Java 8 streams is that they can have multiple consumers, which also asks for a different behaviour internally.
Unfortunately there was no time left to show the REPL. In total, however, one has to say that it was a quite promising outlook.
I can’t wait for the Java 9 release which will be this year.
Elaine Ou: Blockchain Introduction: Peering Through the Hype
Blockchain tries to overcome the need for trusting a central authority. Untrustworthy parties might be banks, government or even the counterparty you want to exchange money with.
Blockchain solves this by chaining all existing entries (blocks) together and distributing this storage to multiple nodes around the world. Heavy computations as a “proof of work” are required to add a new block to the chain.
The argument goes that nobody has the computational power to quickly add a lot of blocks and overwrite all others being added at the same time. Or at least the computational power is too expensive to do that.
Bitcoin uses blockchain and adds the mechanism to exchange money. So the popular mining process is nothing more than a race between different miners. Whoever is first to find the correct hash that allows a collection of transactions to be added to the blockchain gets the “proof of work”. Each block creation earns the miner a small amount of Bitcoins as a financial incentive.
Blockchain is applicable wherever people require a database to write to but don’t trust each other and are lacking a central authority.
Panel: Practical Cryptography & Blockchain
This was a panel of different experts around the topic answering questions from the audience. The question mainly focused around possible attempts to break bitcoin/blockchain and more or less explaining the concepts in more detail.
Panel: What’s Next For Our Programming Languages?
A very interesting panel discussion with experts from Microsoft and Oracle. Writing good specifications was one of the discussion’s highlights. It cannot be underestimated as it forces the writer to tackle the problem and the solution in detail.
Another notable topic was the differentiation between dynamic languages like Python or Ruby suited for prototype applications and static types ones like Java or C# better suited for non-prototype applications.
Since Martin Thompson moderated the panel, there was also a discussion of performance. One can hear people say quite often that their application doesn’t need to run fast, which might be true, but it absolutely has to run cheap. In the case of smartphones, where execution time costs battery, that is even more true and makes the former argument invalid. One should also remember that static typed languages remove the burden of type checking during runtime which logically results in better performance.