Monday Feb 08, 2010

Faban at Fosdem

Thanks to those that attended my talk on Faban at FOSDEM on Saturday. If you want to know more then post a comment here and we can work out how to best to talk. In the meantime here are my slides from the talk.

Friday Dec 11, 2009

Excited about new software much?

Well I am excited, having just attended and presented at Tech Days in Sao Paulo (more on that later) how could I not be :o) Glassfish v3, Java EE 6, JPA 2.0, more grizzly than you can shake a stick at, Servlet 3.0, EJB 3.1, Atmosphere and NetBeans 6.8 are just some of the things that are causing my excitement.

You can get Glassfish v3 from here and NetBeans 6.8 from here

Some NB 6.8 bundles include Glassfish v3 so if you need both go get NetBeans first. You can get all the background on Glassfish v3 on the Aquarium blog

More later


Thursday Nov 12, 2009

SourceJuicer at London OpenSolaris User Group meetup

I'll be giving a talk on SourceJuicer at the London OpenSolaris User Group meeting on Wednesday 18th November. On before me is Owen Roberts from the Solaris Sustaining group, and he'll be talking about how the core of OpenSolaris will move to being built from source directly to IPS packages (yay!).

So if you are interested,  register in advance here and then come along to the Sun Customer Briefing Centre at:

45 King William Street
London, EC4R 9AN
Map

Doors open at 6PM and the talking starts at 6:30PM, there'll be food and socialising afterward.

While on the subject of SourceJuicer, George Drapeau the OSS core team lead here in ISV-Engineering at Sun has just published a video blog on installing Acquia Drupal on OpenSolaris from the /contrib repository. You can find it on George's Blog, it's very slick :o)

Friday Jun 19, 2009

EventMachine and the elusive emptys

Having built Ruby 1.9 packages for Solaris Nevada we had to try installing the commonly used gems, particularly those for the Rails stack and specifically the ones we use with the Apache Olio Rails app. One of these was eventmachine which is used by Thin and which is a great piece of Software. It installed fine on our Solaris Nevada b116 x64 box but failed to install on our Nevada b116 SPARC box. The error was pretty bizarre too:

usr/ccs/bin/as: error: no input filename given
usage: /usr/ccs/bin/as [-V] [-Q{y,n}] [-q] [-s]
        [-S] [-K {pic,PIC}] [-o objfile] [-L] [-T]
        [-P [[-Yc,path] [-Ipath] [-Dname] [-Dname=def] [-Uname]]...]
        [-m [-Ym,path]] [-n] [-ul] [-xF]
        [-m32] [-m64]
        [-xarch={v7,v8,v8a,v8plus,v8plusa,v8plusb,v9,v9a,v9b,sparc,sparcvis, sparcvis2,sparcfmaf,sparcima}]
        [-xcode={pic13,pic32}] file.s...
\*\*\* Error code 1
make: Fatal error: Command failed for target `binder.o'

What looked suspicious here, was the build line, which looked like this:

g++ -I. -I/usr/ruby/1.9/include/ruby-1.9.1/sparc-solaris2.11 -I/usr/ruby/1.9/include/ruby-1.9.1/ruby/backward -I/usr/ruby/1.9/include/ruby-1.9.1 -I/var/ruby/1.9/gem_home/gems/eventmachine-0.12.8/ext -DBUILD_FOR_RUBY -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_TBR -DHAVE_WRITEV -DHAVE_WRITEV -DOS_UNIX -DOS_SOLARIS8 -DWITH_SSL -I/usr/sfw/include -fPIC -g -O3 -fPIC  -g -obinder.o -c binder.cpp

There's no space in '-obinder.o' which you'd normally expect to read '-o binder.o'. It looked odd, though it's not unusual for spaces to be ommited when passing names to options, I'd just never seen it on a build line before so it stood out. Looking at the output with -v set as one of the flags passed to g++, gave more data but not anything useful. We looked at it on the x64 system (again with -v as a flag to g++) and it went through the same steps but didn't fail.  But it did use a different assembler! gcc/g++ on x64 uses /usr/sfw/bin/gas but on sparc uses /usr/ccs/bin/as. It also became apparent by running the assembler manually that it was choking on -obinder.o, it seems that gas is more tolerant than as :o(

The Makefile that gets generated by extconf.rb when you install the gem has lines in it's .SUFFIXES section of the form:

.cc.o:
        $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<

and earlier in the file COUTFLAG is defined as:

COUTFLAG = -o

Which ultimately results in -obindir.o (same for all of the other objects it builds).

Matz seems to have hit this problem before, because the Ruby 1.9.1 Makefile contains a fix for a similar problem in Ruby (although it still happens when building the ext/\*.c sources)

empty =
OUTFLAG = -o $(empty)
COUTFLAG = -o $(empty)

Which results in a space being inserted after the '-o' for $(OUTFLAG) and for $(COUTFLAG)

 
  

The Makefile is of course generated by extconf.rb which gets it's instructions on how to create the Makefile from mkmf.rb which Ruby provides. So the fix would be to make the changes outlined above in lib/ruby/1.9.1/mkmf.rb or to have it create the SUFFIXES lines with a space between the COUTFLAG variable and the output file name. We can do that for any packages that we build, but we also need to raise a bug with Ruby.

Building Ruby 1.9.1 on Solaris SPARC

We've been working on building Ruby 1.9.1 (p129) packages on Solaris Nevada (the platform that OpenSolaris is mostly built from). We hit a couple of problems on the way, one was easy to fix the other not so.

The first issue was Sun Studio borking when it found a function declared with a return type of void but which actually contained a return statement. gcc actually thinks this ok which seems odd to me, maybe it's just our version of gcc though... When gcc hits this it says:

pty.c:425: warning: `return' with a value, in a function returning void

But with Sun Studio cc you get:

pty.c:425: void function cannot return a value
cc: acomp failed for pty.c

The file causing the error is ext/pty/pty.c and line 425 has the offending line in function getDevice() (declared as 'static void'):

return Qnil;

If you comment out this line it will build ok. There is a bug for this issue......

The other problem only occured on SPARC initially, we were using one of the public build systems that we have for the SFW consolidation (the part that delivers most of the F/OSS into Solaris Nevada and OpenSolaris) and that was running Solaris Nevada build 114, for x64 we were building on Solaris Nevada build 116 which was the latest version available at time of writing. x64 built fine.

The error seen on SPARC was:

Undefined                       first referenced
symbol                             in file
rb_cFalseClass                      enc/emacs_mule.o  (symbol scope specifies local binding)
rb_cTrueClass                       enc/emacs_mule.o  (symbol scope specifies local binding)
rb_cFixnum                          enc/emacs_mule.o  (symbol scope specifies local binding)
rb_cSymbol                          enc/emacs_mule.o  (symbol scope specifies local binding)
rb_cNilClass                        enc/emacs_mule.o  (symbol scope specifies local binding)
ld: fatal: symbol referencing errors. No output written to .ext/sparc-solaris2.11/enc/emacs_mule.so  

when linking enc/emacs_mule.so. It's not a well documented error, but the implication was obvious, the required symbols had been found but they had been declared as local and so couldn't be used to build this shared object. Using nm on emac_mule.o and on libruby.so.1 seemed to indicate that the symbols were needed by emacs_mule.o (UNDEF) and were available in libruby.so.1. We asked the compiler experts and they thought that perhaps the symbols were declared as HIDDEN. We tried elfdump on both emacs_mule.o and libruby.so.1 and guess what, when analyzing libruby.so.1, elfdump threw up loads of errors of the type:

"bad symbol entry: <address> lies outside of containing section"

This suggested that the shared library was broken in some way.

We isolated the linker lines from the build for libruby.so.1 and ran them individually (after touching ruby.c). There were two lines, the first was the linker line which actually built the shared library. That ran ok and when we ran elfdump on the resultant library there were no errors. The second line was:

/usr/sfw/bin/gobjcopy -w -I "Init_\*" libruby.so.1

After running this manually we saw the same error when using elfdump on the resultant library.

At the same time as this we were running a build on a SPARC system that we'd had upgraded to Nevada build 116 and that completed OK. A check on the version of gobjcopy on the two systems showed that we had gobjcopy 2.15 on the build 114 system and 2.19 on the build 116 system. Further checking showed that gobjcopy was delivered into Solaris Nevada in SUNWbinutils and that had been updated in Nevada build 116. So the problem wasn't the fact we were building on SPARC but that we were building on different OS revs, the problem also exists on x64.

At the moment we haven't looked into what was going wrong when gobjcopy tried to make the Init_\* symbols local, but it was apparently corrupting the library.

At the moment this makes it tough to build Ruby 1.9 on OpenSolaris which is based on Nevada build 111b and we are looking at how best to get around this. Maybe make the packages available from the /webstack repository. In the meantime we'll file a bug against OpenSolaris and come up with a workaround.

Tuesday Mar 24, 2009

Community One East

I had the good fortune to present, along with my colleague Prashant, at the Community One event in New York last week. We talked about all of the testing work that we have been doing with Ruby on Rails on OpenSolaris these last 2 months and gave some pointers on what stack components to use and how to scale both vertically and horizontally. Got to see some of the sessions, although I spent a lot of the time in the speaker room on the first day. It was interesting to hear Dave Douglas talking about Kutiman, well actually it was more weird than interesting :o) I've listened to Kutiman quite a bit over the last couple of years, but had missed the Youtube Mashup thing that he's done. If you are interested check out http://thru-you.com/

In the same Keynote, Dave Douglas re-purposed Sun's 25 year old vision: "The network is the computer" for the Cloud and announced the Sun Open Cloud Platform. Dave believes (and I tend to agree) that there will be many clouds, some public, some private, some internal, some internal, geographic based clouds, market based clouds and so on. The Sun Open Cloud Platform will provide the infrastructure for powering these clouds, starting with the Sun Cloud. The Sun Cloud is currently manifested as a RESTful API which you can sign up for at http://kenai.com (it comes out of an internal project called Kenai and from QLayer), the API is published under Creative Commons which is cool. Other bits will follow later this year, Sun Cloud Compute Service and Sun Cloud Storage Service, which all I know about is limited to the press release. Now all we need to do is get the word out about what we are doing and then listen to the people who use it, who want to use it and who used it and didn't like it, and make it the best Cloud possible.

I didn't get a chance to see Simon Phipps' talk on The 3rd wave of Open Source live as I was talking at the time. I have watched the recording since and it's pretty interesting. I like the mention of Open Source as the Firmware for the Systems group at Sun (where I work), for example the Sun Storage 7000 series has OpenSolaris and ZFS as it's 'firmware', that these software components are fundamental parts of these systems and that no additional software and software licenses are required to make them work. Indeed Open Source really is now at the core of Sun Microsystems. Something else he said half jokingly, he used the word "victims" to describe the users of closed source, proprietary software, not sure why that gels so well with me. "More and more procurement driven projects are ending in failure" and the alternative is an adoption led process, where there's a lose specification of requirements, prototyping and several iterations that lead into a pilot that will either succeed or 'fail early' and that's fine, better to fail early than to fail after spending lots of money on licenses, professional services and support contracts.

Anyway, rather than give a commentary on the talks I saw you can see video of the main track and pick up the slides for the others at: http://www.sun.com/events/communityone/index.jsp

I had the pleasure to meet Dave Pascoe and Mark Niedzielski from OurStage who attended our talk. I think I learned more from them than they did from me :o)   If you are at all interested in new music you should check them out. Anyway, they use Rails big time and they use OpenSolaris for storage. The kind of scaling that they do is something that given the limited opportunities for access to equipment, I could only ever dream about. It was thought provoking to say the least. Mark showed me a software monitoring tool called Rails Performance Monitor from a company called New Relic. It's the kind of app that anyone involved in managing and monitoring performance long for and tells you pretty much everything about how your Rails app is performing and where it's spending it's time. I've been using the Lite version for the last couple of days.

The second day of Community One was reserved for Deep Dives and I decided to attend the MySQL sessions (dev in the morning, dba in the afternoon) and see if I could pick up some useful tips. We spent a little too long looking at the online docs, but apart from that they were good sessions. If nothing else, finding out that I could log queries that didn't use an index made the whole thing worth while.

NYC was it's usual self:  expensive, noisy, bustling and full of character. I had a 1.5 hour tour of Manhattan on my way from the airport on the Shuttle bus and took the E line subway in the rush hour on the return trip.

Oh and some people were talking about IBM, something about an outrageous plot to take over the world...




Monday Feb 16, 2009

Thin on OpenSolaris

Since the start of the year we've been testing with the Apache Olio Rails application on OpenSolaris. Early on we found that when using Thin as our Rails runtime, every now and then a Thin instance would abort and core dump after an assertion failure in EventMachine. This really only happened under high loads and was hard to recreate. The problem is detailed here: https://issues.apache.org/jira/browse/OLIO-38

We talked to the EventMachine folks on the eventmachine-talk alias and after a couple of days they were able to come up with a fix that we then tested at length. The fix is now available in EventMachine 0.12.4 . The support that they gave us was really fantastic and helped us resolve a problem that really threatened to hold up our project. Thanks particularly to Aman Gupta.

So if you are using or planning on using Thin and EventMachine on OpenSolaris, EventMachine 0.12.4 is the way to go.

Tuesday Feb 10, 2009

OpenSolaris at Fosdem '09

I didn't spend as much time as I'd have liked on the OpenSolaris booth at Fosdem '09 and so I missed this celebrity interview.

Monday Feb 09, 2009

Weekend away with 5000 other F/OSS fans

Just spent a long weekend in Brussels attending Fosdem '09. It was my first time there and I really loved the down to earth nature of the whole thing. It came at just the right time as I really needed a break from the rubbish weather we've been having in the UK, although early on Saturday morning on the ULB campus in Brussels it seemed like the weather had decided to follow me over the channel.

I'm not a big fan of keynotes and so was pleased to find that Fosdem kept them at the minimum, somehow our very own Simon Phipps managed to get 10 minutes to talk about fixing a 29 year old bug in Sun's RPC code, seemed that in order to get the issue fixed the code had to be re-licensed and Simon has just managed to make that happen in the last week. It was a strange segue in some ways and led into Mark Surman of the Mozilla Foundation talking about what Free means today and how it will influence the future. It was an interesting talk but one I can't remember much about so I'm looking forward to the slides/video becoming available. There was also the Fosdem Dance which is funny and disturbing at the same time.

I spent most of the rest of the day wandering around the booths and getting to see what everyone was doing. I did catch Mark Rheinhold and Joe Darcy's updates on OpenJDK7, OpenJDK6 and the formative feature set of Java SE 7. Last time I'd seen a Java SE 7 presentation we were still talking about JAMs and  JSR 277, seems that the landscape has changed and now it's JSR 294 that's being adopted. I never really got excited by the idea of SuperPackages and JAMs so hopefully this is a good move, although listening to the Project Felix Lightning Talk later in the day is seems that this may be a set back for OSGI in Java,  but I'm sure there's loads of other stuff going on in that area. Lenz Grimmer also talked about using Bazaar for source code management and it seems worth checking out (i'll add it to the list of SCM tools that I need to look at). While at the lightning talks I finally got to meet Nick Kew, Nick is a leading contributor to the Apache HTTP server and now works for the Sun WebStack team, he's based in the UK but a long way from where I am in Surrey so it was great to meet him at last.

On Day 2 I spent all of my time in the Ruby, MySQL and Java Dev rooms. Of most interest was getting to listen to Alex Buckley talk about invokedynamic and other features that support dynamic languages that are being integrated into the (J)VM. The J is paranthesized as a nod to the fact that in future the Java VM will support many different languages. One of the main reasons for Java's success over the last decade is the Hotspot Compiler and all of the work done to make the VM performant. As Virtual Machines go it seems to have few peers and taking all that and making it available to other languages can only be a good thing. I say this as someone who's spent a lot of time working with various flavors of Ruby VMs in the last couple of years. It'll be interesting to see where all of this goes.

I really liked Kris Buytaert's talk on monitoring MySQL. My group in Sun have been talking a lot recently about integrating Hyperic HQ and Nagios into OpenSolaris and this talk just showed how much this is needed. It seems we should also be looking at Zabbix which Kris had a lot of good things to say about. I also really enjoyed The Data Charmer's talk on MySQL partitions, if you aren't familiar with him, The Data Charmer is Guiseppe Maxia - The community team lead for MySQL here at Sun. He explained logical vs physical partitions using maps of Brussels and a pair of scissors, something that earned a deserved round of applause (ok he didn't use scissors, it sounds better when describing it though). Peter Vanbroekhaven gave an interesting talk on some of the more interesting idioms of Ruby classes, objects and modules but I missed most of the other Ruby sessions due to timing.

The Fosdem organisers laid on a bus to take people to Brussels central station, I decided to try to get on the 16:20 bus and queued at what I thought was the right place. It wasn't and I wasn't alone in getting this wrong as when the Bus arrived and parked round the corner, everyone waiting where I was ran down the road like an angry football crowd after a game (we weren't angry though). I made it on to the bus but only just, I'm a nervous traveller at the best of times and I think I may have been pretty miserable if I hadn't made it on, particularly having been one of the first to queue up for it.

Whatever happens over the next year, I'll be planning on attending Fosdem in 2010. It's a must attend event for anyone involved in Free and Open Software in Europe. I think next time though I'll travel light and avoid airplanes and taxi's as they seem so out of keeping with the whole ethos of the event.

Sunday Aug 31, 2008

RubyGems /etc/gemrc

RubyGems now allows you to set the path to where your (and the systems) gems are installed using a System Wide Config File: /etc/gemrc. This is really useful to those packaging RubyGems for different operating systems as it avoids nasty hacks or coercing the GEM_PATH to a specific value every time RubyGems are run. The format of the file is like this:

gem: --no-rdoc --no-ri
gemhome: /var/ruby/1.8/gem_home
gempath:
 - /usr/ruby/1.8/lib/ruby/gems/1.8

Here it's specified that by default rdoc and ri should not be built when installing gems and the gemhome and gempath configuration variables are set. With the /etc/gemrc set as above `gem environment` gives this output:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.2.0
  - RUBY VERSION: 1.8.6 (2007-09-23 patchlevel 110) [i386-solaris2.11]
  - INSTALLATION DIRECTORY: /var/ruby/1.8/gem_home
  - RUBY EXECUTABLE: /usr/ruby/1.8/bin/ruby
  - EXECUTABLE DIRECTORY: /var/ruby/1.8/gem_home/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-solaris-2.11
  - GEM PATHS:
     - /var/ruby/1.8/gem_home
     - /usr/ruby/1.8/ruby/lib/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gemhome" => "/var/ruby/1.8/gem_home"
     - "gempath" => ["/usr/ruby/1.8/ruby/lib/gems/1.8"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

The actual values from /etc/gemrc are printed out in the "GEM CONFIGURATION" section, but they have actually had an affect on the "INSTALLATION DIRECTORY" (where gems are installed to), "EXECUTABLE DIRECTORY" (where gem binaries such as rails are installed to) and "GEM PATHS" which is the paths that the gem command will use to locate gems. This comes into effect when you run commands like `gem environment`, `gem query`, 'gem list --local` and most importantly when checking for dependencies when installing new gems.

Now the downside, the values for gempath and gemhome really are only used when running the gem command. They do not come into play when actually using a ruby gem. An example: As part of as system setup, the Ruby on Rails 2.1.0 gem is installed to /usr/ruby/1.8/lib/ruby/gems/1.8 using the --install-dir switch with `gem install`. Then the Ruby on Rails 2.0.2 gem is installed to the default Gem Home (/var/ruby/1.8/gem_home). The `rails` binaries installed by each are just wrapper scripts that call out to the rails gem, but the rails command does allow you to specify the version of Ruby on Rails that you want to use with the following syntax:

rails _2.0.2_ my_test_app

With "_2.0.2_" being the version that you want to use. If you run this with the setup as described above, where rails 2.1.0 is installed in one directory and rails 2.0.2 is installed in another and where you have only set the Gem Path through /etc/gemrc the following happens:

grond% rails _2.0.2_ my_test_app
 /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems.rb:580:in `report_activate_error': RubyGem version error: rails(2.1.0 not = 2.0.2) (Gem::LoadError)
        from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems.rb:134:in `activate'
        from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems.rb:49:in `gem'
        from /var/ruby/1.8/gem_home/bin/rails:18

This shows that it could not find the Ruby on Rails 2.0. gem anywhere on the path it was using to locate gems. The path it used was the default path constructed from the various paths in the Ruby config file: rbconfig.rb and as Ruby is installed to /usr/ruby/1.8 this is /usr/ruby/1.8/lib/ruby/gems/1.8 on OpenSolaris.

The fix is to use the GEM_PATH environment variable, if this is set, then the paths that it specifies will be included for any usage of Ruby Gems, be it the using the `gem` command or actually running the gems themselves.

When running the gem command a Gem::ConfigFile instance is create and it is this that actually reads and parses the /etc/gemrc file. The gemhome and gempath values are extracted from the ConfigFile instance by Gem::GemRunner which is the base class for running 'gem' commands, these values are then pushed into the Gem.path class variable which is used throughout RubyGems. However, when running or loading a gem, the only setting of the Gem.path is done by checking to see if GEM_PATH is set, if it is then it's values are used, if it isn't then the default path is used.

I can only suppose that this was done deliberately but I can't at the moment see why that would be. It seems to make sense that GEM_PATH and gempath (in /etc/gemrc) would do the same thing.

Thursday May 29, 2008

Lighttpd and temporary files

I think that this blog is turning into a list of my shortcomings, but these kind of silly problems need to be stamped out and you can only do that by documenting them. 

I was testing our Web 2.0 application on Lighttpd/PHP/MySQL and my throughput tailed off at around 800 users, I did all of the usuals, tuned MySQL a little, enabled XCache, used the private interfaces instead of the ones hooked up to our internal network. Still I was seeing the same tail off - I was getting 160 ops/sec for 900 and 1000 users and < 160 ops/sec for > 1000 users.

As I was just quickly ramping this test up I wasn't monitoring iostat during the run, so I enabled it (Faban allows you to specify a whole bunch of tools that you can run on each system in the rig) and ran it again. iostat showed that the root disk was 87% busy on average with avg. service times at around 80ms which is way too high, particularly for a disk that wasn't doing anything. I realised then that either PHP or Lighttpd were writing file upload data temporarily to /var/tmp, the default for both of them. It was Lighttpd in fact, I just added the line (which I really thought I had already done):

server.upload-dirs     = ( "/tmp")

to the Lighttpd config file and restarted.  On Solaris, /tmp is an in-memory file system so you can get real benefits from writing temporary data there over writing to /var/tmp (which by default is on a filesystem). Just make sure that you don't run out of memory or you'll start swapping (writing memory pages to disk, probably your applications pages) and don't use /tmp for ordinary files. UFS and ZFS both have caches which will benifit read/write access to existing files and all of the data in /tmp is lost when you reboot.

The config file option for PHP that causes it to store file upload data to /tmp is:

upload_tmp_dir = /tmp

You can also cause session data to be saved to /tmp with:

session.save_path = "/tmp"


 


 


Pseudo Eclipse Workspace files for NetBeans/Alfresco

In my last blog entry I talked about the pages on the Alfresco Wiki that detailed how to setup NetBeans as an Alfresco Development Enviroment and for the Alfresco SDK. Those pages include details of how to setup a psuedo eclipse workspace for use with the NetBeans eclipse project importer plugin. We have the files describe in that process available in a zip file: metadata.zip

 

 
 

Thursday Feb 21, 2008

JavaUK Roadshow

Spent most of the day at events in London yesterday. I've not been into town for a while and it's good to see that our capital's transport system is still broken down and decrepit. That can't be said for Sun's Customer Briefing Centre though, it's a great venue for events with all the mod-cons and a screen that allows you to do NetBeans demos and not have it look like a poor YouTube video.

The JavaUK  roadshow event was pretty slick and most of that was down to the organisational skills of Michael Lonnon and his team. It never ceases to amaze me what this guy can achieve with what one must assume is a relatively limited budget. The audience at the event were great and there were a few familiar faces, so a big shout out to everyone I met yesterday. My session was on JRuby on Rails and I think that a few of the audience were thinking, "why is she prattling on about Ruby?". It's a difficult talk to pitch, I didn't want to overplay the 'J' in JRuby, but at the same time had to present the case for why JRuby would be interesting to Java developers. Rebelliousness creeps in too as I'm not a big fan of classifying developers as "Java Developers" or "Ruby Developers". Developers work with the tools and languages that are available to them within the context of their working environment. Even if you can't use Ruby on Rails to develop the next rev of your companies Web Presence, or if Eclipse has been selected as the corporate standard IDE de jour, there's still a lot to be gained by looking at what's going on in the rest of the world, what other languages are doing, how other tools are solving the same kind of problems that you might be facing every day. The other talks were cool, Simon Cook demo'd Bean Bindings and Matisse in NetBeans, and talked about RIAs and the likes of JavaFX. Steve Elliot presented on SOA and JBI, stuff that I was working on at the start of last year. I missed the talks in the morning as it was going to be a long day, but Matt Hosanee was introducing NetBeans 6.0 and I'm sure he had a lot of useful stuff to pass down.

We had the requisite drinks afterwards in "The Fine Line" across the road from the venue, we were joined by Iain and Brian from Glasgow Caledonian Uni who were flying out from City Airport and were worried that they might not make the flight. Let us know if you made it guys.

At about 6.30 we headed back to the CBC for the London Open Solaris User Group meeting. Jim Hughes, CTO of the Solaris  Group, who we acquired with StorageTek and who looks and talks like he's worked for Sun for 20 years, gave a demo of installing the "OpenSolaris Developer Preview" ne "Indiana" on to the bare metal of a Mac Book Pro. While running the installer from the "Live" boot of the Indiana CD, he ran his slides in OpenOffice from a pen drive on the Same System. Afterwards there was wine and pasta (which was actually really nice).

In the next couple of days I'll post the walkthrough of my alternative of the "How to create a weblog in 10 minutes" demo, adapted for Rails 2.0 and culminating in deployment and execution on Glassfish

 


About

Bloggity, blog

Search

Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today