[2018 oracle code one] evolutionary architecture in agile environment

Evolutionary architecture in agile environment

Speaker: Xavier Rene-Corail

For more blog posts, see The Oracle Code One table of contents


“Conflicts”

  • Not that we don’t have a plan. We have a plan. But it can change
  • Emerging design – do have a high level design. Not chaos
  • Things change. There’s nothing that will not change. Make easy to change the things that will/might.
  • Prototype architecture. Working software over comprehensive documentation. Architects shouldn’t deliver paper docs

Software architecture is

  • “the important stuff (whatever that is)” – Ralph Johnson
  • finding internal *abiities
  • managing conflicting *abilities and determining which is most important

Agility is

  • ability to move quickly and easily – Oxford dictionary

Evolution of architectural styles

  • Monolith – not scalable, single point of failure
  • Layered – defacto standard for JEE apps
  • SOA – natively scalable, but cn turn into monolith
  • Microservices – now need orchestration
  • Severless – abstract more

Beware of

  • Dependency hell/service dependencies
  • Distributed transactions

General

  • Minimize coupling
  • Couple fro highly changing to infrequently changing
  • Ask users for feedback. Don’t overarchitect
  • Feature flags. Make safe to fail
  • Eat an elephant one bite at a time. Design that way too

Decide up front – programming languages and frameworks. These are difficult to change.

My take: Good session. My notes are “less good” because I was eating lunch during the design principles. So listening, but not blogging! 

[2018 oracle code one] hands on lab JNoSQL

Hands on Lab: Eclipse JNoSQL: One API to Many NoSQL Databases

Instructors: Leonardo Lima, Otavio Santana, Senior Software Engineer, Hillmer ChonaPatricia Uribe & Jonathan Vila Lopez

For more blog posts, see The Oracle Code One table of contents


Lab URL: https://github.com/JNOSQL/oc1-hands-on-2018

Overview of NoSQL

  • No fixed data structure
  • not ACID
  • BASE -Basically Available, Soft State, Eventual consistency
  • Five types
    • key/value – Redis, Hazelcast, Couchbase
    • column family – Hbase, Cassandra
    • document – Couchbase, MongoDB, Riak
    • graph – Neo4J
    • multi-model – OrientDB, Couchbase
  • From most scalable/least complex to least scalable/most complex – Key/value, column family, document, graph

JNoSQL

  • First Jakarta EE specification
  • Mapping API – Artemis
    • Heavily based on annotation
    • “Query by” methods
    • Inject DocumentTemplate – has CRUD methods
  • Communication API – Diana
  • Trying to replicate JDBC/JPA for NoSQL
  • Traditionally, use different API for each NoSQL type
    • BaseDocument
    • Document
    • JsonObject
    • ODocument
  • DocumentEntity/Document – for all the types
  • Working on for 2 years
  • Almost up to 1.0 version
  • Configuration is one json file

My take: I like that they brought/shared their own wifi. Good overview at the beginning. I think I missed the point of the instructions at first. It felt too freeform. But then it made sense once they started explaining the code. So either it assumed knowledge or I thought we were doing something else. (I did get it to work; I just thought we were supposed to be doing something else.) Also, there was an instructor for each 1-2 attendees. Every time I went to do something (email, Slack, pull request), someone asked me if I needed help. I was waiting for Maven/Docker, not being idle! Also, not their fault, but the improvised lab room had sun blocking the screen. Overall, I enjoyed the lab. The second exercise clicked because I understood what we were doing!

[2018 oracle code one] how to program a quantum computer

You’re thinking too classically – how to program a quantum computer
Speaker: Tim Ellison
IBM

For more blog posts, see The Oracle Code One table of contents


General

  • When reach maturity of computers have today, will significantly outperform today’s classical computers
  • Need quantum computer to model quantum mechanics

Classical computers

  • Classical data and logic representation – data encoding (binary/ascii), logic gates (binary), computing circuits (built out of logic gates)
  • Need resilient bit store, data representation and algorithms. Don’t think about it much because data is reliable
  • Some problems are hard/not a good fit
    • Traveling salesman – 10 cities is 1.8 million routes. 20 cities is 1 billion billion routes
    • Optimizations (ex: minimize wastage cutting wood)- requires starting with a guess and trying all options
    • Modelling molecutes (simulate electron interactions – 25 electrons is laptop sized problems. 43 electrons ins Titan supercomputer
    • Modeling caffeine is impossible on today’s computers. But could represent in 160 quantum bits. And pharmaceuticals are far more complicated.

Quantum

  • Qubit in both 0 and 1 state at same time. Superposition
  • Collapses to a value when observe.
  • Can influence probability of it being a 0 or 1
  • Combine qubits to cause correlation of random results. Quantum entanglement “causes” both “linked” qubits to git save values.
  • Call experiments (vs programs) for quantum because results not deterministic
  • Power doubles every time add qubit.
  • 275 qubits is more states than number of atoms in universe
  • Fast to factor prime numbers using Shor’s algorithm [watch out security!]
  • Expect quantum computers to be used – chemistry, AI (classification, machine learning, linear algebra), financial services (portfolio optimization, scenario analysis, pricing)
  • Built with ions, photons, superconducting circuits.

Demo

https://quantumexperience.ng.bluemix.net/qx

  • 5 qubits
  • Get 21 units (since free, it is rate limited.) Once experiment completed, get results back
  • Can run on real quantum computer or on simulator
  • Result gives you the probability of different results
  • Shows openqasm. A quantum assembly language
  • H gate puts into superposition state
  • Large program runs in O(square root of n) vs O(n^2) complexity

Resources

  • Python API: https://github.com/QISKit – build, compile/transpile and execute
  • Run experiments: https://quantumexperience.ng.bluemix.net/qx

Journey

  • Science is well understood
  • Machines currently error prone. Nothing can do on quantum that can’t do on classical (yet)
  • Quantum Advantage – being able to benefit from quantum
  • Prediction: less than 5 years for chemistry. 10-15 years for breaking cryptography
  • Starting to build data centers in Poughkeepsie (upstate NY)

My take: The basics of this I’ve heard before. It was cool seeing IBM’s experiment generator used. It’ll be interesting seeing where this goes. The speaker said this was normally a 2 hour talk. I liked the part about applications of quantum and how they are built. I also liked seeing the assembly and graphical code.