jeanne conference speaking

Last year, I started speaking at conferences more. Before that, I did a lot of “applying to speak at conferences without getting accepted.”

In December 2016, one of the speakers at the NY Java SIG cancelled. Frank Greco asked some of us regulars if we could speak (on a few days notice.) I sent a list of topics I could speak about. One was mutation testing. I did a great job and Frank recorded it on YouTube. Being able to include that in my speaking proposals made a difference. Or there was a strong correlation. Who knows.

Once I started speaking more, I was able to establish a good reputation.

Last week, at QCon, I got 94% green:

And I’m listed on the featured speaker page for Oracle Code One.

I enjoy presenting. I joined Toastmasters to get better at relaying technical information in an engaging/entertaining way. I think I’ve succeeded.

eclipse photon (4.8) for the mac

eclipse.org went with a mountain peaks as the website theme for the release of Photon. Fun and fitting. The Eclipse site prompted me about the cookie use policy. Another change since last year, but not unexpected.

The matrix comparing the packages is still clear. The Java version is a subset of the Java EE version. I chose the later since it has the JavaScript tools built in. Unlike the last few years, a sponsored/commercial version wasn’t featured prominently. In fact, I didn’t notice one at all. Vaadin and JRebel do show as sponsored/promoted plugins in Eclipse Marketplace though so no risk forgetting about them!

Installing

I like to download and install a fresh Eclipse so I don’t have random plugins I’ve tried throughout the year. I downloaded the installer first which is a nice small, well relatively small, (55MB) file. I choose “Eclipse IDE for Java EE Developers” and an installation folder. This took a few minutes. I saw messages go by about it being slower than usual to download Eclipse plugins from various servers. Presumably because Photon has only been out a few days and lots of people are downloading.

I got a prompt from Oomph to accept /plugins/org.eclipse.rse.ui_3.3… as unsigned content. I accepted, but was a little surprised.

Then I was able to open Eclipse

 

Installing the plugins

Already installed were:

  • m2e (maven)
  • BuildShip (gradle)
  • EclEmma (code coverage)
  • JUnit (3, 4 and 5)
  • eGit (git)

The significant plugins I chose to re-install are listed in this table.

Plugin Purpose
Eclipse Tomcat Plugin One click launch for recent versions of Tomcat. (This is the successor to Sysdeo and Mongrel)

Problem/resolution

I got a PKIX error. But clicking through it still allowed me to install so I didn’t have to update the certs or anything.

Unable to read repository at https://devtools.his.de/tomcatplugin/updatesite/content.xml.

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

This is a known issue. In my case, it was caused by the eclipse.ini automatically picking up my Java 11 early access install. After changing it to point to Java 8, things went better. This allowed it to pick up the cryptography jars and work as expected.

SonarLint I reply heavily on SonarLint. It gives you static analysis findings in Eclipse. I also included the SonarLint Java Configuration Helper so it can see the version of Java I am using. (I”m on Java 8 right now so this is redundant at the moment. But I’m ready for when Java 9 comes out.)
Subclipse I trouble with Subversive in Eclipse Oxygen so I switched to Subclipse. I would have needed to switch this year regardless as Subversive is no longer supported.
Eclipse Memory Analyzer For finding memory leaks.
Freemarker IDE Freemarker syntax highlighting and macro assistance. Unlike with Eclipse Oxygen, this worked on the first install attempt.
Pydev Python plugin/perspective
Contrast To spot potential security issues. See my impressions of the Contrast plugin.
Bytecode Outline I’ve been looking at bytecode a good fit for the book to make sure I understand why things are happening. This plugin makes it easy. The version number has hex towards the end; maybe the number from github?
Pitclipse For mutation testing coverage

 

What excites me

  1. When searching using open resource/type, exact matches take precedence (vs files you looked at with similar name.) Also, it now shows the path in the workspace regardless of whether the filename is a duplicate. Both are nice usability improvements.
  2. The UI changed for the debugger. I like that you can see more variables in the debugger view without having to scroll or resize the window.
  3. There’s now a workspace option to “Sort library entries alphabetically in Package Explorer”. This makes it easier to find things than the default order (which is the classpath.)

What I didn’t like

  1. On Mac, the default font changed from Monaco to Menlo so keywords show in bold instead of just color. This was more of a “change is hard” thing. The first day, I didn’t like the new bolding. I wasn’t used to it so the keywords looked different. By the second day, I was used to it and it was just readable as the original. (I know I could have changed my workspace default back to Monaco if I continued to not like it).

Other interesting features

  1. Eclipse now supports Rust. I haven’t used it, but Rust is supposed to be an up and coming language.
  2. Eclipse supports Java 10 out of the box. Not that interesting because Java 10 came out in March. But good to know that Eclipse is staying current. I imagine there will be an Eclipse 4.8.1a in September or October for Java 11 support since Java 11 comes out in September. Eclipse did this for JUnit 5 so there is definitely precedent.
  3. JUnit 5 is included. This doesn’t excite me because I had been using 4.7.1a which also had JUnit 5 support. But if you are upgrading from the release a year ago, it is definitely exciting!

QCon 2018 – Mob programming mini workshop

Title: Mob programming mini workshop: a whole team approach to the code
Speaker: Harold Shinsato

See the table of contents for more blog posts from the conference.


[I’ve heard this term before, but never experienced it. Curious to see how this goes!]

Concepts

  • “All the brilliant people working on the same thing, the the same time, in the same space, on the same computer” – Woody Zuill
  • Turn up the good.  A team would rotate who types to solve the problem.
  • Far less bugs/tech debt
  • More productive than working individually [that’s not the right comparison]
  • Harold uses at Montano code school.
  • Requires kindness, consideration and respect. Takes time to learn. Psychological safety and empathy are important.
  • The team decides what to do and how to do it. Can’t force it. Just like forced pair programming doesn’t work.
  • Important to go in with plan to experiment and see what works.
  • Mobs of three good for coaching. Hunter uses mobs of 5-8.
  • Rotation time varies. Can switch every 15 minutes or just have one driver.
  • Mob worked with 50 people with language puzzles to learn/work through koans.
  • Introverts need to check out regularly. And that is ok (for mobs larger than 5) because flow continues. A teammate catches up on what you miss.
  • Gets people up to speed faster.

Roles

  • Coach
  • Driver – typist. Can’t have ideas. Just types. Smart input device.
  • Navigator – everyone else. Helpful to start with one navigator so can practice not talking when know answer. Need others to practice leadership and develop expertise.

Problems with pairing

  • Like a date. Awkward if doesn’t work out.
  • Mobbing is safer because in a group. No one person is a single point of failure.
  • Mobbing makes it easier to pair later. Harold uses mobbing before students pair

Strong pairing – where person at keyboard can’t make decisions

Demo – FizzBuzz in JavaScript

  • Updated JavaScript to make tests pass
  • Driver rotated on time or on passing tests. Time better for teaching as rotate faster. Did short iteration of 3 minutes to practice swapping.

Group Retrospective

  • It was obvious to me what needed to be done before it was to the navigator. It felt awkward and timewasting to not say anything
  • It felt really slow [probably because we were all new]
  • As driver, I wanted to go faster than the navigator
  • Hard to see vision. In a real mob, might draw out a plan

In practice

  • Supposed to improve team in long run
  • If someone knows most, they are primary navigator and turn into a leader – helping others.
  • Get better at using tools
  • Mobs of 8 good for teaching
  • Hunter is most experienced of mobs. Switch every 15 minutes.
  • Can speak at higher level if driver understands.

An audience member at Vanguard says her team does this once a day with eight developers.

My take

It would have been helpful to explain what mob programming is before asking who does it and for details. It was interesting to try. I would have liked seeing a video of a good mob doing it too. I can see how this is helpful for learning, but not actual tasks. Which is what people said about pairing at first. (or still do.) So I recognize that I don’t  have enough information/background to appreciate that.

After the session, I talked with an attendee who works at Vanguard. She says they do mobbing at two points:

  • for an hour a day to accomplish a stretch goal (where it sounds like the whole team is learning together)
  • organically – when one person ask another for help, who pulls in another and before long the whole team is involved