[2019 oracle code one] AMA Java

Everything You Ever Wanted to Know About Java and Didn’t Know Whom to Ask 

Speakers: Everyone 🙂

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


Q&A

  • What is the best way to get a new method/feature into Java?
    • Discuss, open JEP, debate. Search Thread.onSpinWait() for an example
    • Discussion first is important. Starts discussion about problem. The code provided isn’t always the best way to solve it.
    • The thing that ends up happening is not what you started with
  • How to integrate collection PL/SQL in Java?
    • <missed answer>
  • Why is TreeMap implemented as a red black tree?
    • best/only way to do it
    • balanced tree
  • Is Java too slow?
    • Always want faster
    • Not too slow for a language with a statically compiled language
    • Tune for use case
    • Java will work faster on CPU don’t have yet. JIT compilers will optimize for it.
  • Is String interpolation coming?
    • Java 12 “briefly” had raw string literals
    • Recognize sprint interpolation is valuable
    • Need to figure out a way to do cleanly
    • Need to get multi line done. Then escape sequences. Then string interpolation
  • How move past Java 8?
    • Business and technical question
    • First step: will it compile/run
    • Don’t need to rewrite everything with new features
    • Business might not want to spend money on technical problem
    • A handful of people have only Java 11 in prod. Many people have one app/POC in prod. A lot of people only Java 8.
    • Java 9 and 10 is irrelevant. Nobody supports. Binaries not rebuilt with security updates.
    • The technical challenges are libraries that used Unsafe or assumed version strings begin with 1.x.
    • Evangelism message: upgrading to a higher version of Java is just like upgrading to a later version of 8.
    • Counterpoint: People have jars that don’t run on 11.
    • Sometimes features or APIs are removed.
  • How do you look at OSGi?
    • Nobody does anymore
  • Are you happy with the new release cycle?
    • Bruno interviewed Brian Goetz who said he was skeptical at first, but now done four times and smooth.
    • Java 13 came out this week. Brian was at Code One. Not managing process. No longer have months of meetings about release.
  • Deprecate serialization?
    • No plans
    • Many problems.
    • There is a need for something like serialization.
    • Brian wrote up ideas: http://cr.openjdk.java.net/~briangoetz/amber/serialization.html (Not a proposal for replacing serialization)
  • How do we keep up with six month releases?
    • Try when come out.
    • We know when they come out
    • Not a lot will break if do each time
    • Counterpoint: Play on laptop, but don’t use features until LTS comes out. If using 12.0.2 and security issue, you have to run 13 when it is 3 weeks old. Going to prod on feature release is risky.
  • Real tuples in Java?
    • Proposal for records in Java
  • Is it possible to break a nested loop in Java?
    • Yes with labels. [but please don’t].
  • Fixing exception handling on lambdas
    • Aware of issues
    • Not convenient to deal with
    • Ideas, but no current plans
  • Map on how to choose a JDK for a given use case
    • AdoptOpenJDK and Java Champions discussing how to create that map
  • New features we are looking forward to
    • Value types
    • Pattern matching
    • Generic specialization
  • How long will Unsafe be around
    • However long it takes to pull out all the useful features
    • ex: Java 9 var handles
    • Will take years
  • Low level libraries that are useful
    • ASM
    • Byte Buddy
  • Type extraction on return values
    • Return a tuple and set to multiple variables
    • “Let’s compare Java to Kotlin”
    • Could write something like it with pattern matching
  • Why are Strings in Java harder than other languages?
    • Strings have evolved
    • Unsolved problem
    • Changed a lot underneath
    • String concatenation now performed by invoke dynamic

My take

I like how he accepted questions both verbally and via Twitter. The variety of questions was fun. I like that Gil asked the “who is on Java 11” question well. He asked granularly enough to answer honestly and realistically. Stuart did a great job with his Dr Deprecator character when there was discussion about APIs being removed.

[2019-oracle-code-one] Your Project, Brand, and Career

Your Project, Brand, and Career: Bring Attention to Your Project or Blog

Speakers: Yolande Poirier, Kenneth Kousen (@kenkousen), Donald Raab (@TheDonRaab) & Alexa Weber Morales (@WorlWindWriting)

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


General

  • When we blog, we are trying to create long tail content.
  • Ken Kousen gave a shout out to this blog. I’d write more, but it’s be recursive 🙂 [Click here for details]
  • Alexa switched from Twitter to YouTube. Didn’t transition audience.

YouTube

  • Form audience member: YouTube one directional. Twitter overwhelming.
  • Alexa suggested using same material on multiple channels. Ex: Convert youtube content to blog posts.
  • Yolanda runs @java youtube account. Can get transcript. Alexa said kludgy. Yolanda said teh transcript isn’t good because doesn’t understand tech terms. Rev.com sells better transcript for $1/minute
  • YouTube will penalize you if no written content. Be sure to tag.
  • Ken has a podcast which is part of a youtube channel.

Starting

  • What are you working on right now?
  • Blogs are about sharing.
  • Can share as learn and people see progression.
  • Ken’s blog is called “stuff I’ve learned recently”
  • Ken suggested thinking of blog as notes to yourself.
  • Write for self. Don’t assume initial content will get read.
  • Need to advertise first blog to get audience.

Blogging

  • Following increases over time as more people discover it. Important to have new content out there regularly.
  • Don tries to keep blog posts to a 3 minute read
  • Don posts executable code
  • “Whale post” – long post (ex: 2000 words). Some people will go back and update.
  • People like to see their (full) name. Interviewing people will get them to read it.
  • Guest posting
  • Present with someone/co-author with someone – spreads there name recognition
  • Blogs have stats
  • “Dance like nobody is matching; Blog like you are testifying in court” – Ken
  • Don blogs about open source so nobody thinks about his current work.
  • Don’t need focus. The focus is you. People will Google what need and look at your other posts. Ok if they are interested or not.
  • Write articles for InfoQ or DZone and follow up with blogs
  • Combine topics with tags

Where publish – once or everywhere

  • Medium posts can group/collect posts. Ex: Android
  • Ken used WordPress blog hosted there.
  • SEO = don’t repost
  • Don has goal to blog at least monthly. Will sometimes post at 11:59 on last day of month.
  • Ken noted can pay extra for own domain so not obvious hosted on wordpress. Also dev.to, github.io pages
  • Alexa said to make sure to use a CMS so get SEO advantage
  • Can set up to automatically tweet about new blog posts.
  • If write newsletter, make blog post as well
  • Scott noted you can pipe your blog to Amazon. [we do that]
  • Alexa speculated that walled garden approach is going down. Once something viral, it’s everywhere. So harder to wall off content and require pay.

My take

The presenters have a great rapport It was a great session for the final day since it was less “technical”

[2019 oracle code one] DevOps Theory vs Practice

DevOps Theory vs Practice: A Song of Ice and Tire Fire

Speakers: Viktor Gamov (@gamussa) & Baruch Sadogursky (@jbarauch)

Deck: https://jfrog.com/shownotes/

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


Humor from imaginary thought leader (make sure you enjoy sarcasm in this section)

  • “Everybody’s software must be releasable at absolutely any time” – even if drunk?
  • “Everyone must have 100% test automation” – even if release 3-4 times a user to 2-3 users. cost makes sense
  • “We do Continuous Security well” – even if hire security person so have someone to blame
  • “Your greatest threat is an outage. Not an employee; just trust your employees” – even if CIO leaves bus with all data.
  • “VMs are the enemy of DevOps. This is where you must focus your innovation, Docker and Kubernetes” – Even for app just migrated from mainframe and not container ready
  • “You are a beautiful unique snowflake as are your problems. No vendor could possibly understand them.” So should invent own framework b/c written by other people.
  • “Our company is based in SF b/c that’s where the best engineers are”. Expensive b/c rent high

Four Questions

  • Is org/team ready to adopt new tech?
  • Is it even good tech? What do you know besides the demo? Where is it on Gartner’s hype curve? Thoughtworks Technology Radar – https://www.thoughtworks.com/radar
  • What problem do I solve by using this tech? What problem are you trying to solve? Not resume driven development
  • Will solving this problem help my organization?

Random notes

  • You are not NetFlix. Running chaos monkey on your network of ATM machines not a good idea.
  • Master Excel or Google Spreadsheets

Maturity models

  • Think about capabilities when trying to accelerate software development, not maturity models
  • Bad maturity models are bad
  • Bad models – goal driven. Get to goal and then are “done” improving, one size fits all from book, checkboxes for tools, write and forget
  • Good models – process driven, focus on outcomes
  • Components – evaluation factors (ex: is there a CI process), scoring methodology (is there partial credit), self assessment vs 3rd party assessment (how know if good process), progress tracking (of evolution), visualization (to show to people with different levels of involvement)
  • Different levels of detail for capabilities
  • Account for priorities of different teams – engineering, ops, business
  • Only use primary colors
  • Involve team in involving model definition and assessment
  • Partner with forward looking teams
  • Evolve model over time

My take

The intro was hilarious. The content was good as well 🙂