Friday Jun 08, 2012

Call For Papers Tips and Tricks

This year's JavaOne session review has just been completed and by now everyone who submitted papers should know whether they were successful or not.  I had the pleasure again this year of leading the review of the 'JavaFX and Rich User Experiences' track.  I thought it would be useful to write up a few comments to help people in future when submitting session proposals, not just for JavaOne, but for any of the many developer conferences that run around the world throughout the year.  This also draws on conversations I recently had with various Java User Group leaders at the Oracle User Group summit in Riga.  Many of these leaders run some of the biggest and most successful Java conferences in Europe.

  • Try to think of a title which will sound interesting.  For example, "Experiences of performance tuning embedded Java for an ARM architecture based single board computer" probably isn't going to get as much attention as "Do you like coffee with your dessert? Java on the Raspberry Pi". 
  • When thinking of the subject and title for your talk try to steer clear of sessions that might be too generic (and so get lost in a group of similar sessions). 
  • Introductory talks are great when the audience is new to a subject, but beware of providing sessions that are too basic when the technology has been around for a while and there are lots of tutorials already available on the web.
  • JavaOne, like many other conferences has a number of fields that need to be filled in when submitting a paper.  Many of these are selected from pull-down lists (like which track the session is applicable to).  Check these lists carefully.  A number of sessions we had needed to be shuffled between tracks when it was thought that the one selected was not appropriate.  We didn't count this against any sessions, but it's always a good idea to try and get the right one from the start, just in case.
  • JavaOne, again like many other conferences, has two fields that describe the session being submitted: abstract and summary.  These are the most critical to a successful submission.  The two fields have different names and that is significant; a frequent mistake people make is to write an abstract for a session and then duplicate it for the summary.  The abstract (at least in the case of JavaOne) is what gets printed in the show guide and is typically what will be used by attendees when deciding what sessions to attend.  This is where you need to sell your session, not just to the reviewers, but also the people who you want in your audience.  Submitting a one line abstract (unless it's a really good one line) is not usually enough to decide whether this is worth investing an hour of conference time.  The abstract typically has a limit of a few hundred characters.  Try to use as many of them as possible to get as much information about your session across.  The summary should be different from the abstract (and don't leave it blank as some people do).  This field is where you can give the reviewers more detail about things like the structure of the talk, possible demonstrations and so on.  As a reviewer I look to this section to help me decide whether the hard-sell of the title and abstract will actually be reflected in the final content.  Try to make this comprehensive, but don't make it excessively long.  When you have to review possibly hundreds of sessions a certain level of conciseness can make life easier for reviewers and help the cause of your session.
  • If you've not made many submissions for talks in the past, or if this is your first, try to give reviewers places to find background on you as a presenter.  Having an active blog and Twitter handle can also help reviewers if they're not sure what your level of expertise is.  Many call-for-papers have places for you to include this type of information. 

It's always good to have new and original presenters and presentations for conferences.  Hopefully these tips will help you be successful when you answer the next call-for-papers.

Tuesday May 29, 2012

Adding a serial console to the Raspberry Pi

I finally found some more time to do some more on the Raspberry Pi.  As part of a much bigger project I'm working on for this it looked like I'd need to rebuild the kernel to include and modify some drivers (which will take me way, way back into my past doing UNIX development at AT&T).  Knowing the way these things go I decided to prepare for the worst, i.e. a kernel that fails to boot properly.  To get as much information as possible it's always good to be able to see the boot messages direct and, after a bit of searching, I found that the kernel boot messages are all output to the serial port on the Raspberry Pi.

Serial ports can be a bit misunderstood since some people tend to use RS-232 and serial communication interchangeably which can lead to some serious disappointment (and cost).  RS-232 uses 12V whereas the UART (Universal Asynchronous Receive and Transmit) which generates the bits is either a 3.3V or 5V device (depending on the board design).  To have the UART on the Pi communicate with the serial port on my PC I would need a conversion circuit.  I've used this before when I did a demo using the WowWee RoboSapien where I had a Sun SPOT connected to the console of the robot via a serial connection.  The necessary circuit is shown below:

MAX3232 Circuit

Note that the 9-pin D-type connector is shown from the front, so you need to remember that when soldering the wires on.

The connections to the Raspberry Pi are made on the GPIO expansion header.  A diagram showing which pins are which can be found here.

Having tested the configuration on a breadboard (always a good idea) I made a small veroboard implementation.  The final result is shown here:

Raspberry Pi Serial Console

To communicate I use good old PuTTY.  The necessary settings are:

  • Speed: 115200 baud
  • Data bits: 8
  • Stop bits: 1
  • Parity: None
  • Flow control: None

Using this I can now see all of the boot messages (and won't lose them if the video were to stop for whatever reason) and I can login over this connection as an alternative to SSH.

Monday Apr 30, 2012

JavaFX on the Raspberry Pi

Over the last few days I've been playing with the Raspberry Pi board (I was lucky enough to secure one of these as part of the work Oracle is doing to ensure that Java runs smoothly on it). 

Initial setup was pretty straightforward although I did need to check the current rating of the power supply I was using as the board needs 700mA, which is more than a normal USB port or hub supplies.  I used Win32DiskManager to copy the OS image to an SD card and then gparted to resize the partition to use the whole 8Gb on the card rather than just 2Gb.  Since I don't have a spare monitor I decided to do most things remotely over the network and set up sshd without any problem.

There is an OpenJDK build for ARM, but it doesn't have JIT support, so performance is not optimal.  Oracle provides a commercial implementation, which does have JIT support, so I downloaded and installed this which was painless. (The only thing to note here is I used the vfp version of the JDK).

Next, I figured I'd have a go at building JavaFX from source.  I grabbed a snapshot and set about seeing what needed to be done.  The first problem was that the reported platform didn't match anything in the build description (ARM v. x86).  Being a bit lazy I cheated.  Rather than configuring a whole new set of build rules I just overrode the architecture setting and forced it to i586.  Since the compiler is ARM, what's the worst that could happen?  This got me started, but then I bumped in to issues with some of the native media code compiling with SSE2 optimisations that don't exist on ARM.  A short learning curve later I switched to the ARM NEON equivalent, changed some definitions and got a bit further.  There were a few more issues around missing packages and left over .o files and then a stroke of real luck. 

Someone in Oracle contacted me to say that we already had an internal build of JavaFX for ARM which had been done for the Beagle Board and pointed me to where I could download it, which I duly did.  I copied over all the necessary bits as well as one of my own, simple JavaFX apps compiled into a jar.  After a few command line mis-starts I had JavaFX up and running on the Raspberry Pi!

Here's a quick video that shows the results:

At the moment this is as far as I've got.  I did try a more complex application, but ran into a problem with a missing library.  Something to track down later.

Getting the remote desktop working was a bit of a challenge, but not because of anything to do with the Raspberry Pi or Java.  Initially I thought I could use ssh -X and then project the X application (JavaFX) back to my Mac so I could do the screen capture.  Although this worked fine if the client machine was Linux every time I tried it on Mac OS X I got an access error for MIT-SHM.  It seemed the X environment was trying to use shared memory, which when the client and server are on different machines is not going to work.  I tried several ways to try and convince the system not to use the shared memory extensions, but it just wasn't happening.  In the end I gave up and decided that the path of least resistance was to use VNC and have the whole desktop visible on the Mac.

Stay tuned for more updates.

Sunday Apr 29, 2012

A Titanic event

This week I had the pleasure of traveling to Belfast for an IT event entitled, "The Titans are Coming". 

The Titans are coming

I've only ever been to Belfast once before and that was a brief visit to the University there.  This time around a local company, Brightwater Recruitment Specialists, had invited me to be part of a Java developer event they were organising.  It was an evening affair being held at the newly opened Titanic Exhibition Centre.  This is a most impressive building, as you can see from the photos.



I've had the pleasure of presenting in some interesting places in the past (on the Eiffel Tower, in front of a fish tank in the Barcelona Aquarium); presenting from a replica of the staircase in the Titanic definitely adds to that list.



Oracle and Java

In addition to my presentation on "What's Happening With Java" there was a very entertaining presentation from Adam Thilthorpe of the British Computer Society on professionalism in the IT industry.  This was followed by a great presentation from Dr Mark Little, CTO of JBoss, who gave his perspective on how the world of middleware and mobile devices was not just changing, but converging thanks to the effects of Moore's Law.

Judging by the discussions I had with people afterwards I think everyone really enjoyed the event and hopes that we can run some more like this.  Northern Ireland has a substantial number of companies involved in Java development (primarily in the area of financial services, but plenty in other areas such as well).  One of the comments I heard several times was the difficulty in recruiting experienced Java developers.  If you're looking for a job Belfast has a lot to offer.

All in all, a great event and we're already planning a similar event south of the border later in the year.  Watch this space and on twitter (@speakjava) for more details.

Tuesday Apr 17, 2012

The Blog Begins

My blog begins[Read More]

A blog covering aspects of Java SE, JavaFX and embedded Java that I find fun and interesting and want to share with other developers. As part of the Developer Outreach team at Oracle I write a lot of demo code and I use this blog to highlight useful tips and techniques I learn along the way.


« June 2016