Atlassian Summit 2010 Day 1 Wrapup

Atlassian Summit 2010Atlassian Summit 2010 kicked off at the Intercontinental Hotel in San Francisco. Here are my notes from day one.

Keynote

Scott Farquhar (co-founder and co-CEO) kicked off Summit:

Atlassian Summit

  • 550 attendees this year, completely sold out with 200 more people on the waiting list
  • this year won 2 HR awards plus were mentioned by Dan Pink in his TED talk as well as his book Drive
  • Atlassian now has 18,000+ customers plus 50,000 starter licences (with all starter licence proceeds going to Room To Read)
  • Crucible has seen an 88% increase this year
  • Atlassian Hosted (JIRA Studio) has seen a 253% increase this year
  • 512 plugins, doubled in last year
  • easy to write plugins intrepreneurial and entrepreneurial – growth area for Atlassian and their plugin providers
  • introduced the Universal Plugin Manager – upgrades plugins automatically as well as assisting with Atlassian product upgrades, available now as a plugin for JIRA and Confluence and will be worked into the entire product suite in the future

Mike Cannon-Brookes (co-founder and co-CEO) then took the stage to announce some new products:

Atlassian Summit

  • concept to launch – concept, plan, build, launch
  • Confluence – new editor coming in 4.x that will combine the best of the wiki markup and rich text editor
  • JIRA – new wallboard feature, just a dashboard – available in alpha now
  • GreenHopper – 900 users last year and 10,700 users this year, fastest growing Atlassian product ever, GreenHopper 5 announced with a completely overhauled user interface

Launchpad

A live voting vendor presentation, where a number of vendors get five minutes each to demo their plugins and get votes via SMS from the audience.

Atlassian Summit

Atlassian Summit

Unsurprisingly, Gliffy took out the voting with their pirate costumes with Near Infinity the runner up.

Going Agile with PBS

Tristan Mayshark from PBS Interactive delivered this session.

Atlassian Summit

  • use LAMP, Amazon Web Services and Red Hat
  • tools include Komodo, full Atlassian Suite with Gliffy, Balsamiq and Adaptavist Theme Builder under community licence, SVN, Git and Gitorious (front end to Git) and TestLink for managing manual test cases
  • have made a switch to agile recently and it has had real benefits, initially used JIRA sporadically and no standard QA process

Agile definition at PBS:

  • empowering teams with the tools and communication to succeed
  • accept changing priorities are the norm
  • developing products in an incremental way
  • minimize time to market and maximise value
  • start with an envision session using stickies on a wall, then using GreenHopper enter cards and estimate using t-shirt sizes (anything over 4 is an epic)
  • group stories into a release that adds business value, and then to 2 week iterations
  • drive stand-up meeting direct from the GreenHopper task board, for distributed teams use DimDim (alternative to WebEx)
  • Bamboo pointed at Git and SVN, use Selenium for UI testing (but manually test Flash as it is problematic to test), keep screenshot artefacts from Selenium on the Bamboo server as a visual history
  • TestLink (open source) integrates nicely with  JIRA for manual tests (when something fails it fires off a JIRA ticket), but Bamboo is replacing much of the functionality, has nice charting functionality
  • still deciding best practice for code reviews using FishEye and Crucible
  • Confluence used for documentation and run books (support documentation)
  • Crowd used for access control
  • gains are visibility, transparency and efficiency
  • next step to look into JIRA API (using Django), tying Crowd into the current internal directory
  • try to do stories in an iteration, if that is not possible tie to an epic in the release

Performance Tuning: Pulling A Rabbit From A Hat

George Barnett from Atlassian on how they performance test JIRA.

Atlassian Summit

  • what you monitor you can improve
  • using JMeter (shocking interface but best tool out there), published scripts for JIRA and Confluence,  patched version of JMeter to get around issues with the JavaScript
  • automate using Bamboo and Maven
  • weekly soak test runs for 12 hours (1-2 months of load), daily test runs for 30 minutes
  • upgrade Java from 1.5 to 1.6 – out of support, better runtime code and better support for newer hardware – massive performance increase including 25% CPU improvement (equivalent of one core), better performance on the current versions of Java 1.6 than earlier
  • faster memory will give Java better performance – DDR3 gives 3 times improvement over DDR2, and current hardware makes a massive difference
  • garbage collection – Parallel New and Parallel Old much faster than CMS, so choose the right one
  • virtual machines are a performance impact (43% hit), but we are talking 100ms, on average about 30% slower (100% slower when resource starved), Atlassian have recommendations for JIRA and Confluence in a virtualised environment
  • upgrade browsers to a modern browser (IE6 is unsupported and slow)
  • heap size tuning – we know the JVM will starve with not enough memory, but it does not drown with too much memory (big performance jump from 1.5Gb to 3Gb, not much gain after 6Gb)
  • SSD does not show much considerable gain for read only, shows most improvement when putting the database on SSD
  • MySQL Percona release showed no considerable improvement for JIRA over standard MySQL database due to caching (but good for applications that have high query rates above 3,000-4,000 queries per second), MySQL tuning did not have much advantage either

State of the Union (Part I)

An overview of the new features coming up in JIRA and GreenHopper.

Atlassian Summit

Delivering World Class Documentation And Support Through Confluence

Sarah Maddox presented this session on how the technical writing process is done at Atlassian.

Atlassian Summit

  • using comments – strive for fun and emotion
  • embed Wufoo into the page using the widget connector
  • linking to external blogs where there is a good how-to information (just indicate that they are linking to external content)
  • using Twitter for release notes – highlights from the release notes with a short URL, not concerned
  • tips for using Confluence via Twitter (going live in the next few weeks), using the widget connector to embed Twitter
  • doc sprint (sometimes known as a Book Sprint)- get people together in a room for a few days to write documentation – when you put people together and give them a purpose they do awesome stuff
  • take photos when doing Doc Sprints and have fun – the photos are good to convince others to join next time
  • dragon slayer documentation for complex steps or documentation – 8 stages with many steps
  • people love a challenge and a game, so make documentation fun
  • free t-shirts help too…

Confluence As A Support Knowledge Base

Jeremy Largman presented this session.

  • low barrier to launch – just setup a space and create a template for consistent look and feel
  • documentation theme is good for managing documentation hierarchically
  • key to a good knowledge base is proactive articles
  • knowledge base surveys (was this helpful?), intelligent search to get highly ranked articles to the top and federated search in the knowledge base survey plugin
  • use an internal tool called Hercules to scan Confluence pages for error messages to give cutomers a response when they raise a support ticket in JIRA
  • is it working – do a knowledge base survey, use Google Analytics, measure support tickets and do business intelligence on the database
  • Google Analytics shows that 99% of hits come from Google not from Atlassian website, but once they hit the site they stay and search within it
  • measure impact on support – unnecessary (could have found it themselves), avoidable (would have been avoidable if the knowledgebase existed) and necessary (a knowledge base would not have helped)
  • measure to ensure unnecessary and avoidable and decreasing and necessary are increasing
  • satisfying for support engineers to be proactive

Other Stuff

I stopped by the Atlas Bar to ask some questions for my colleagues in the hope I would get some brilliant answer I had not already considered:

  • LDAP for JIRA – we just hooked our JIRA instance up to AD, but, unlike Confluence, JIRA does not have the property to allow users to be automatically added to the database. The bad news is there are no easy answers to this currently, about the only way is to write a script to keep the users in sync. The better news is that JIRA 4.3 is supposedly getting an LDAP overhaul, so I’ll hunt down some more information tomorrow.
  • Searching attachments in JIRA – there is no way out of the box to search attachment names or to search the contents of attachments, and there are no plans for such functionality. However, there is a plugin called the JIRA Searchable Attachments plugin that does exactly what we want, unfortunately, it is not compatible with JIRA 4.x so it might require some code hacking to get working effectively.

I also recorded about 20 minutes of questions and answers for a customer video during the afternoon, I am going to be very interested to see what comes out of the editing process (and what gets left on the cutting room floor!)

Scott Farquhar

Thoughtworks Quarterly Briefing: Emergent Design & Evolutionary Architecture

Yesterday ThoughtWorks held a quarterly briefing in Brisbane for which they shipped out Neal Ford (who I had seen speak at Agile 2008 previously). My notes from the breakfast session are following. I was also lucky enough to get invited to a roundtable lunchtime one-on-one discussion with Neal and a handful of my peers from Brisbane, which provoked some great discussion.

Emergent Design & Evolutionary Architecture - Neal Ford (Brisbane)

My key takeaways were thinking about design like a lossy compression algoritm (it’s a good analogy about the loss of clarity), the secret to winning Pacman and the insight (from the lunchtime session) that Flickr have got continuous deployment down to 30 minutes (impressive!)

The slides for this session are available on Neal Ford’s website and via Slideshare.

My notes:

  • basis for this talk comes from a number of IBM developerWorks articles by same name
  • emergent architecture – bad idea, because you need something to build on
  • spectrum of design – from waterfall to cowboy hacking, agile design is somewhere in the middle
  • big design up front – a bit like trying to reconstruct a picture that has been through lossy compression, you lose the clarity
  • emergent design (hardware) – Apple iPod click wheel – refactored, but you had to buy a new ipod to get the updated functionality
  • patterns – technical (plumbing) and domain (business logic) – defines abstractions
  • avoid abstracting too early – speculation, YAGNI, business changes radically, experience helps to identify these (architects)
  • What is Sofware Design? (Jack C. Reeves, 1992) – proves we just reinvent the same thing over and over in software
  • final delivery for engineering is a document (because you are designing a bridge, not building it), The design document in software is the complete source code (source == design)
  • manufacturing is the build process – in Java/.NET this is free, and happens automatically
  • in software, everything is part of the design process – code, test, debug
  • software cheap to build but expensive to design

Things that obscure emergent design:

  • complexity – essential (inherent) and accidental (we usually take a simple problem and accidentally make it complex) – what we imagine and what results are different (field level security example)
  • technical debt – gap between design you imagined and design you got (usually due to schedule pressures), debt is not a bad thing unless it gets out of control, so in software you need to negotiate repayment
  • negotiate repayment – hard to convince management, demonstration trumps discussion eg. cyclomatic complexity per tag / branch of code (proved that we made the date but the effect that had on the code)
  • genericness- building in layers, just in case

Things that make emergent design easy:

  • test driven design – design emerges from tests, undertanding of intent and allows you to measure it, exposes design flaws early and allows refactoring (Neal has a talk specifically on this subject)
  • refactoring – encourages collective code ownership, fix broken windows (from “The Pragmatic Programmer“), prudently refactor aggressively (fix small problems at the time they are discovered otherwise create a technical debt backlog – assign a pair that does this for the entire iteration), code should get stronger with age

Metrics

  • cyclomatic complexity – measures complexity of function based on branches and decisions
  • afferent coupling – how many other classes use this class, shows the centre of the code base – ckjm (Java), showed an example across the Struts codebase
  • expressiveness – neads to be readable, comments not executable and always out of date – Java vs Groovy and Ruby example (no closures vs closures)
  • abstractions – Pacman example – intelligence built into maze (a large state machine), ghosts use Pacman smell (can’t tell where Pacman is going, only where he has been)
  • framework level architecture – you download a library, usually not a single class, JSR294 solves this in Java (have done this with Ivy and Maven previously)
  • “architecture is the stuff that is hard to change later” (Martin Fowler see his article “Who Needs An Architect?“)
  • politics of architecture (usually because architects are senior), build vs buy (generic software with a few tweaks is usually just a myth because software can provide a strategic advantage)
  • design == code, always try to leave decisions until the last responsible moment

Agile Academy Meetup: Usability & Clouds

MeetupAgile AcademyThe Agile Academy runs a quarterly meetup in Brisbane and held a meetup this week on usability, whilst their meetup in November was on Cloud Computing. Here is my wrapup:

Agile Is From Mars, Usability Is From Venus

  • lots of good agile usability discussion started by Jeff Patton on the agile-usability group
  • cobbled together design forces usability not to have the incremental design it needs
  • coding is creative, the only thing mechanical is compiling
  • be a tribe leader and collaborate, suggested reading is Tribes by Seth Godin. Teale recognised by her managers for her leadership for getting out there and posting to the internal Yammer site
  • goal directed design, focus on the goals of the user – design applications in terms of needs and goals and underlying motivations, so when the transport or technology changes, the design work is still relevant
  • poetpainter.com (Stephen Anderson, Interaction Designer) – who are we designing for and what are we designing for, fundamentals of experience design (http://www.poetpainter.com/thoughts/category/Models–Frameworks/)
  • get into the head of users with user needs – motivation keywords to articulate user needs – increase positive aspects, maintaining status quo and decrease negative aspects – flopped as a workshop but worked wonders as a survey (and surprised the business as to the candid responses from the users)
  • user goals – who I want to be (life goals), what I want to do (end goals) and how I want to feel (experience goals)
  • use success sliders to understand how important the project team view usability
  • personas – need to have understanding of users and need to do impact analysis
  • storyboards do not need to be neat, just a rough drawing to determine if you are hitting the mark
  • put the name of the persona in the storycard (not just the role) such as: As a [role of user] [name of persona]…
  • use MOSCOW (Must, Should, Could, Won’t) for prioritisation
  • 960 grid system – consistent framework for screen design
  • parallel track system – designers one iteration ahead of developers and business two iterations ahead of developers
  • the featuritis curve – more features you add, the harder it is use
  • 5 second usability test – realise that the middle part of the page is the most important part of the page, helps business understand where to put content – see http://fivesecondtest.com for example, but Teale creates her own with PowerPoint
  • for more on usability testing read the Handbook of Usability Testing or use TechSmith Morae (but this is very expensive)

From the question and answer session:

  • hard to manage parallel development two iterations ahead because stories always change, Marina Chiovetti added that research suggests this only works for a maximum one or two week sprints/iterations whilst Phil Abernathy suggested that the use of usability frames means that screens are being tested with the users upfront
  • Tealse does not use wireframing tools but rather does these in a workshop by hand. She only uses Adobe Photoshop when needed. Someone suggested that Adobe Fireworks is also a good tool and has templates on 960 Grid System
  • PAC analysis – People, Activities, Context

Agile, Lean & Green IT Come Together

Gavin Keeley presented at the Agile Academy November 2009 Meetup:

  • President Obama mentioned green as much as the global financial crisis in his innauguration speech
  • commerical use of IT is responsible for 2% of CO2  emissions, larger than the airline industry
  • of all PCs in use, only 6% of capacity is utilised
  • power is the biggest issue for data centre managers – can’t get enough off the grid
  • Suggested reading: Green To Gold by Esty & Winston
  • Amazon is the poster child for cloud computing, issues with latency in Australia thoughcloud – getting capacity just before you need it
  • agiles final frontier – how do we get colleagues in infrastructure on the journey with application developers
  • VMware at Virtualization Forum 2009 – View, vSphere, vCloud, vApps (what was Spring) – 85% market share
  • Microsoft Windows Server 2008 Hyper-V also on the bandwagon
  • Xen – open source virtualisation technology – Oracle only allowing certification on Xen
  • latest buzzword – the software mainframe – that’s restrictive, how about the software data centre
  • 3tera doing interesting things in the grid space

ASWEC 2009 Wrapup

ASWEC 2009Earlier last year I attended the Australian Software Engineering Conference (ASWEC) on the Gold Coast. I recently had to dig up my notes when creating a summary of my year in Agile (2009), and, since the conference was before I started blogging in anger, I decided to post up my notes now.

My impressions of the conference was that whilst its theme was “Agile, the New Mainstream”, many of the core attendees (mainly from the academic and research environments) were relatively unaware of agile in practice. My core criticism was that unlike other conferences I have presented at, this conference requires the speakers to still pay to attend. Luckily my employer was a sponsor and negotiated a free pass, but for this reason I did not submit a proposal for the ASWEC 2010 conference that is being held in Auckland, New Zealand.

ASWEC 2009 - Agile Academy

The following are my notes from the sessions that I attended.

Keynote: Specialization and Economies Of Scale

Mary Poppendieck delivered the day 1 keynote:

  • deal with complexity? – divide and conquer – along what lines do we divide?
  • “The Pin Factory” (Adam Smith, 1776) – divide by specialisation
  • 1930, Ford – the ultimate pin factory – variety is the enemy – a car for every purpose
  • cost of changeover – batch and queue – $ cost to change machines over, Little’s Law (queuing theory)
  • cost of delay – cash flow, obsolecence
  • cost of mistakes
  • cost of motion
  • cost complexity – scheduling, learning
  • use a work cell instead of economies of scale – relied on cross functional team
  • 1968, Edsker Dijkstra defined structured programming and proclaimed need to eliminate bugs to start with, the programming will be cheaper
  • 1972, Harlan Mills defined top down programming – should not have difficulty at integration
  • divide by hierarchy / organisation
  • 1972, Dave Parnas defined criteria for decomposition – modular programming, easier to change
  • 1974, Vint Cerf / Robert Kahn invented TCP/IP – each network stands alone, no information retained by routers, no global control, communications on best effort basis
  • division by matching the domain

Amazon – all about scale

  • transitioned to services, each one
  • owned by two pizza team – must be able to feed the team with two pizzas
  • eliminated communication between teams, seven people cradle to grave, cross functional, stay a minimum of two years
  • now sell as cloud computing
  • like TCP/IP, don’t need to reach agreement – eventual compatibility, don’t worry about different databases, accept and deal with failure
  • software structure meets organisation structure
  • teams need independence to be creative
  • Conway’s Law
  • 1976, Barry Boehm – SDLC – specialisation (like Ford)
  • IBM – convert 35,000 engineers world-wide to agile
  • WebSphere – 10 month deadline, customer feedback every iteration, early access program, customer feedback on discussion forum – 50% of marketing information wrong so developers listened to customer – phenomenal sales day one of release, support calls down by an order of magnitude
  • case study – do agile right and find defects the minute they happen
  • xUnit testing – one of the best software engineering advances in the last decade
  • batch and queue so ingrained, we fail to see queues of work that will take years to clear
  • utilisation paradox – 100% utilisation of highway is a parking lot
  • Empire State Building – September 1929 to May 1931 – on time and 18% under budget, demolition to finish – biggest issue was supply of materials, the only thing that was scheduled (Carol Willis, “Building The Empire State” builders notebook)
  • 4 pacemakers to build the building
  • schedule the constraint – use a pacemaker schedule for the constraint

Towards Specification Based Testing for Semantic Web Services

Gill Dobbie delivered this presentation:

Intellectual Property In The Software Industry

I always enjoy presentations on the legal side of IT, and Alistair Smith delivered this informative presentation:

  • 4,000 patents last year to IBM, USA has the most number of patents
  • copyright protects the expression of an idea, not the idea itself
  • patents protect products, methods or processes – jurisdictional (so need to apply multiple times)
  • confidential know-how – not known to the public (eg. the recipe for Coca Cola)- work must be secret, can be leaked
  • trademarks – distinguish goods / services of a trader, Coca Cola 80% is recognition of product – must be distinctive, reproducible, people trading for smells (tyres that smell like roses), can be renewed indefinitely
  • strong protection – need range of IP types
  • do an R&D review eg. Kambrook and power boards
  • patent pending – filed but not yet granted
  • open source and patents do not mix – but use other IP
  • reward inventors
  • formalise IP ownership – make explicit in employment contracts
  • review existing IP – company that had patent for JPEG compression missed 10 years of royalties
  • maintain records of R&D – evidence of inventorship, ownership and prove date of creation for copyright purposes – maintain previous versions of software in unchangeable form, keep notes in bound notebook, dated and signed
  • search IP databases – look at what competitors are doing
  • use trademarks that are registerable – not descriptive  of product, should be distinctive
  • don’t just rely on copyright – does not protect against independent creation
  • don’t rely on confidentiality agreements alone – provides very little protection and hard to prove and hard to recover from
  • don’t rely on open source software being unencumbered by patents eg. Microsoft has 200 Linux patents, IBM “bluewash” on its new takeovers and check code line by line (takes six months)
  • no 10% rule on copying software – infringe is a substantial part – 2 JS/CSS files in a content management system
  • don’t forget to mark products – impact on damages

Invited Presentation: Bringing Agile To Life At The Enterprise Level

ASWEC 2009 - Jeff Smith

Jeff Smith, the CIO of Suncorp, delivered this keynote presentation:

  • feedback is essential
  • Wikipedia – 6 employess, 200,000 hours of contribution from community
  • Grateful Dead – high grossing band, found people like listening to music together, “collaboration”
  • leaders need to encourage simplicity
  • provide tools to enable collaboration
  • leaders use passion not threats to get things done
  • innovation / entrepreneurship is for everyone – need to channel the passion
  • Pixar – core beliefs, simplicity, intellectual capability
  • managers need to help teams get out of failure
  • trusted environment – safe to tell the truth, create a learning environment
  • creativity for everyone not just the artists, focus on people not the ideas
  • disseminate the authority to the teams
  • similarities between Pixar and agile
  • get people interested in learning
  • why? why now? why do it this way?
  • we are good at reacting, not so good at responding, initiate change is hard
  • generosity is hard – right for community before yourself
  • managers have employees, leaders have followers
  • culture top down, innovation bottom up
  • fear of failure – actually fear of blame / feedback, very few people fired due to a failed project
  • worse than “no” is a “not yet”

Can change behaviour but hard to change beliefs:

  • don’t believe what you tell them
  • don;t believe what you show them
  • believe what friends tell them
  • people always believe what they tell themselves
  • recognise leadership is scarce – is uncomfortable
  • few things happen by accident
  • don’t settle, have faith in what we do
  • inspire, connect, leverage…

Agile In Government: Successful On-Time Delivery of Software

Adrian Royce delivered this presentation (and the paper won the award for best industry paper):

  • agile buzzword – everybody wants to be flexible
  • chose Scrum – collaboration and for the whole team, encompasses agile principles
  • backlog, only tasks of highest immediate business value were actioned
  • pilot project successful (Housing)
  • twelve successful projects delivered using Scrum (6 = pilot, 3 < pilot, 3 > pilot)
  • largest Scrum project undertaken ($3 million, 4 months ahead of schedule)
  • not everyone ready for Scrum, “just common sense”
  • sense that agile projects increase risk
  • agile = no documentation – government audits require documentation
  • obstacle – organisation and culture
  • benefits – hard to quantify, able to respond quickly
  • increase in morale, productivity, adaptability and business engagement, low staff turnover
  • Scrum Master is essential, focus on team, remove impediments, sprint zero is a necessity
  • do not impose, keep productive teams together, human interaction over technology
  • measure everything, focus on quality (client was not going to be the first to find a bug), leadership essential

Implementing an Enterprise System at Suncorp Using Agile Development

ASWEC 2009 - James Couzens

James Couzens delivered this presentation:

  • what worked well – business engagement, wide stakeholder group
  • not working well – coordination with integration team, managing backlog, overly focussed on showcase
  • definition of done not appearance of done
  • textbook agile does not scale without adjustments
  • business need to be onboard

Keynote: Agile Thinking – From Concept to Reality

Graeme Wood, the founder of Wotif, delivered this keynote:

  • started using agile without knowing they were using it
  • design constrained by six UI screens and a rough database design
  • chaos is fun, makes people think quickly
  • market for hotel rooms not working efficiently (travel agents) – only 60% – 70% occupancy
  • no business plan, no design, originally written by two people sitting side by side, allowed for quick change
  • launched in 2000 with 60 hotels, slim margin
  • no advertising budget, word of mouth, wined and dined journalists, wrote stories, etc
  • simplistic UI – has hardly changed
  • supplier can change cost hour by hour – not locked in
  • fewest number of clicks, no login / registration
  • keen not to have hospitality people – that was model we were trying to change
  • small teams, 9-10 max – largest system made them focus on the architecture – if don’t have that becomes “wild west territory”
  • flat organisational structure, keep small teams focussed on what they are there for
  • business dragged back from solving all of the “distressed inventory” opportunities
  • need to get agile thinking into the business planning area  why don’t more IT people go towards management? – IT such a big part
  • start your own conversation, send a demo to influence, start a future systems blog
  • communication with potential business partners or customers
  • social networking has opened up communication outside normal business
  • all this fails, resign and start your own business
  • majors came aboad reluctantly, no paid positions, alphabetical is star rating, started renaming properties and getting regraded – leveled the playing field
  • suppliers to hospitality industry have been slow to change
  • started with Visual Basic, now all open source
  • Wotnews – public site plus corporate solution to look for customers, staff, etc… Initially around financial services, feeds from the ASX, verging on Media Monitors, greater depth than Google News, can get Wotnews to get competitors newsletters
  • re-architected about two years in, cancelled big bag because it didn’t feel right,now doing incrementally

Static Bug Checking Tools and Why You Should Care

Nathan Keynes delivered this presentation:

  • date back to Lint (1978)
  • FindBugs
  • most people just run once
  • most bug checkers report false positives and false negatives
  • commercial bug checkers expensive, comparisons not available and price on size of codebase
  • upfront effort, legacy codebase may not be parseable
  • Parfait for C++ / C – Sun for Solaris
  • BegBunch – benchmarking bug checking tools – accuracy / performance

Simulating Software Evolution with Varying Numbers of Developers and Validation Using OSS

Steve Counsell delivered this presentation:

  • hard to known optimum number of developers – Brook’s Law
  • used software to simulate this
  • empirical studies difficult – costly, OSS disparate, developers
  • comprehension not so good, implementation very little variation

Project Management Stage

ASWEC 2009 - Project Management Stage

I was thrilled to be invited to chair the Project Management Stage on behalf of the Agile Academy, and introduce two awesome talks by Paul Bannerman (Risk Implications of Software Project Organization Structures) and Steve Jenkins (Failing at Iteration Management – Analyst Style)

ASWEC 2009 - Craig Smith Project Management Stage

ASWEC 2009 - Steve Jenkins

Extreme Programming Stage

Myself and a number of my colleagues were together on this stage including:

Andy Marks presenting Faking Agility – A Coach’s Observations

ASWEC 2009 - Andy Marks

Rebecca Hopkins presenting Infrastructure Projects Go Agile!

ASWEC 2009 - Rebecca Hopkins

And myself and Paul King presenting Experiences from Agile Projects Great & Small

ASWEC 2009 - Craig Smith &amp; Paul King

and the copy of our presentation:

JIRA 4 Partner Hosted Seminar

In November, Steve Dalton and I hosted a partner seminar for the launch of JIRA 4.0. Steve’s company Refactor is an Atlassian partner and I attended on behalf of the Agile Academy who sponsored the room at Brisbane Square. Atlassian provided a JIRA t-shirt for all of the attendees.

Steve kicked off with an overview of JIRA and a demo of the the new Open Social dashboard as well as the new JQL functionality.

I then gave a demo of JIRA and GreenHopper 4.0, and its usage at Suncorp. Some of the topics I covered included:

  • overview of other new Jira functionality, such as activity streams, the new menu system and the ability to create a new issue on the right hand side of the Find Issues screen
  • GreenHopper is a plugin
  • remember the difference between radiators and refridgerators when evaluating tools
  • Suncorp chose JIRA due to cost and already in use
  • housekeeping – GreenHopper administration (global and local), custom fields (story points, epics), performance
  • planning board – versions and components, new epic functionality, synchronisation, release, drag and drop functionality, statistics, print cards, user preferences and contexts, new card button, new wiki rendering
  • task board – setup, workflows, new Kanban functionality, storypoints, double click cards, subtasks
  • chart board / release board – reliance on statistics and GreenHopper functionality
  • cross project burn down and the new agile gadget

There is no video of the event, although I feel the JIRA 4 webinar covers much of the functionality we discussed quite nicely.

OSDC 2009: Experiences From Agile Projects Great & Small

My presentation from the OSDC 2009 Conference in Brisbane that I presented with Paul King called “Experiences From Agile Projects Great & Small” is available on SlideShare.

Experiences From Agile Projects Great & Small

OSDC 2009 Day 3 Wrapup

Day 3 of the OSDC conference, I presented two sessions on Agile (with Paul King) and Data Migration, so preparations and organisation got in the way of attending and as many sessions as I would have liked. Here are my notes from the sessions I attended.

Keynote – Google Wave

Dhanji Prasanna presented the keynote, here are my notes from the session:

  • answer to question “what would email look like if it was invented today?”
  • not just about text, about structured content
  • gadgets – state is stored in the wave (eg. using maps)
  • can exchange waves across different wave servers using federation
  • keep data you own on your own wave server, put you collaboration on the public wave server
  • robot participants are first class participants
  • spelling robot corrects spelling in context, and runs server side (Spelly), Linky does similar for links
  • use open source tools like Guava libraries, Guice, WebDriver, GWT, OpenJDK
  • all of Wave will be open sourced, including the client
  • can play with the reference implementation right now

Experiences From Agile Projects Great & Small

The session I presented with Paul King had a good crowd in the main auditorium. The slides are available in a separate post.

Experiences from Agile Projects Great &amp; Small

“Change Bad!” – Change in Database Schemas and Source Code

Andy Todd delivered this session, here are my notes:

  • “Data matures like wine, applications like fish”
  • What changes – tables, views, stored procedures
  • could put DDL in version control – not same as database object
  • could put database independent model in version control – representation only
  • database = DDL + data + implementation
  • could store complete DDL for each scheme version – lots of work for DBA
  • could store complete initial DDL & subsequent deltas
  • could store complete DDL for every version and subsequent deltas
  • don’t forget about reference data and schema (user) creation scripts and store in version control
  • even if scripts are in version control, you should still have a backup
  • secret to success is testing – should be like code and have unit tests and be automated
  • hard to rollback
  • every migration should maintain data integrity
  • pioneering work by Scott Ambler – Database Refactoring
  • high availability is a different kettle of fish – all of the above is invalid
  • need to think about how you version control your database structures, different to how you manage source code

Data Migration In An Agile Open Source World

The session I presented had a decent crowd. The slides are available in a separate post.

Lightning Talks

Open Source Game in 5 Minutes

local::lib::environment

  • working with multiple distinct libraries in Perl
  • integrates with CPAN, etc…
  • virtualenv in Python does the same type of thing
  • cloning this for Perl, available on github

Ext.Direct

  • no Perl implementation for ExtJS, so wrote Ext.Direct
  • similar ports for a lot of different languages

OSIA (Open Source Industry Association)

  • local industry association for open source
  • $50 to join
  • numbers used to give to government

bluehackers.org

  • for geeks dealing with depression

Locknote – Open Source in Government

Pia Waugh delivered this keynote, my notes are as follows:

OSDC 2009 - Day 3 - 40

OSDC 2009 Day 2 Wrapup

Day 2 of the OSDC conference, one talk delivered today with Paul King on Using Groovy for Testing. The following are my notes from the sessions that I attended.

Keynote: Simplicity

Marty Pauley delivered the keynote, my notes are as follows:

  • good code is easy to read, beautiful (aesthetically pleasing), useful
  • evil code is difficult to read, ugly, but it is still useful (otherwise you would have no code!) because unfortunately it is still in use
  • good code should be fast, concise, advanced, maintainable
  • “Simplicity is the ultimate sophistication” – Leonardo Da Vinci
  • comments are an indicator that you’re code is crap, documentation and comments are not the same (documentation is useful), ironic that some languages put documentation in comments (eg. JavaDoc)
  • always out your scripts in a module, makes it easy to read (the comment was made in relation to Perl) and makes it easier to test (one script that calls one module, that can then call other modules)
  • Google is good example of simple (as compared to Excite and Yahoo! at the time) – search engines started complicated and became simple
  • Example of simple first is that Americans used the Space Pen in space (highly engineered pen that would work on all surfaces and work in space), but when they asked the Russians what they used, it was a pencil
  • “Java was designed for stupid people! – was designed because it was deemed to hard to write code in C”
  • look outside your current toolset, we all have problems in common

How to get Rails Web Applications Accepted in Industry

Harley Mackenzie presented this talk, my notes are as follows:

  • why Ruby? – expressive language, object oriented as everything is an object in Ruby (lends itself to good, readable, maintainable code), dynamic allows to delviver scripts quickly and maintainable
  • hard to find Ruby people? – many recruiters do not understand the roles they are recruiting for, Chuck Jones (of Warner Brothers cartoon fame) looked for artists knowing he could train them to animate, the same goes for quality developers
  • open source – lower initial cost, source will never disappear as will always be around in some way, don’t emphasise the FREE but the FREEDOM, dynamic languages you always have the source (not compiled)
  • efficient – productivity important to industry
  • elegant – write easy, maintainable code
  • reliable – “testing to oblivion approach”, everything has tests, commercial environments do not value testing, all say it is a good idea but will not pay for it
  • expressive – easy to understand what the code is doing
  • why is Rails not adopted? – management are risk averse (don’t want to go outside the Microsoft norm), corporate IT motivated by fear and uncertainity (like to do things the way they are always done), loss of control (don’t understand and don’t like when you know about things they don’t), outsourced IT providers (only in it to make a buck so resistance to change)
  • solutions and adapt (know what you can change and what you can’t)
  • demonstrate – give them a VM (“take the puppy home for the weekend), find the champion
  • cloud solutions – if you can’t deal with anorganisation and their infrastructure, bypass it (use Amazon or similar)
  • draw the line – sometimes you have to walk away than comprimise (figure out where the line is), usually can deal with server operating system, web server and database but not the language it can be written in

Open Source Web Apps in Azure

Jorke Odolphi delivered this session, my notes are as follows:

  • software as a service (SaaS) – multi-tenant, pay as you go
  • platform as a service (PaaS) – applicationn frameworks, languages
  • infrastructure as a service (IaaS) – pay as you go, scale (like Amazon EC2, GoGrid)
  • Windows Azure is an operating system in the cloud, where you run applications, designed to scale
  • lots of servers sitting in shipping containers (2,000 servers per container, 7 hours to get up and running after delivered) with VM’s running Windows (called the Fabric)
  • components – web role (front end facing, static content, ASP.NET 3.5, WCF, Fast CGI applications such as Perl, http(s) inbound), worker role (like a Windows service), storage (blobs, tables and queues)
  • running PHP in Azure – Eclipse tooling available (WindowsAzure4E)
  • MySQL in Azure – run as a worker role (configure ports and storage)
  • Tomcat running in the Azzure Cloud (http://oss.cloudapp.net/)
  • No environment yet in Australia, but Singapore coming soon, pricing

Desktop Applications for Web Developers

Ben Balbo presented this session, my notes are as follows:

  • cloud issues – network outages, working offline, server outage, application failure affects everyone, access/ownership of data, dependence on third party to fix bugs
  • Google Desktop Gadgets, Adobe Air, Windows 7 – just HTML, all the information stored in the gadget or via a web service
  • Mozilla Raindrop – Mozilla’s reaction to Google Wave, pre-alpa, a local web service
  • WordPress + Google Gears
  • iPhone applications
  • XUL – XML User Interface language from Mozilla, load any interface around Firefox (use Firefox as a framework)

Using Groovy for Testing

Presentation I gave with Paul King, and was an interesting experience on how to break down a 3 hour presentation to a 30 minute talk (which we started about 20 minutes prior to the talk commencing)!

Business, Law, Open Source

Brendan Scott presented this talk and these are my notes from the session:

  • each decision you make limits your subsequent decisions
  • Starting a business has effect on how easy it be to sell down the track (setting up within a corporate vehicle) – selling of shares make this easy as the legal person transfers. Most businesses are setup where the owner owns all the assets and personally signs up to all the contracts such as phones where their name is on the contract (makes it hard to transfer later on)
  • stay away from partnership (and the use of the word partner)
  • Pov Ray had pre-open source licencing, wanted to sue someone who was bundling it and selling it – needed copyright ownership to sue but had to go and find all of the contributors first
  • code consents in case somebody takes code and uses it in breach – keep records of who, what, when
  • IP Ownership – once you have transferred rights, it is very difficult to recover these rights, you need to get legal advice early
  • dispute resolution – usually because people not speaking to each others, lawyer can help you identify issues, send the nasty letters, courts look favourably if you have tried to sort out the issue
  • negotiations – lawyers familiar with the lines of argument
  • legal arcana – knowing the legal secrets and finding holes in contracts, etc…
  • copyright – owned by employee unless agreed otherwise
  • don’t lie about your products and services (Part V 52 Trade Practices Act)
  • Part V, Dvision 2 Trade Practices Act – don’t exclude warranties, limit recourse to repair or replace, it is illegal to exclude warranties

Lightning Talks

An extended session of lightning talks. here are the notes:

Make my PHP 66 Times Faster

  • slow code read in a really big library everytime it is run
  • idea is to make a socket call and run off the server, loading only once

Something About Cars

  • entertaining comparison of programming languages to cars

The Coming Programming Language Crisis

  • entertaining look at new programming langauges, recruiting for the Australian LOLCODE Developers network! (see http://lolcode.com/)

OSDC – Open Source Developers Club

  • parent organisation for the conference
  • like meetings (found about every third session, people attend a session that is not their usual language)

Hosting Web Sites In The Cloud

  • created Grocery Choice, wanted something that had scale initially but assumed would not need it going forward
  • Amazon EC2 – virtual machine farm, upload your VM to the cloud (takes about 3 hours)
  • using commercial, licenced server so limited to CPU’s that coule be run
  • can move your instance onto a larger virtual machine
  • pay as you go, for what you use

Geography, Databases & Government

Netrek

Phoebe’s Netbook

  • Phoebe is 4, has an original eePC
  • the distribution is very easy for children
  • TuxPaint and other programs in Linux that are good for kids

GMT (Generic Mapping Tools)

  • set of command line tools
  • pscoast – will show a map, can then map cyclones as they move down the coast

Byte code optimisation using Promise

Open Source Licencing vs Microsoft

UpStarta.biz

  • starting a business with no money
  • do something disruptive – is a potential client trying to solve a problem that your product addresses
  • low-end disruption – easier way of doing something that already exists (eg. MySQL vs Oracle)
  • new-market disruption

Handy Python Functions

  • if building libraries, pleause use doc tags!

Katoomba

  • open source SMS gateway
  • written in Ruby
  • will be released shortly

Trosnoth

  • written in Python using pygame
  • open source, GPL
  • team based, strategy game

Google Wave Bots

  • Wikifiy
  • Piratify
  • Flippy

OSDC 2009 Day 1 Wrapup

OSDC 2009 Australia is being held in Brisbane this year at the Bardon Conference Centre, and I was lucky enough to get 3 speaking slots (2 shared with Paul King). Day 1 was full of interesting talks, my notes are summarised below.

Understanding Volunteers

Karen Pauley delivered the day one keynote. My notes as follows:

  • recommended book by Charles Handy (Understanding Organizations)
  • organisation for mutual support (eg. Tokyo Linux Users Group, Sydney Perl Mongers) – consist entirely of volunteers who have a shared interest, don’t like to be managed, but a group needs some management (it’s like herding cats), anybody can join
  • organisation to provide a service (eg. The Perl Foundation) – requires structure to handle queries, cannot just join if you want you, expectations of communication and responsiveness and regular releases
  • campaigning organisation (eg. Enlightened Perl Organisation) – camapigns aren’t managed they are led, usually fail when the organiser gets bored
  • motivations – in open source we like to reinvent things
  • fun should be self evident, we volunteer to enjoy ourselves
  • lack of respect can stop the fun, need to treat each other well, need to apologize (and not follow it with a but…)
  • anger – “I know you’re all volunteers but…”, feedback can offend volunteers, in many cases people don’t mean to offend, in some cultures you write directly, tone down the rage and pause before replying
  • learnings – want a creative learning environment, learning and using something new is fun
  • as per Maslow, one of our key needs is to belong
  • belong with people who think the same way
  • impressions – decide very quickly our perception of people (4 seconds) – in person we judge looks, on the internet we judge the way we type
  • our first impression of people on the internet could be an email, IRC or a twitter – we make judgements of people based on 140 characters
  • the online life is real, so be yourself
  • everybody has a voice, make your communities fun

Joopal and Drumla: Not Your Usual Mashup

Sam Moffatt presented this brief talk about Joomla! integrated into Drupal (Drumla)

Introducing Django – Calling All Web Developers with Deadlines

Akash Mehta delivered this talk, my notes are as follows:

  • Django is a web framework to build websites quickly
  • used by a lot of newspaper / news / media sites (see DjangoSites.org for a full list)
  • a Python framework – extremely powerful high level scripting language, do a lot with less code
  • a python web application framework – excels at data driven web applications
  • a python full-stack web application framework – if using Django you are using the full system, not portable, mature, been around 5+ years
  • batteries included – functionality you need comes out of the box
  • Django has good support for internationalisation
  • DRY -> DRY (OAE) – Don’t Repeat Yourself (Or Anybody Else)
  • views do not usually have URL’s mapped to them, custom URL mapping takes care of this
  • not a serious business framework (see djangopony!)
  • good documentation – starts with a comprehensive tutorial, documentation then splits into functioanlity / what you want to achieve, stored in Subversion, there is an online version of the book which is also published by APress and available on Safari
  • automatic administration – not a scaffolding, end-to-end solution for managing production data, lots of useful widgets
  • available applications – search (Haystack is the current favourite), blogs (plenty available on github), security and administration built-in
  • views take advantage of decorators in python, such as @login_required
  • templates – template inheritence and blocks
  • URL config – no automatic mapping, create your own URL’s, can use regular expressions, usually mapped to views

Perl6 Now

Scott Penrose delivered this talk, my notes are as follows. Talk will be made available online.

  • when is Perl 6 available – now, language specification
  • looks like Perl
  • biggest problem with Perl is when you have @array you need $array to access it
  • More information at http://rosettacode.org/wiki/Category:Perl_6 and http://github.com/perl6/perl6-examples
  • Pugs – not very active, but a good reference application, written in Haskell
  • SMOP / Mildew – library parsers
  • Sprixel / Elf – implementations
  • Rakudo – run time engine, implementation of Perl 6 that runs on Parrot
  • full version should be available next year
  • performance – slower, Parrot keeps changing, performance increasing month on month
  • CPAN – not currently available but coming
  • 42 modules available now via github, mainly web and database
  • IDE – Vim syntax highlighting and Padre
  • debug – Larry Wall – “why do you need a debugger, just print line”, no interactive debugger yet
  • fun langauage to write in – can write code shorter and faster, execute faster is coming

oFono – Open Source Telephony

Denis Kenzior delivered this talk on oFono, my notes are as follows:

  • many devices and modems to talk to – all talk vendor specific protocols
  • existing projects – FSO, only considering smartphones, assumed AT modems, API not well constructed, implemeted in Python and too slow, does not support multiple modems
  • existing projects – Qtopia, end of life, did not support D-Bus
  • learnt from these projects – GSM is hard, huge and boring, everything exposed in the API but very little used or available
  • GSM is hard – massive amount of specifications (call handling (in, waiting, multi-party) sevices such as call waiting and number exposure, SMS), vendor specifics (enhanced SMS, smart messaging, WAP), storage (number, calls, SIM)
  • GSM is really hard – backwards compatibility (most of the specification still around from 1G), every bit counts, bugs in all of the different vendor hardware that needs to be worked around
  • oFono targets all devices, target all distributions, minimal dependencies, modular, UI easy to customise / replace
  • don’t use SIM for contacts / SMS – limited to number of contacts / messages – simplified the design
  • device detection – udev, modemconf
  • plugins – read / write to SIM, send / process SMS, Call / SMS history, D-Bus interfaces such as carrier logos
  • atom – implement specific functionality eg. dial, hangup, merge, switch, invokes operation on an atom driver
  • currently supports – network registration, make and receive calls, SMS, cell broadcast, GPRS, all supplementary services
  • handful of modems and devices supported
  • Phonesim– simulates most AT modems, make / receive calls, SMS, MWI, cell broadcast, network registration, supplementary services – good for development simulation
  • API – consistent, minimal, easy
  • takes care of magic strings (MMI, those *xxx strings), read / write from SIM, service provider display (MVNO, files on the SIM)
  • oFono plugins for BlueZ – hands free & audio management
  • oFono plugins for ConnMan – 3G network management
  • oFono currently has no CDMA support
  • unique because can support mutiple devices at once

State of Play: PHP in 2009

Akash Mehta delivered this talk, my notes are as follows:

  • 1995 – PHP/FI, 2000 – PHP 4.0 (very successful), 2006 – PHP 5.1.2 , 2009 – PHP 5.1.3 (developed and released at same time PHP 6 being discussed, so many features back ported)
  • language extensions
  • 450 user groups, 1200 members in San Francisco group!, 100 in Brisbane active
  • Microsoft and Zend – awful on IIS, they are working on it apparently
  • used in dynamic applications, social networks (Facebook), business applications (FLOW3)
  • IDE’s – Eclipse – PDT, PHPEclipse, Zend, NetBeans PHP, JetBrains working on PHP editor (Web IDE)
  • SVN still dominant, github growing in popularity following in the footsteps of Rails
  • server – Apache losing ground, growing in popularity lighttpd and nginx
  • phpDocumentor for automatic documentation
  • Phing and Capistrano for build and deployment
  • Project Zero is PHP on JVM
  • Xdebug is popular for debugging, DBG is also reliable
  • CakePHP – Rails for PHP, Mozilla Addons was the big thing but recently dropped for Django
  • CodeIgniter – strong following, low barrier to entry
  • Symfony – popular, strong following, high barrier to entry, hard to use with existing code
  • Zend – full stack approach

Git Me Up

Nigel Rausch delivered this talk on Git, here are my notes:

  • adopted quickly in Rails community
  • distributed version control
  • centralised – CVS, SVN
  • distributed – Bazaar, Git, Mercurial
  • Git created by Linus Torvalds, developed for Linux kernel patch control as replacement for BitKeeper (was one patch every 6 seconds, now 6 patches per second), so needed to be fast
  • effcient in management of files – entire repository for Linux kernel is only 40% bigger than the kernel on its own
  • commit locally to your machine – have full copy of all history – can commit at anytime, can always look back at history
  • simple branching and easy merging
  • support multiple remote servers
  • SVN is simpler to use, single point of truth all the time, central control, until recently better tools
  • git init – creates a hidden directory .git, which has config and history, use to start a repo
  • git clone <repo> – clone an existing repo to start a new repo
  • git add <file> – add to repo
  • git commit -m “message” – commit to local repo
  • git has about 150 commands, plus all their options
  • git branch – master is there by default
  • git checkout – checkout a branch
  • git log – commit log history
  • git merge <branch> – merge two branches and create a new commit
  • git remote add origin <repo> – this happens automatically if you cloned
  • git push origin master – origin is server we are pushing to (by default called origin), master is branch
  • git pull origin master – fetch and merge from remote repository, pull is a fetch and merge, a fetch will just get and leave in a pseudo repo
  • Mac installs with GitK which is ugly. GitX is a better bet, TortoiseGit for Windows
  • git svn clone – will create a bi-directional git repo of your SVN repository, commit locally and push back to SVN, at a later poiint you can change your origin to a Git repo
  • rebase, or work on a branch and merge to master locally so you don’t have all of the little commits
  • initial high learning curve, supports commit often, gaining support, IDE support growing
  • binary files saved and compressed in repo

Lightning Talks

A bunch of 5 minutes lightning talks, here are the brief notes from the session:

LLVM

  • low level virtual machine
  • risk based assembly language with annotations
  • clang – convert C and C++ to LLVM
  • adopted by Apple

withgui

  • GUI programming in Python, wxPython is ugly, PyQt4 meh
  • idea – with gui.x (where x is column, frame) – clean
  • still things to do, code not yet released

Visualising Geo-Data

  • government 2.0 taskforce
  • big csv file about sighting of frogs in South Australia
  • frogspotter – every dot, different species, different colours, then a cluster library
  • the data aggregator – drill down on the data
  • frog census

Connectr Social Network

  • currently Twitter with 650 lines of Python, wish to take on Facebook!
  • current social networks have issues with privacy, incentives for hosts are wrong for users
  • no business model, not hosted on server, runs over xmpp

LCA

  • Linux Conf Australasia 2010, to held in Wellington

GLPK

  • linear programming project, sponsored by GNU (hosted project)
  • applicable to lots of things – scheduling, rostering, optimising sports drafts
  • CPLEX is commercial alternative
  • MathProg is the language that comes with it, describes the program in a math like language
  • active community
  • bindings to scripting languages

XHTML2PDF

  • used for conference books and name tags
  • pdf:toc to generate table of contents from every heading
  • sponsor logos are image tags, use CSS zoom property
  • div tag used for indenting
  • margins in centremetres, told CSS book was A5
  • absolute positioing (OK for print, not for web)
  • scripts will be published
  • similar to Latex, but simple and uses same HTML as web

iPhone Hacking

  • to get SMS out – if not encrypted they are stored on your system by iTunes
  • they are GUID.mddata files which you can access using a database client
  • bambapilla – exports conversation to XML, formats nicely as XSL in browser

Hacking OSX apps with Python

  • objective C is a lie, its just C
  • when you don’t have the source but want to change a behaviour – swizzling

Patents Rock

  • protects inventors and ideas, thoughts and ideas
  • patent voliations – side to side swinging on a swing, licking a postage stamp, inducing cats with a laser light
  • software opatents suck

Haml & Sass

  • Haml – takes HTML and makes it simple and short – implementation for Ruby
  • Sass – takes CSS and makes it simple

How I PWN