Managing Multiple SSH Keys to Avoid Heroku Permission Issues

I was a little surprised to have an access issue with Heroku when using my new Mac Book Pro, as its always been really easy to deploy my applications to Heroku in the past.  I kicked myself when I realised I’d only set up a public key specifically for my Github account.

This got me to wondering the best way to set up keys given I am using different services for both personal project and work.

Read More

London Scala Hackday Powered by Heroku

Saturday 27th saw a great hackday thanks to Robert Rees, The Guardian and members of the London Scala user group. The ambitious challenge was to build an community website where events, conferences, blogs, code repos and community discussions were all available from one place.

There are several websites out there that do a part of what a community needs, to this project is trying to help bring all that together in one place. So the grand plans include, pulling in content from event sites, publishing events to sites, register at events with a single touch and widely distribute your interest and attendance automatically.

Or just have fun hacking on some cool technology and learning something new.

Read More

IBM and the Irony of Community Engagement

At the JAX London conference yesterday Steve Poole of IBM gave an inspiring speech, discussing the value of the right mix of business and open source participation in the development of Java. The same day, IBM decides to no longer support the yearly London Java Community conference. This does beg the question, does IBM understand the message they are communicating?

If you give a rallying call to the developers out there to help Oracle and IBM shape Java, then you also need to support that call and not just rely on the resource of that community.

Having asked IBM if the London Java Community could again use their great venue for their yearly conference, it seems the initial reply was yes, yes, yes, followed by a final response that they didn’t have the budget for us to us there venue. Maybe some one at IBM misunderstood the request.

I am sure that IBM contribute to the developer community in many ways, although as an organisation I have the perception it still struggles to understand the value of community, as Oracle once used to do. To me it seems to let down the amazing individuals at IBM who have contributed greatly to the community as well as a huge opportunity to get developers involved in IBM technology and products. It seems IBM are not helping themselves be the drivers of community engagement, which is a missed opportunity by them.

Over the last 5 years, the London Java Community have been driving Java developer engagement with activities such as Adopt a JSR, a yearly community conference and regular community events. We have been very grateful to IBM for providing us use of their space for our yearly conference in the past, but it seems IBM dont have the budget this year for one Saturday. This is a bit disappointing as after a long process we only find out now, about 5 weeks before the conference. Whilst there is no expectation for IBM to provide a venue, it is a great way that they can easily support the Java community in the UK. It seems doubly disappointing considering the great sessions by Steve Poole and Holly Cummins at JAX London that inspired over 500 developers across a dozen countries to get involved with Java’s future and some cool IBM technology.

This situation does highlight how difficult it is for large companies to engage with the community. If all you do is ask people to help, you probably wont get much reply without the perception of reciprocity!

With the support of IBM, Oracle, Atlassian, O’Reilly and others the London Java Community has been able to get so many more developers engaged with the development of the Java language. As we have grown to ~3000 members, we can do event more when working with partners that understand the value of community engagement, to help us help developers get involved in the future shape of Java.

Sponsors have real value to gain by investing in community activity and developer groups like the Java, Scala, Craftmanship and Clojure communities allow a means to invest in communities in a way that is valued by the developers in those community.

If you want the community to engage with you, you have to stay relevant and give developers inspiration, motivation and the means to get involved. IBM have given the community a perception of a really big push and fail in the same day. That is itself is quite a trick.

The London Java Community conference is going ahead as planned and registration will open as soon as we confirm a new venue, so please save the date of Saturday 24th November.

Thank you
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License

London Salesforce Developers - Dreamforce Aftermath

Over 7,000 developers flocked to the DevZone at this years Dreamforce conference. I was one of them and along with Adam Seligman, Keir Bowden and Andy Mahood we told tales of our experiences to the London Salesforce Developer community.

Wes Nolte took charge of the mike and quizzed the panel on their experiences of the event. Here are the questions that stuck in my memory from the evening

What was the thing that got you most excited about Dreamforce ?

The thing that got to me was the sheer size of it all. With so many developers around it was great that we had a whole of Moscone West to spread it all out. There were banks of laptops provided for anyone to get involved in coding workshops and all through the day they were all filled up.

There were so many different things to do, from playing donkey kong to coding, listening to great talks, guided tutorials, code consultations and quizing lots of people from Salesforce and Heroku about their platforms.

The biggest problem was what to actually do from so much choice. Of course there was an app for that too and a chatter stream so you could discuss sessions as well.

If you couldn’t make up your mind you could also queue up and print your own t-shirt!

It was a sign of how open the conference was to have an un-conference section, where anyone could propose a talk. There was even a theatre dedicated to community related talks. I met some great guys from Bristol who are starting up their own Salesforce community events.

What was your favourite session ?

The most entertaining session was by James Governor from RedMonk, comparing the rise of craft brewing with the rise of developers. Craft brewing is bringing back the entrepreneurial flavour into beer making and bringing quality product to the market. Developers are doing the same for startups and enterprises around the world. Calling developers the new kingmakers, James highlights how important developers are and the responsibility we have on our shoulders to support the businesses and projects we are involved in. See article….

I also really enjoyed the live coding challenges from MVP developers and developer evangelists. There was a great banter as well as great code being bashed out.

My favourite moment was when one of my colleagues was presenting. They had a great presentation line up, all using on-line resources and then the wireless failed. Before the venue tech guys had chance to fix it, someone from the audience donated their phone and the presentation was on again. I had a warm fuzzy feeling about that!

All through the conference there was a feeling of collaboration and community. Whether that be debugging each others code through the workshops or collaborating on the mini-hacks. There was a constant stream of activity every day.

Have a look at all the videos and code produced at the DevZone this year and see for yourself.

What new stuff are you already using or want to try straight away ?

In a nutshell, it has to mobile development. I remember spending a day in a workshop getting up to speed with development on Android devices and there was still lots to learn by the time I had finished. That seems like a lifetime compared what I saw at Dreamforce. Using the Salesforce Touch platform you can easily and quickly build HTML5 and hybrid applications in be finished in hours, not days.

It seemed the hardest thing for mobile development using the Touch platform was registering for your Apple ID.

Turing the tables on the audience

At the end we turned the tables and each panellist got to ask a question of the audience.

I wanted to shorten our name from “Salesforce platform developers user group London”, not the easiest thing to tell your friends about. From the feedback we got we have changed it to the punchier London Salesforce Developers, which encompasses the different platforms (heroku, force.com, data,com, etc) under one name.

Summary

Over 80 developers braved the cold October night to hear about out experiences and it was a great social event, made even better by the beer and pizza provided by Tquila.

Thanks also to our gratious hosts, 10Gen, for providing the venue. 10Gen are the company behind the popular MongoDB.

Thank you.
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License

Agile Cambridge 2012 Aftermath

An event full of discovery, psychology, therapy sessions, learning, juggling and lots more fun, that in a nutshell was Agile Cambridge 2012.! It was great to meet old friends and new as well as sit in on some great sessions. Here are just a few of my personal highlights from the conference.

Cynifin - dealing with uncertainty

In hindsight there was a theme of “dealing with uncertainty” running through the conference, but I guess when that is the consistent thread in our lives then its hard to get away from that pattern anyway.

This is the first time I managed to see Dave Snowden (@snowded) talk about his Cynifin model for dealing with uncertainty and it was worth the wait. Whilst I have seen several people talk about Cynifin before, Dave really conveys the value and importance of the model like no other.

Cynefin is a Welsh word that means “the place of your multiple belongings”. Essentially it refers to the fact that there are thousands of things in your experience that influence your understanding and you can never be fully aware of them or their affect.

Humans evolved to make decisions very quickly as tigers tend not to wait for a project budget before they eat you. We are therefore very good at making decisions based on partial requirements and past experience. We also focus on the negative as unfortunately avoidance of failure is more attractive than following success.

Cynefin is a “sense making” framework to help you understand and manage complex and complicated situations. Dependent on which of the four domains you are in, simple, complicated, complex & chaotic defines how you should think and analyse the situation.

In a simple domain then you can easily categorise the situation and deal with it appropriately. A software development team is rarely a simple domain and tends to fluctuate between complex and complicated domains, driven by the unpredictable nature of the businesses they support.

The Cynefin model looks a great way to think about the situations I am in and its a big take away to try and apply it to my working practices.

Cracking your big rocks

Some tasks seem to us to be so out of our scope, so unfamiliar or painful to do that we will do anything else to avoid doing them. These tasks that become unmovable and intractable in our minds and cause us to waste too much time thinking about not doing them. These are our Big Rocks!

Cracking your big rocks was another example of a great coaching session, specifically to help us break down some ones big rocks.

Assembling in groups of 4, one person had a big rock, two were coaching and one had a deck of big rock cards. The coaches helped the person understand the challenge of their big rock and encouraged them to find ways that they could start to break it down. The cards were used to help shape the coaching discussion or highlight concepts the coaches raised. Cards covered techniques for framing the problem, keeping rolling, saving progress as well as anti-patterns.

My Rock

I was the person with a big rock, mine was writing a book (although much applied to other writing too). I never seemed to have enough time to write the book, was overly concerned about quality and had many other personal and professional tasks pulling me away from the book writing. The coaches helped me break down the challenge, so rather than writing chapters at a time I started to focus on sections in a chapter. A section could be done in an hour or less and I could give myself a micro-break and decide whether to continue or re-prioritise.

I’ve never seen Johanna Hunt and Simon Cromarty talk before and was really impressed with their session, the way they bounce the conversation between themselves and the audience was really engaging.

Coaching techniques

Leaning to be an effective coach is very challenging so its great to learn new techniques to help. Using the simple props of juggling balls, we coached each other in how to juggle

Where no one in a group had any experience of juggling, it was a case of the blind leading the blind. In this situation one group decided to gate-crash a few other groups, observing what they were doing and learning by figuring out where the juggling experience was.

Coaching someone to juggle is a great exampel of where experience of the skill can bring a lot of value to the coaching.

In my group, Simon and Nasim were pretty expert jugglers. Simon had no problem understanding what I should be doing to juggle, the challenge for him however was to coach me rather than teach me - two very different things with different results. By suggesting things I could try and encouraging me to thing about what I was doing I soon gained more confidence. Nasim was observing Simon coach me and at the end of my basic juggling session, he gave feedback on what he saw.

When Nasim was coaching Simon he was a bit taken aback by Simon’s level of skill and wasnt sure how to coach him as he was already doing so well. However, by talking to Simon about his juggling technique he was able to relate to him better a juggler of equal skill. Also asking Simon what he wanted to achieve from the session helped set a goal for Nasim and Simon to get to, framing the session nicely. In this case Simon wanted to learn to juggle with 4 balls, so Nasim encouraged Simon to understand his technique so he could build on it and find a way to achieve his goal.

When it was my turn to coach, I encouraged Nasim to vary his technique, to go back to basic principles and to gradually introduce more balls into the mix. I typically asked lots of simple questions about juggling to prevent Nasim from over-thinking the task. I also asked emotional questions, such as which technique feels better, to gauge if I was helping Nasim keep in a positive state of mind.

By asking us to coach someone in a technique that we were not familiar with was a good way to practice our core skills as a coach, especially our ability to assess the situation, listen and gain understanding of the other persons objectives. As an agile coach, it is very easy for the agile practices and mindset to dominate the conversation and activities, when doing something that most people were not used to coaching it really helped us get back to basics.

One Man Dan

It was great to hear from Dan North (@tastapod) again, he is always entertaining and thought provoking. Dan is embarking on his solo career and will be hitting 13 different events between now and the December holidays. His talk on embracing uncertainty complemented the opening keynote perfectly and highlighted how unpredictable software development is and why its wasteful to try create order. Dan discussed the real value that can be attained by accepting uncertainty and dealing with it gracefully.

In Summary

Conferences are a great way to discover new things as well as catch up with friends and make new ones. It was great to catch up with Dan North and find out about his new adventures, hear the agile coaching stories from John McFaden and meet Darcy D, another ex-thoughworker mixing UX development and agile coaching.

There were lots of sessions I didn’t get chance to see, so am looking forward to catching up with them on InfoQ soon.

Thanks to Mark Delgarmo and team for organising the event. Special thanks to Rally Software for sponsoring the social event on Thursday night where I had some great conversations, delicious food and a pint or three of Samuel Smiths beer!

Hope to see you all at Agile Cambridge 2013!

Thank you.
jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License

Java 7 on Mac OSX - OpenJDK and Oracle

There are many things that make the MacBook pro a nice machine for software developers. The default version of Java Standard Edition development environment is not one of those things.

Although Java SE does come pre-installed on most OSX versions, it is the soon to be unsupported Java 6 version (unsupported that is without paying Oracle big support fees of course).

Whilst its fairly easy to install Java SE 7 on the Mac, its a little more interesting when it comes to setting it as the default Java runtime environment. If you also want to try installing OpenJDK 7, then there is a little more discovery to be done when locating the install files. This article covers the easiest way I found to install Java SE 7 and OpenJDK 7 together.

Install Java 7

To openjdk or not openjdk, that is the question. On the Mac there doesn’t seem to be much in it when it comes to ease of installation. Both Oracle Java SE 7 and OpenJDK 7 come as dmg files for the Mac, although the OpenJDK files are not as easy to find.

There is a website for the OpenJDK project, although most of the content seems a little dated and unless you are running Linux it provides nothing of interest to help you install OpenJDK on the Mac. Download the latest versions of Java SE 7 and OpenJDK 7 and open the dmg files to install them.

Configure the default Java development environment

OSX allows you to install multiple versions of the Java development environment, a very useful ability especially for testing new versions easily. In the Applications > Utilities folder there is an application called Java Preferences.

Running this application lets you manage multiple version of the Java development environment, Java SE.

When a change is made its effects take place immediately, so if you are working in a terminal and change Java versions then you do not need to restart the terminal.

When you have your new versions of Java 7 installed, use the Java Preferences tool to the order around. If you move an environment to the top of the list it becomes the default choice.

Note that for OpenJDK 7 and Java SE 6 there may be two versions installed. Use the 64-bit version if you have that option.

Testing

As the changes take effect straight away, you can go to an open terminal and check that Java 7 is the default Java environment using the java -version command.

Over the next few months I will see what development life is like with OpenJDK 7 as the default. OpenJDK seems to be a newer version than Oracle Java SE, so will have more bug fixes and features - and possibly more bugs.

Using OpenJDK will give me an opportunity to feed back my experiences to the community and if I run into trouble, its easy enough to switch over to Oracle Java SE 7.

Thank you.
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License

I Am Not a Tshirt, I Am a Free Man

The whirlwind tour of duty with Atlassian is over and I am older and wiser for the experience. As a famous writer once put it

“It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief” Well it certainly was an interesting experience and I learnt so many valuable things, many of which I never expected to learn.

Initially I was involved in shaping the role I was undertaking and it was great to brainstorm on how to meaningfully connect with the developer community. At a certain point though I felt it became all about the marketing and and little about what we were saying and doing, so I regrettably bowed out.

Developing user run user groups

Although Adaptavist, Clearvision and other partners really helped drive a community around Atlassian in the UK, the lack of active community was a limiting factor for building a strong community around the product and platform.

Although I managed to establish three regional user groups in London, Bristol and Reading, it still remains a challenging issue for Atlassian on how to run a passionate user group around software development tools in the UK.

Part of the challenge is in the different ways that everyone uses these tools. Also there is some gap between users working with JIRA and those working with Confluence. The products are quite powerful and often aimed at different areas of the business. I something wonder if it would have been better to have seperate JIRA, Confluence and DevTools events.

Blogging and outbound marketing

I really relished the opportunity to enhance my blogging skill and now I get over 1,000 hits for some of the posts I create on my personal blog website. Blogging is a great way to get feedback from the community on ideas you have for applying technology. Blogging also encourages others to share their stories and help the development community grow.

My twitter addiction was under control before I started at Atlassian and using a great tool like HootSuite helped me not waste too much time. Twitter is an amazing tool for learning and discovering things, but its so easy to spend a whole day there and yet feel you havent achieved anything. Creating lists and scheduling posts helped me make the most out of the Twitter service.

I also learnt all about outbound marketing, search engine optimisation and other marketing techniques. All these are useful to help raise awareness about a company or service, however its just a small initial step when the goal is to really get developers to engage with you. Marketing techniques help developers find your content, but you have to say something that is meaningful to them, something that inspires and engages with them. It is quite a challenge to come up with meainingful technical content on a regular basis.

I did have a great time putting together useful content for the Getting on Git campaign we ran with Clearvision, giving developers a great insight into the benefits of Git adoption. Rather than just focus on products, we gave a wider understanding of the value of making the switch and practical ideas on how to make that change.

Getting practical

I believe its very important to do things at a local level to make the community highly active. While its important to give product updates to the community, its even more important to help them see how it relates to their own challenges.

One of the best ways I found to do this is to get developers practical. Running workshops, hackathons and developer events aimed at giving people the experience they need to succeed with your products is vital if you want real adoption and raving fans!

An organisation can only do so much to reach out to the community, the more it engages with that community at a local and practical level, the more active that community becomes at growing the community itself.

Thanks

Again, I’d like to thank everyone at Atlassian for the experience and wish them all the luck in the world. For a developer, I still think Atlassian is one of the top 10 places to work, especially if you are based in Sydney Australia - its beautiful there!

Thank you.
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License