Agile Academy Meetup: Agile For Startups

Agile AcademyAdrian Smith presented at the July 2010 Agile Academy Meetup in Brisbane on the topic of Agile for Startups. Here are my notes:

Agile Academy Meetup July 2010

  • startups should not last forever – transitional to success or failure
  • need an idea or an idea where you can do better (copycat business)
  • 90% of startups fail due to lack of customers
  • good people are critical to success – technology is a lever to productivity, no more than in software development
  • “The best programmers are up to 25 times better than the worst programmers” (Robert L. Glass)
  • startup lifecycle – building customers vs building product
  • aim for high quality code to reduce technical debt – will allow you to react faster
  • an office is sometimes seen as an expression of rank, whereas the office in an agile team / startup should enable innovation
  • use cloud based infrastructure to scale up and down and not be tied to any one location, also good for remote workers
  • startups cannot support the same number of roles as a typical agile team, need to dual-role and work out priority
  • startups can choose the technology, and that choice can govern the types of people that you can attract

Some of the tools that support agile startups:

  • Skype – fantastic for collaboration, desktop sharing
  • Yammer – effective to create internal collaboration within company, to share ideas, etc.
  • Teleport – great for screen sharing, especially dual screens
  • iChat for screen sharing
  • Harvest for time tracking (low cost)
  • Saasu (Australian), is like a better hosted MYOB, free for 20 transactions or less a month, payroll and BAS at the press of a button
  • Pivotal Tracker for project management and Scrum, other tools around like Scrum Pad
  • Unfuddle for ticketing, version control with GitHub
  • Balsamiq for mockups, iPlotz has better functionality (low cost)
  • CodeYak is in beta for code metrics and tracking over time
  • Hudson for continuous integration, Pivotal Labs has a free dashboard (Pivotal Pulse)
  • Heroku for deployment with a pure Git workflow, Linode for hosting
  • GetSatisfaction for customer feedback, rating features, etc…
  • Google Analytics for tracking web site traffic, Trendly for more meaningful interpretation
  • Startup Search is a good place to see if somebody has else has done something you’re interested in
  • Resources – The Four Steps To Epiphany by Steven G. Blank (free) and Getting Real from 37 Signals (free online)

Question and answer session:

  • showcase in a startup – get deployed to deployment environment and get customers using it, using new features as they come along
  • virtual office that make you seem big – a cost that you don’t need to spend, especially if using your own money
  • key agile – setting consistent expectations in relation to code quality amongst all developers, need a minimum viable product to showcase
  • collaborate closely with customers, have people on-site with customers who are using it, Skype calls to customers using the product
  • starting with agile – determine your priority and make those tasks transparent, make sure you are working on priorities and to an agreed quality
  • regret some features that were initially put in that were thought to be useful (make features work hard to get into the product initially)
  • biggest obstacle is getting to a minimum viable product, risk that product is not usable or is superseded by another product

Apple iPhone Management & Web Application Development Training

I got the opportunity today to attend Apple iPhone Management and Web Application Development training with a bunch of my colleagues direct from Apple Australia. I took a heap of notes which are available below:

Introduction

  • supports new standards CalDAV and CardDAV
  • on iOS4,VPN functionality is now an app supplied from vendors (Juniper and Cisco), as opposed to only built into the operating system, meaning the software can be updated outside of OS revisions
  • security – device (pass-codes, device restrictions and policy endorsements), network (AES-256 hardware encryption, file level encryption, encrypted backups, remote and local wipes) and platform (mandatory application signing when submitted and checked when downloaded, sandboxed applications, encrypted keychain for passwords)

Profiles

  • self service (configuration profiles to set mail, wi-fi, etc, distributed by USB or wi-fi, made in iPhone Configuration Utility) versus managed deployments
  • iPhone Configuration Utility – free for Mac and PC
  • identity identifier – important, certificate
  • can set whether configuration security can be removed or not
  • set passcode policies – length, autolock time, remember history, etc.
  • restrictions
  • set different wi-fi settings to appear on phone, VPN settings
  • web clips – bookmarks that are set on the phone
  • advanced – access point names (APN), Telstra has this for your own network inside the Telstra cloud
  • if you create a profile (eg com.demo.wifi) then a user could create a profile with the same name unless you sign it (in which case it would get bounced)
  • deploying profiles – USB, email (not recommended because they a user could use an use old profile stored in emails and you can’t tell if profile has been loaded), web, over the air
  • Secure Certificate Enrollment Protocol (SCEP) – a way to get the certificate and encrypted profile onto the phone when deploying over the air, Cisco technology originally used between routers, was the cludgy way before IOS4
  • Mobile Device Management – new in IOS4 – opt-in by the user and then MDM takes over, validates the phone by IMEI number, Apple Push Notification Server talks to the device, device talks to MDM via secure HTTPS channel
  • enrollment to confirm trusted user and device, certificates and remote configuration, additional restrictions such as disable data roaming
  • query the phone – model and device details, version, roaming status, applications installed on phone, settings for compliance, etc
  • provisioning profiles for enterprise applications to set usage and expiry dates
  • manage phone – install and remove settings, profiles, remotely clear (good for help desks), remote locking of device, remote wipe
  • third party solutions in this space from Sybase, MobileIron and Trust Digital amongst others, early days for most of these vendors and technologies
  • once enrolled you cannot un-enrol
  • no limit to number of profiles – can be all encompassing or can be small (ie just a wi-fi setting), can run at the same time, can’t disable a profile only remove it
  • not possible to do web filtering or block a third party application to be installed (except by disallowing access to iTunes or the App Store, with MDM you can see which apps are installed
  • blocking access to the application (eg camera) also blocks access to the API

iTunes

  • activation, sync and backup and update software
  • activation gets carrier settings as well as registers the device, happens whenever a new SIM card is installed, possible to put iTunes into activation only mode (what they do at the Apple Store)

Application Installation

  • App Store, adhoc or enterprise
  • build application in Xcode on a Mac and get into the AppStore
  • adhoc and enterprise – provision, build, deploy and install (traditionally only via a cable)
  • for enterprise, now Wireless App Distribution, put application on a web server and install via the iPhone via your own application catalogue app
  • could also build an enterprise front end to the App Store, but you still need iTunes account and deal with purchases
  • can gift an application but is tedious

Development

  • SDK – native apps written in Objective C (using XCode on a Mac)
  • web application – native user experience but runs from a web site using HTML5 and CSS, view optimized for Mobile Safari
  • hybrid applications – part SDK and part web
  • developer platform ($99 USD) and enterprise developer ($299 USD) – get Xcode plus emulators and resources
  • iPhone 51% of worldwide smartphone market, in Australia it is 93% of smartphone market
  • WebKit is basis of Safari, open sourced by Apple, also used by Chrome, Android, Symbian and RIM – used by almost all of the mobile browsers
  • web applications cannot access secure storage, camera or address book, receive push notifications orallow rapid updates, however, can do offline access and storage
  • web application distribution – host on a web server, create a landing page and populate with web applications
  • need web development skills, any IDE and most technologies (except Flash), iPhone and iPod Touch are identical to test on, can also use emulator
  • examples – m.uiowa.edu and m.mit.edu to replace intranet and be useful on an iPhone
  • same website, different view depending on the device
  • applications need to be finger friendly, a finger = 44px
  • applications need to be aware of bandwidth and latency – Edge -> 3G -> Wifi, turn on server side compression (GZip), break data into blocks (eg Wikipedia clicking Show to get more data), reduce number of files requested, JSON for requests, optimize image size for the device, use CSS3 for design
  • news.com.au – 1130 files on web site versus 136 on mobile site and 43 seconds versus 8 seconds load time
  • give users a website escape to get to more functionality if they need it
  • at Apple spend much more time on design and less on code, debug and test
  • design for ease of use-  straightforward well designed workflow (such as settings screen)
  • viewport – 320 x 480 screen, but can display larger, set viewport via code
  • home screen icon – png file and link in code
  • full screen mode with no navigation bars, requires home screen icon and runs in own instance
  • set a splash screen – image and meta tag in the Head
  • SVG support – good for zooming and business intelligence
  • PDF support
  • URL schemes – to display maps, telephone integration, mail integration, SMS and custom – just put URL in the scheme format
  • geolocation API as part of 3.0 – get current coordinates, uses battery quite considerably so use on intervals
  • orientation – 90, 0, -90 or 180, you code if the application looks different in different modes
  • user agent strings for iPhone and iPad
  • Css3 for transforms, transitions and animations as well as design like rounded corners
  • see http://www.apple.com/html5/ for coolness
  • touch events and gesture events eg. touchstart, touchmove and touchend
  • no applets, tooltips, hover, WML, file uploads and download, mouse over, print and modal dialogs, X509 certificates

Offline Data Storage

  • HTML5 implementation, not unique to iPhone
  • offline application cache – manifest file from website, requests data then keeps synchronized, means application can run offline
  • key-value storage – session or local storage, persist between closing the browser, cannot be encrypted in HTML5 but could store encrypted data in the value
  • local JavaScript database
  • full support for manipulating the DOM

Frameworks

  • Dashcode – good for simple applications or prototypes, from Apple, part of toolkit, Mac only
  • Sencha – rapid tool, takes care of underlying events, templates for controls and types, iPhone and iPad
  • jQTouch

SDK

  • push notifications
  • accessories only talk to SDK applications
  • enhanced location based applications, embedded Google maps
  • rich media

Hybrid Applications

  • full access to device, enhance without redeploy
  • iFrame in the native application