AAFTT Workshop 2010 (Orlando)

Agile AllianceThis year, I again had the great opportunity to attend the Agile Alliance Functional Testing Tools Workshop (AAFTT), the day before the Agile 2010 conference in Orlando. Organised by Jennita Andrea, Elisabeth Hendrickson, Aimme Keener and Patrick Wilson-Welsh, it was once again a wide variety of participants with a passion for testing and testing tools.

IMG_5958

It was also awesome to have Rachel Davies (co-author of Agile Coaching) facilitate the session.

First of all, the the agenda was set:

IMG_5959

We then did a round circle stating our name, role, claim to fame and hopes from the workshop. Due to the high percentage of Canadians in the workshop, our locations quickly turned in Canada-location jokes (OK, you had to be there…)

IMG_5956

Rachel then asked us to re-check the goal of the workshop. She suggested that we should check this with the group, even though it is usually set before the workshop. She asked the organisers to clarify the goals before re-checking what is in and out of scope for the workshop

The goal was: To reflect on the state of the practices and to identify ways to move forward.

IMG_5975

In scope for the workshop was ATDD, marketing, pre-requisites, how we teach, effective ways we talk about terms and use of tools to support practice. Out of scope was TDD, terminology / ontology and test after.

Pleasure and Plains of ATDD

We then broke into a number of groups to draw pictures of our pleasures and pains in relation to ATDD.

IMG_5967
IMG_5974
IMG_5973
IMG_5972
IMG_5971
IMG_5970
IMG_5969
IMG_5968
IMG_5960

This resulted in the following:

IMG_5979
IMG_5978

ATDD Retrospective

We then did an ATDD retrospective, which revealed a rich history!

IMG_5976

Open Space

After lunch, we conducted 2 open space sessions.

IMG_5986

Sales and Adoption Strategies

In the first session I attended was on Sales and Adoption Strategies which was hosted by Mark Levision:

  • Elisabeth Hendrickson suggested that ATDD does not get traction because we need to bring everyone to the table, however it can give power to a struggling agile adoption, we need to understand the fears and concerns of people and we need to have skills to talk to all of the audiences
  • Jim Cornelius said that managers think they want BDD for everything, yet we do not want to express everything in Given When Then format
  • I told the story of using ATDD on non-software development teams, as well as some of our challenges in getting test team buy-in from our testing teams to tools such as Concordion
  • Patrick Wilson-Welsh told a story about him introducing story testing to a team with no skills in testing, yet they were a rock star development team, they used JBehave and a thin TeamCity wrapper too convince them of the value
  • it was suggested that continuous integration needs to be in place to give ATDD adoption teeth
  • Andreas Ebbert-Karroum told a story of success when his team lost track of what they wanted to show at the end of the sprint, the team then wanted to do it, the barrier has been a steep technical learning curve, they are using Robot Framework but are always finding pieces missing (and wonder why in this day and age they seem to be the first person finding these issues)
  • we then heard the example of simple DSL Lookup screen (the one where you type a phone number to see if you can get DSL coverage) at BellSouth which was an example of an extremely simple user interface and lots of business logic, they used Fitnesse, as they found it was hard to test manually
  • Bob Galen suggested the need for effective grooming sessions to start collaboration, create a shared vision at the organisation level not just at the developer level, and the fact you need grass roots and top level support
  • Mark  Levison told all of his executives to read Agile Testing and now he is getting buy in and getting questions about how it might work
  • Jason Montague suggested his success has been through just in time communication, need to teams to get it working and sell the results for you

IMG_5987

Pleasure and Pain with Tools

The second session I attended was on Pleasure and Pain with Tools hosted by Elisabeth Hendrickson:

  • Express expectations in English and relate to underlying specifications
  • unit testing successful because it is in my language, my idea, nobody else involved – all you need to do (sounds easy) is to change the way of thinking, and it works for both test first and after
  • Robot Framework allows a test to be written in text, you can link from the wiki to the version control system and read directly from the trunk
  • test from a photo of the whiteboard using ApprovalTests – put a whiteboard photo in the test directory, get the system under test to create a bitmap, first manually match the photo and once the customer is happy then get the system to diff automatically moving forward
  • Sikuli uses images for tests – push a button that looks most like the bitmap in the test
  • ATDD frameworks facilitate collaboration, like Cucumber, then you need a driver
  • there was some discussion of Fitnesse versus Slim and the fact that the GPL2 code prevents adoption
  • Jason Huggins suggested that Concordion / Robot Framework / Fitnesse are too much bondage, as a developer all I need is assert
  • the question of testing Android was raised, with Jason Huggins suggesting Robotium
  • White is a .Net test framework
  • Given When Then loses detail if business people afe solely thinking that way
  • it is awesome that most of the tools now support tables, given when then and other more recent test tool approaches
  • too many tools are solely web focussed, Robot Framework is one exception although there are others
  • wikis are not comfortable for non-technical users (Elisabeth Hendrickson called this the last mile problem), many tools do not have command completion or refactoring support and output from the tools is not always management friendly (who usually want to know number of tests passed / failed)
  • to get ATDD tool buy in you need to get from scratch to test infected in 20 minutes
  • need to discover you are done sooner than you expect
  • a good analogy is why we have brakes on a car, not so you can stop but so you can go fast, the same stands for tests

Lightning Talks

We then kicked off a round of lightning talks:

IMG_5985

Every Acceptance Test Should Look Like An iPhone Commercial (Jason Huggins)

I had seen this last year at AAFTT, but good to see Hugs was still passionate about it and has some updated examples this year

How Does ATDD Work with Kanban (Matt Philip)

Principle of TD (Llewelyn Falco)

  • need to do something and then verify it (do verify)
  • benefits of a test – specifications, feedback, regression, granularity

Structure of Scalable & Maintainable Test Suite (With Robot Framework) (Andreas Ebbert-Karroum)

IMG_5997

A copy of the model is available in the blog post: How to Structure a Scalable and Maintainable Acceptance Test Suite

  • if I have stable platform and libraries, tests should be stable
  • the resource layer is the layer that should be variable (in the middle)\
  • Given When Then (GWT) tests grouped into themes, import file shield tests from business object changes

Testing Circle (Llewellyn Falco)

IMG_5999

  • discuss story on whiteboard
  • then becomes a story in written firm
  • then becomes code
  • result then looks like whiteboard

WWII & ATDD (Brian Marick)

IMG_6001

  • places with good infrastructure had their infrastructure pounded to rubble in World War II but the USA did not, therefore we have no fast trains, no fast Internet, bridges that fall down, etc.,.
  • all of XP is just what Ward Cunningham does naturally
  • spend too much time figuring out how to survive with legacy code, we should go back to the small!

Open Space Summaries

    • Why Have We Not Yet Discussed ATDD (J. B. Rainsberger) – came to conclusion that it is the same as BDD, How Test Driven Development Works (And More!)
    • Adoption and Sales Strategies (Mark Levison) – small pilots under the covers, ping pong developer tester ATDD, automation directors and managers and developers have different perspectives, talk at an enterprise level, semantic patterns of needing to slow down versus switching everyone all at once, how do we maintain momentum, always feel we are the first person tacking the issue
    • Facilitating Conversations (George Dinwiddie) – describing the problem rather than the solution, getting the language right, personas, myth of single product owner
    • Coding Dojo (Llewellyn Falco) – wrote tests for Yahtzee
    • Start a Business Example to Be Used for Many Tools (Mark Levison) – looked at example that Brian Marick wrote in Ruby, but still needs work
    • Fixtureless Testing (Declan Whelan) – fixtures break cadence in flow, especially when a tester needs to talk to a developer, wiki storage format not optimal as not easy to refactor, should be stored as code so we can refactor and reuse, want language to be close between system under test and acceptance test (use the domain language)
    • Pleasure and Pain with Tools (Elisabeth Hendrickson) – see above for notes
    • Workflow – Activities and Deliverables – built up a workflow

IMG_5988

Wrap Up

We then wrapped up with the future of AAFTT Program, in a discussion led by Jenitta Andrea:

IMG_5984

All in all it was a great day. Lisa Crispin was taking some video so if the quality was good I will help her get it uploaded. I also have more pictures up on Flickr for those that are interested.

Atlassian Summit 2010: Kaizen With GreenHopper – Visualising Agile & Kanban Storywalls

Atlassian Summit 2010My presentation from Atlassian Summit 2010 called “Kaizen with GreenHopper: Visualising Agile & Kanban Storywalls” is available on SlideShare. A video of the presentation along with the slides are also available on the Summit 2010 Video Archive.

Atlassian Summit 2010 Day 2 Wrapup

Atlassian Summit 2010More than a few days late, but here are my notes from day 2 of Atlassian Summit in San Francisco:

General Session

Tim Buntel discussed how Atlassian develop their products and supporting the social side of development.

Atlassian Summit Day 2

  • concept – idea is defined, unstructured information and ideas from customers, use Confluence and a Specification Template, Balsamiq to do some UI prototyping, embed Office documents such as PowerPoint
  • plan – project manager gathers requirements and shepherds team, turn the requirements into epics and stories in GreenHopper, embed GreenHopper card view into the Confluence page, planning meeting use projector with GreenHopper, use markers and drag and drop into each sprint
  • build – developers take requirements and build, build a dashboard with open social gadgets to see relevant information, wallboards to visually see status, Bamboo for continuous builds, Fisheye to view and diff versions of code, new keyboard shortcuts in JIRA to get 15 minutes back every day, Crucible for peer code reviews
  • launch – marketing take the product and promote, generate release notes in JIRA, write documentation in Confluence

Michael Knighten then gave an overview of JIRA Studio:

  • issue key linking for associations between all of the tools
  • integration with Google Apps, attach documents being hosted will mean it is always most up-to-date version
  • workflow is the future – broken build will reopen issue, passed review will close issue, etc…
  • Bamboo is now included and uses Amazon EC2 for builds
  • release cycle to get closer to products

Andrew Rallings then spoke about Customer Support:

Atlassian Summit Day 2

  • measure support with customer surveys (get 40% response rate, 4 times industry average, 85% have positive experience), internal measurements
  • revamped knowledge base, Hercules Support Robot automatically responds to support tickets (friend him in Facebook)
  • series of blogs coming on how to do support coming soon and a Support Dashboard portlet

Mike Cannon-Brookes then spoke about 2011 and beyond:

Atlassian Summit Day 2

  • time zones in JIRA (JRA-9)
  • Atlassian Translations, community supported
  • distributed version control systems are growing fast, support for Git and Mercurial coming soon, Fisheye has helped people move from CVS to Subversion but will help people move to distributed version control (DVCS) as well, Fisheye to help visualize DVCS coming
  • leading edge customers using gadgets to assist managing distributed servers, Universal Application Links to connect applications together two-way
  • JIRAnywhere (current code name) JavaScript libraries to allow you to bring JIRA anywhere, such as creating and working with issues in Confluence, hover over links, etc…

Lightning Talks

A series of lightning talks on various topics were held across two different rooms. Here are some thoughts from the ones I attended:

Labels Magic (Anthony Pelosi)

  • finding information usually involves searching or scanning pages
  • as an author if you know some of the general information, you can bring this to the user, the inflexible approach is trying to put everything under a parent page, organise pages by business unit rather than time and use labels and the contentbylabel macro to track time sensitive information
  • add labels to pages and then display related pages with contentbymacro label, then create a combined product page
  • works on current space (self) or across spaces
  • label conventions require them to be typed correctly, there are automatic label suggestions however

Auditing Your Build and Release (Jim Severino)

  • define your process, diagram it, Atlassian think of theirs in loops (internal and continuous integration)
  • measure your process because you can’t change what you are not measuring (eg. checking out trunk, browsing version control)
  • canary builds or control builds that should always succeed to determine that infrastructure is working
  • get multiple build agents
  • control configuration with a system like Puppet (open source) and Open VZ to get kernel based virtualisation
  • build needs to be a first class part of the product, Atlassian embed build engineers into the teams
  • get people involved and talking about the build
  • test release artefacts after they are assembled

Information Radiator (Brendan Humphreys)

  • these can be low tech like lava lamps or build lights or a scrum story board
  • you want fast feedback and to change culture
  • big and understood at a glance, should be aesthetically pleasing
  • new JIRA wallboard – section of the wallboard cycles between burndown, relative performance and review blockers
  • built as a plugin that renders gadgets, just need a wallboard view mode
  • choose same bar colour to get gadgets to rotate
  • alpha now, works well in Firefox 3.6 currently

Getting Started with Plugin Development (Matt Ryall)

  • plugins don’t require Java, can use HTML, CSS and jQuery
  • don’t need a JAR file, can just upload an XML descriptor file if simple or you can use the Atlassian Plugin SDK
  • easily add a link to company intranet – create a web item plugin, put in an XML template, upload directly into Confluence
  • project status macro – user macro with a snippet of HTML, put into an XML template, upload
  • expose Cruise Control if it has JSON or a web service interface

Build Atlassian Plugins with Groovy (Paul King)

Atlassian Summit Day 2

  • overview of Groovy
  • scripting plugins to write Groovy inline
  • benefit in environments where you can’t restart JIRA / Confluence

Fedex Champions (Seb Rulz)

  • every 3 months, 40 pizzas and a few hundred beers
  • developers – breaks routine, improves morale, bragging rights
  • company – improves morale, fosters creativity, improves products
  • idea must relate to Atlassian, starts with a short idea statement (shipping order)
  • work overnight, at 3pm keyboards down and present, also present the failures

Mastering JIRA Workflows

Christina Bang spoke on lessons learnt in relation to JIRA workflows. She has a cheat sheet for JIRA workflows on the summit website.

Atlassian Summit Day 2

  • best feature of JIRA
  • Atlassian has workflows for budget approvals, kudos, audit trails for permanent records (such as approval to work on open source projects), any business process to replace a piece of paper
  • push process (hand off to someone else) versus pull process (unassigned, issues in waiting eg. support tasks)
  • issues always have a state and resolution (done or not done)
  • transitions are powerful, they have conditions (restrictions to move through the process), validators (fill out a field before proceeding), post functions (do things automatically)
  • schemes give you fine grained control, give you flexibility, be careful with how you name them
  • “Unresolved” == field has no value
  • default workflow was written with software development in mind, and that Atlassian is an open company (resolved == done and closed == shipped)
  • powerful + flexible = complex
  • what ever you do (K.I.S.S.) – the fewer steps, people will actually want to use the system
  • visualise your workflow, identify things to edit, plan transitions and test by walking a through issues through the workflow
  • JIRA workflow plugins – free (JIRA Suite Utilities for comparing number conditions, mandatory field transitions and copy field values, JIRA Toolkit for notifications and time since last comment and JIRA Misc Workflow Extensions for previous status and comment required) and commercial (JIRA Workflow Designer)
  • build your workflow in XML or build your own plugins
  • number in brackets after transition are useful when wanting to do different conditions
  • resolutions are global in JIRA, so you see them for every workflow (there is a JIRA property to hack and hide the resolutions)
  • visualise workflows – a couple of plugins, mostly commercial – Workflow Visualization Plugin was recommended (uses Graphviz)

JIRA Studio: Development In The Cloud

Kamal Nabijee from Razorfish spoke on building software in the cloud:

  • agile like process – concept, foundation, iterations, stabilization and launch
  • user stories are core to all of the deliverables – defines the customer experience and build everything around that story
  • 3 week iteratons, cut off to QA and code freeze in the third week

Shibab Hamid then spoke about how they do it at Atlassian when they integrated Google:

Atlassian Summit Day 2

  • JIRA Studio + Google Apps gives a complete development, collaboration and communication hosted solution
  • Google Talk embedded within JIRA Studio
  • concept was “tight integration and cool shit”, but the constraints were a distributed team and Google and hosting constraints

Kaizen with Greenhopper: Visualising Agile & Kanban Storywalls

The session I presented to a good crowd. The slides are available in a separate post.

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

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:

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