gson supports records

I like using records in Java and getting rid of the boilerplate on my immutable objects. I also like using gson (google’s serialization/deserialization library) for my lightweight JSON needs. All I need is an annotation to use a different field type. (For complex parsing I use Jackson)

Suppose I want parse this

var json = """
   {"first":"Mickey",
	"last":"Mouse",
	"birth_year":1928}
	""";

For example before records, I would write:

class Name {
	 private String first;
	 private String last;
     @SerializedName("birth_year") int birthYear;

     // boilerplate methods
}

I needed to use my IDE to generate a constructor, getters, and a toString(). And additionally, equals/hashCode if needed for that class.

In Java 17, I switched to records. I didn’t realize I could use them with gson annotations until recently. Turns out all I need to write is:

record Name(String first, 
   String last, 
   @SerializedName("birth_year") int birthYear) { }

The parsing code remains the same

var gson = new Gson();
var name = gson.fromJson(json, Name.class);
System.out.println(name);

FTC Judge vs Judge Advisor

I’ve been judging FTC (FIRST Tech Challenge) competitions for many years. It’s a lot of fun. The kids tell you about their robot and outreach and learnings and more. You also negotiate with other judges to determine the award winners. And the day ends with some super excited kids finding out the result. It’s a great day.

There’s also a judge advisor role. The description includes

The Judge Advisor coordinates the judging process, which includes facilitating group deliberation sessions, ensuring the award decisions are made, and the awards script is written. Sometimes the Judge Advisor trains judges and can help in scheduling the judging interviews. The Judges, Judge Advisor Assistant, and Judge Match Observers look to the Judge Advisor for training materials, schedules, and other general questions throughout the
event.

I was asked a few years ago about being Judge Advisor and passed. I like judging a lot. The judge advisor doesn’t get to interview the teams or make any decisions/negotiate. They are a manager and facilitator.

I got to the event on Saturday and was greeted with the event coordinators telling me their judge advisor couldn’t come unexpectedly and could I do it. I said yes. While it isn’t my first choice of role, I am qualified to. I was also the most experienced judge in the room (by a good amount.) I also appreciate that they asked/told me in the form of a question. If they had asked me two weeks ago, I’d have said no because there was still time to find someone more excited about the role. Day of, choices are limited!

What’s interesting about the combination of managing and facilitating is that I very much like facilitating and very much dislike managing. I was able to train folks, form groups, enforce standards and keep things on track.

I definitely relied on crowd sourcing. I wrote constraints on the board and explained what I was trying to accomplish for groups. Having a dozen people “check your work” real time is great quality control!

Overall, it was fine. We accomplished what we needed to and the judges/event staff were happy with how things went. But I still greatly prefer judging and will continue signing up as a judge for future events!

ChatGPT for education – is it like a calculator?

At the NYC FRC (FIRST Robotics Challenge) local kickoff, there was a speaker from Columbia about AI. The target audience was high school students. He said two things that stuck with me. First was:

Self awareness is the ability to imagine yourself in the future; the farther in the future, the more self aware

He also noted that his dog can imagine himself about a minute in the future. Like eating the food about to come. Humans can imagine further out of course.

The other was about AI being like a calculator. I like that analogy. It shows that using ChatGPT isn’t a replacement for learning how to write/code/etc. We don’t let kids use a calculator on tests until they already know how to add. And you don’t want to have to go to a calculator or pull out your phone to add 5 + 8!