Friday, June 22, 2012

Uberconf 2012 themes, trends, observations

What's hot:

Mobile.  This market is growing explosively.  My dabbling in Android programming is OK for a hobby, but to seriously compete in this space you have to cover at least Android and IOS, IOS being the more important.  Solution is either stick to HTML5+CSS3+Javascript, losing some performance and device-specific capabilities, or go with a framework like PhoneGap or Titanium.

Javascript.  It's standardized and ubiquitous.  Javascript and AJAX will be the key to rich web content in the post-Flash world of HTML5.  No one wants to deal with the flaws (browser compatibility issues, for one) of plain vanilla Javascript, so there's an accelerating profusion of frameworks.  There's growing recognition that Javascript's lack of multithreading is a problem.

Gradle.  Gradle recently made it to release 1.0.  I have it in mind to learn more about this and start using it.  Too bad Spring is so joined at the hip with Maven these days, but I wouldn't be surprised if that changed soon.

NoSQL databases.

Conspicuously absent:

The big emphasis on concurrency and multithreading.

Book sales.

Round table discussion.

'No Fluff'... There was an actual vendor booth.  Gradleware is definitely one of the good guys, but this was still a conspicuous departure from the NFJS tradition.  Will this be the first step down a slippery slope?

Random observations:

The MacBook Pro is still a popular choice.

My impression was the presenters were more slack than in the past about having their slides ready on time.  Does this have to do with the iPads?  I suppose when the slides were being printed they had to be delivered earlier.  I liked not lugging the binder full of printouts around, but just having everything on the USB drive, on time, would have been fine with me.

Uberconf day 4

Scott Bain "Sustainable Test-Driven Development"

"In TDD, we are conducting an analysis to create the functional specification."

Tests aren't tests, they're requirements.  I agree with this line of reasoning, but non-programmers won't accept requirements that are written in code.

"A good test is a unique test."

"Behavior-based Analysis and Design"

I was a little worried this was going to be all review for me, but he touched on some points I never thought of.  Good presentation.

Oleg Zhurakousky "Enterprise Integration Patterns with Spring Integration"

I like this guy... he's got a MacBook Pro and he put a sticker over the glowing Apple logo.

Great presentation.  I feel like I learned the maximum possible in 3 hours.

Plus another endorsement for Springsource STS.

Lunch

I sat down next to Craig Walls at lunch and he gave me a Spring Roo t-shirt.  Cool!

Craig Walls "Client-side MVC: Web and Mobile Development with Spine.js"

"Knockout has an awesome tutorial."

"Mobile extension Spine Mobile"

Once Craig got into the details, this was a bit over my head. Looks cool but I'd need to come up to speed on CoffeeScript first.

"REST API follows Rails convention."

Spine apps can be wrapped in Cordova/PhoneGap.

Links

Approaches to Legacy Code
Lean-Agile Resources

Thursday, June 21, 2012

Uberconf day 3

First stop is Craig Walls "Spring Data Workshop".

We're looking at Spring Data support for JPA, MongoDB, Neo4J, Redis.

Craig zipped up his Maven repository and passed it around the room on a couple of USB drives to address the problems we experienced yesterday.

"Don't use JPA Templates... it's just there for consistency.  Exception translation is not needed for JPA.  Works similar to Hibernate contextual sessions."

"Spring Data = GORM"

This was one of the better presentations so far.  Craig was up all night working on a solution to the previous day's problem which proved effective.

It was refreshing to hear Craig endorsing Springsource STS (Eclipse) and disparaging IntelliJ/IDEA...  quite a change for this formerly IDEA-centric venue.

Venkat Subramaniam "Mastering Javascript"

"Gets are deep, sets are shallow."

I never got past the casual use of Javascript, and that was about 2 years ago, so  good review, plus some off-the-beaten-path stuff I don't think you'd find in the O'Reilly book.

"It's hard to get Javascript right, so don't actually write Javascript."  Venkat recommends CoffeeScript.

Szczepan Faber "Mockito Workshop"

Unit testing is an area of special interest for me.   I would like to learn more about Mockito but this just wasn't an effective presentation.

This guy just started coding like a demon with almost no introduction or discussion.  No one could keep up.  After a while he started pushing to his git repository at regular intervals and the rest of us could keep up doing git pulls.  So this turned into more of a coding demonstration than a workshop.

Even then he was doing a lot of refactoring and seemed to focus on developing his application more than demonstrating the features of Mockito.

I didn't come back for part 2 of this.

Pratik Patel "Mobile Development Options"

Lots more technical detail than yesterday's Nathaniel Schutta presentation, focused on PhoneGap and Titanium.

"Titanium's run-time performance is way better than PhoneGap/Cordova."

Keynote: Matthew McCullough "Adam Smith builds an application"

Links

Infinitest Eclipse or IntelliJ/IDEA runs your unit tests every time you save

Wednesday, June 20, 2012

Uberconf day 2

"Effective Spring Workshop" with Craig Walls was disappointing.  The presenter set up an application for all of us to download and work on together.  There were about 100 people in the room all trying to get dependencies for this application with Maven all at the same time.  Apparently it's quite possible for Maven to download the first half of a file, then time out and abandon the download attempt, leaving a JAR file sitting there in the directory, then at the next download attempt seeing that JAR file present and assuming it doesn't need to be downloaded.  You'd think there'd be some logic with checksums or something, but no.

I gained a new appreciation for the shortcomings of Maven today.  My Maven repository was so corrupted after this, I wound up recovering $HOME/.m2 from backups when I got home in the evening.  Everyone was cracking jokes about Maven in the aftermath of Tim Berglund's poem the previous night.

I wish there had been something in writing for this one.  I spent probably 2/3 of the sessions trying to get the application up and thus was only half paying attention to the lecture.

Profiles is a cool new Spring 3.1 feature I had not heard of before this.

"Designing for Mobile" by Nathaniel Schutta: non-technical presentation emphasizing the explosive growth of the market for mobile devices and apps and some special considerations developing for mobile platforms.  This was pretty good, kind of a nice break from all the technical workshops without being a waste of time.

"Building Next Generation Apps" by Craig Walls.  "Next Generation" = mobile.  Due to the technical issues with Maven and the limited network bandwidth already mentioned, Craig did this as a lecture rather than a workshop.

This covered a lot of ground, some of it familiar to me (Spring MVC, OAuth), some new to me (Spring Security and Spring Security for OAuth, Spine.js, CoffeeScript, Spring Data for Neo4J).

"Servlet filters are aspects."
"Adaptive rendering is wasteful of resources on a mobile device."

Venkat Subramaniam keynote

I missed the title of this one and it didn't appear on the schedule.  Something about how computer languages have evolved over time.  One of the points he made was how functional programming was invented in the 50s with LISP, went out of style and is now being embraced again for the sake of immutability in concurrent programming.  "There's nothing new under the sun."  Viewing the languages we use now as 'bridge languages' to the better languages to come.

"Applying Groovy Closures for Fun and Productivity" by Venkat Subramaniam.

I haven't given a lot of thought to Groovy lately.  This language rocks.  Why aren't we all using it?

Links

 All of Venkat Subramaniam's content on InfoQ
Redcar TextMate-like editor for Linux

Tuesday, June 19, 2012

Uberconf day 1

This time the James Bond USB drive is disguised as a pen.

They're offering a choice of five all-day workshops for the first day.  Big improvement over 2 years ago when it was iPad only.  I'm doing the Android workshop.  Here are the slides and stuff.

Apparently we're going to be issued (loaner) iPads with all the handouts on them.  We'll see how this works out.

"Stackoverflow.com is the official Android support forum".

The Android Sources plugin will organize your Android source code so Eclipse can find it.

James Harmon brought easily enough Android material for 2 days.  I think I could have handled another day.  I feel like I'm at a point where I could mostly work through the rest of this material myself, except where would I ever get that kind of time?

Great keynote from Tim Berglund "Then Our Buildings Shape Us", plus "The Maven".

Links:

AndroidDevTools

Monday, June 18, 2012

Twas the Night before Uberconf

I'm going to Uberconf tomorrow.  As usual the schedule poses some tough choices.  I'm going to keep the focus on Spring and mobile where possible.

Some of the presenters are tweeting about a power outage in Westminster.  I presume that's at the Westin. Power is fine here.