SlideShare a Scribd company logo
1 of 36
Download to read offline
iPhone Development
                                       a whirlwind tour of iPhone development



       Are you ready for mobile 2.0?

Tuesday, 24 March 2009
Overview
      ‣      Introduction

      ‣      Development Tools

      ‣      Distribution

      ‣      Development Practices




Tuesday, 24 March 2009
introduction



Tuesday, 24 March 2009
Who am I?
      ‣      Tom Adams, CTO & Co-founder, mogeneration

      ‣      Background in mobile, enterprise, HPC, sem. web, PKI

      ‣      On the web

            ‣      http://adams.id.au/blog/

            ‣      http://twitter.com/tomjadams

            ‣      http://www.linkedin.com/in/tomjadams

            ‣      http://github.com/tomjadams




Tuesday, 24 March 2009
mogeneration
      ‣      Founded September 2008

      ‣      Keith Ahern, CEO & Co-founder, ex-News Head of Mobile

      ‣      Offices in Sydney & Brisbane, 4 people, 7 successful projects

      ‣      iPhone, Android, mobile 2.0 web

      ‣      Web

            ‣      http://twitter.com/mogeneration

            ‣      http://github.com/mogeneration/




Tuesday, 24 March 2009
Our work
      ‣      Web

            ‣      The Australian; prior: news.com.au, TrueLocal, moshtix

      ‣      Released

            ‣      OzWeather, Moo Shake!, Xumii

      ‣      Submitted

            ‣      Lingopal, TrueLocal

      ‣      In development

            ‣      Games, books, physics, photography, coupons


Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
why iPhone?



Tuesday, 24 March 2009
iPhone
      ‣      What makes the iPhone different?

            ‣      Cool

            ‣      Not normal embedded development

            ‣      Real threading

            ‣      Real OS

            ‣      OpenGL

            ‣      SQL Database

            ‣      Tool


Tuesday, 24 March 2009
tools



Tuesday, 24 March 2009
Development tools
      ‣      Xcode

      ‣      Simulator

      ‣      Interface Builder

      ‣      Terminal

      ‣      Instruments




Tuesday, 24 March 2009
Version control
      ‣      Built in: SVN, Perforce, CVS

      ‣      All the cool kids use git




Tuesday, 24 March 2009
Continuous integration
      ‣      Very important on team projects

      ‣      Release ad hoc builds to clients

      ‣      Canonical App Store release




Tuesday, 24 March 2009
Profiling
      ‣      Rules of profiling

            1.     Profile
            2.     Find bottlenecks
            3.     Fix
            4.     Profile … repeat …

      ‣      Instruments

            ‣      Leaks, memory usage, CPU usage




Tuesday, 24 March 2009
distribution



Tuesday, 24 March 2009
Developer portal
      ‣      Developer centric

      ‣      Team, keys, app ids, certificates, provisioning profiles

      ‣      Be careful of who is an agent!




Tuesday, 24 March 2009
iTunes Connect
      ‣      Release/distribution centric

      ‣      Only for team agents

      ‣      Distribution to app store, sales reporting, tax, etc.




Tuesday, 24 March 2009
practices



Tuesday, 24 March 2009
mogeneration process
      ‣      Sales

            ‣      Proposal

      ‣      Development (iterative)

            ‣      Outline, brief, loose specification

            ‣      Interaction design, wireframes

            ‣      Design, L&F

            ‣      Iterative development

            ‣      Handover


Tuesday, 24 March 2009
Project setup
      ‣      Nomenclature

            ‣      Project, target, product, frameworks, SDKs, static libraries

      ‣      Settings belong at a project level




Tuesday, 24 March 2009
Project layout
             $(SRCROOT)/
                   Resources
                   Source/External
                   Source/Main/[Models, Services, Views, …]
                   Source/Test/[Models, Services, Views, …]




Tuesday, 24 March 2009
Code
      ‣      Objective-C has a weak type system, don’t be too fancy

      ‣      Strong typing is good

      ‣      Beware of using id

      ‣      Good naming is hard with “named” parameters

      ‣      Code styles guides

            ‣      “Introduction to Coding Guidelines for Cocoa”, Apple

            ‣      “Cocoa Style for Objective-C”, Cocoa Dev Central

            ‣      Google


Tuesday, 24 March 2009
Testing
      ‣      OCUnit (SenTest)

      ‣      GTM

      ‣      GHUnit

      ‣      UISpec

      ‣      OCMock

      ‣      Hamcrest




Tuesday, 24 March 2009
Quality
      ‣      clang

      ‣      gcov

      ‣      CoverStory




Tuesday, 24 March 2009
Threading
      ‣      Learn to love asynchronicity

      ‣      Don’t block the main thread

      ‣      Use notifications to decouple communications

      ‣      Use an NSOperationQueue to bound # threads




Tuesday, 24 March 2009
Memory management
      ‣      Retain count

      ‣      Learn & follow the rules

            ‣      For each alloc/new/malloc/malloc a release/free

            ‣      Use autorelease sparingly

            ‣      new/create/get

      ‣      Use new autorelease pools in loops, thread, etc.

      ‣      Beware of collection class rules




Tuesday, 24 March 2009
Gotchas
      ‣      The iPhone does not support dynamically linked libraries

      ‣      The simulator uses Mac OS X libraries

      ‣      Simulator has 72dpi, iPhones have 160dpi

      ‣      Remember finger sizes!

      ‣      Don’t use Xcode to manage provision profiles




Tuesday, 24 March 2009
help!



Tuesday, 24 March 2009
Help
      ‣      iPhone Developer Centre

      ‣      Stack Overflow

      ‣      Mobile Orchard (tutorials)

      ‣      http://cocoadev.com/

      ‣      http://cocoadevcentral.com/

      ‣      Google




Tuesday, 24 March 2009
takehome



Tuesday, 24 March 2009
Takehome
      ‣      iPhone is a great device

      ‣      Embrace challenges of a limited device

      ‣      You can still do hardcore tech




Tuesday, 24 March 2009
Projects
      ‣      FunctionalKit

      ‣      Motive




Tuesday, 24 March 2009
Contact
      Tom Adams
      CTO & Co-founder
      tom@mogeneration.com
      http://mogeneration.com/




Tuesday, 24 March 2009

More Related Content

What's hot

State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinDries Buytaert
 
Developer's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsDeveloper's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsAlan Mendelevich
 
Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Nick Richards
 
Nascent tawkon ux design process
Nascent   tawkon ux design processNascent   tawkon ux design process
Nascent tawkon ux design processnascent
 
Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Nick Richards
 
OLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightOLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightSameer Verma
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitChad Udell
 
8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User ExperienceBryan Rieger
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDKmwbrooks
 
7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)Stephen Anderson
 
Introducing Livescribe Tata
Introducing Livescribe  TataIntroducing Livescribe  Tata
Introducing Livescribe Tataaruneshvashist
 
Presenting with Apple Products
Presenting with Apple ProductsPresenting with Apple Products
Presenting with Apple ProductsTodd McKee
 
Thinking Differently About Web Performance
Thinking Differently About Web PerformanceThinking Differently About Web Performance
Thinking Differently About Web PerformanceJames Simpson
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devicesmwbrooks
 
General Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchGeneral Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchJacklyn Burgan
 

What's hot (16)

State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon Austin
 
Developer's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsDeveloper's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone Apps
 
Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)
 
Nascent tawkon ux design process
Nascent   tawkon ux design processNascent   tawkon ux design process
Nascent tawkon ux design process
 
Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)
 
OLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightOLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome Night
 
Final Cut Pro
Final Cut ProFinal Cut Pro
Final Cut Pro
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDK
 
7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)
 
Introducing Livescribe Tata
Introducing Livescribe  TataIntroducing Livescribe  Tata
Introducing Livescribe Tata
 
Presenting with Apple Products
Presenting with Apple ProductsPresenting with Apple Products
Presenting with Apple Products
 
Thinking Differently About Web Performance
Thinking Differently About Web PerformanceThinking Differently About Web Performance
Thinking Differently About Web Performance
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devices
 
General Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchGeneral Assembly: Sketch Before You Etch
General Assembly: Sketch Before You Etch
 

Similar to iPhone Development Overview

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About YouChris Cornutt
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software★ Selcuk Atli
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyMike Cannon-Brookes
 
Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Jens Brynildsen
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net DevAlex Hung
 
RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09Johnny Bilotta
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...Domingo Suarez Torres
 
20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation projectecomplexx
 
Itag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityItag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityGerard Hartnett
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsXavier Lacot
 
Marcomm 2008 Eng Pdf
Marcomm 2008 Eng PdfMarcomm 2008 Eng Pdf
Marcomm 2008 Eng Pdfluigip
 
MAOW Berlin '09 Keynote
MAOW Berlin '09 KeynoteMAOW Berlin '09 Keynote
MAOW Berlin '09 Keynotereybango
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and StrategyIvo Jansch
 
Ibuildings Cms Talk
Ibuildings Cms TalkIbuildings Cms Talk
Ibuildings Cms Talkdean1985
 
Virtual Collaboration
Virtual CollaborationVirtual Collaboration
Virtual Collaborationraanan
 
Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Zara Alkhudari
 
A practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexA practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexJustin Mclean
 

Similar to iPhone Development Overview (20)

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About You
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software Company
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net Dev
 
RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
 
20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project
 
Itag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityItag Jan09 Agile Coclarity
Itag Jan09 Agile Coclarity
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating products
 
Marcomm 2008 Eng Pdf
Marcomm 2008 Eng PdfMarcomm 2008 Eng Pdf
Marcomm 2008 Eng Pdf
 
MAOW Berlin '09 Keynote
MAOW Berlin '09 KeynoteMAOW Berlin '09 Keynote
MAOW Berlin '09 Keynote
 
Mac vs PC
Mac vs PCMac vs PC
Mac vs PC
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
 
Ibuildings Cms Talk
Ibuildings Cms TalkIbuildings Cms Talk
Ibuildings Cms Talk
 
Virtual Collaboration
Virtual CollaborationVirtual Collaboration
Virtual Collaboration
 
Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore
 
A practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexA practical guide to connecting hardware to Flex
A practical guide to connecting hardware to Flex
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

iPhone Development Overview

  • 1. iPhone Development a whirlwind tour of iPhone development Are you ready for mobile 2.0? Tuesday, 24 March 2009
  • 2. Overview ‣ Introduction ‣ Development Tools ‣ Distribution ‣ Development Practices Tuesday, 24 March 2009
  • 4. Who am I? ‣ Tom Adams, CTO & Co-founder, mogeneration ‣ Background in mobile, enterprise, HPC, sem. web, PKI ‣ On the web ‣ http://adams.id.au/blog/ ‣ http://twitter.com/tomjadams ‣ http://www.linkedin.com/in/tomjadams ‣ http://github.com/tomjadams Tuesday, 24 March 2009
  • 5. mogeneration ‣ Founded September 2008 ‣ Keith Ahern, CEO & Co-founder, ex-News Head of Mobile ‣ Offices in Sydney & Brisbane, 4 people, 7 successful projects ‣ iPhone, Android, mobile 2.0 web ‣ Web ‣ http://twitter.com/mogeneration ‣ http://github.com/mogeneration/ Tuesday, 24 March 2009
  • 6. Our work ‣ Web ‣ The Australian; prior: news.com.au, TrueLocal, moshtix ‣ Released ‣ OzWeather, Moo Shake!, Xumii ‣ Submitted ‣ Lingopal, TrueLocal ‣ In development ‣ Games, books, physics, photography, coupons Tuesday, 24 March 2009
  • 12. iPhone ‣ What makes the iPhone different? ‣ Cool ‣ Not normal embedded development ‣ Real threading ‣ Real OS ‣ OpenGL ‣ SQL Database ‣ Tool Tuesday, 24 March 2009
  • 14. Development tools ‣ Xcode ‣ Simulator ‣ Interface Builder ‣ Terminal ‣ Instruments Tuesday, 24 March 2009
  • 15. Version control ‣ Built in: SVN, Perforce, CVS ‣ All the cool kids use git Tuesday, 24 March 2009
  • 16. Continuous integration ‣ Very important on team projects ‣ Release ad hoc builds to clients ‣ Canonical App Store release Tuesday, 24 March 2009
  • 17. Profiling ‣ Rules of profiling 1. Profile 2. Find bottlenecks 3. Fix 4. Profile … repeat … ‣ Instruments ‣ Leaks, memory usage, CPU usage Tuesday, 24 March 2009
  • 19. Developer portal ‣ Developer centric ‣ Team, keys, app ids, certificates, provisioning profiles ‣ Be careful of who is an agent! Tuesday, 24 March 2009
  • 20. iTunes Connect ‣ Release/distribution centric ‣ Only for team agents ‣ Distribution to app store, sales reporting, tax, etc. Tuesday, 24 March 2009
  • 22. mogeneration process ‣ Sales ‣ Proposal ‣ Development (iterative) ‣ Outline, brief, loose specification ‣ Interaction design, wireframes ‣ Design, L&F ‣ Iterative development ‣ Handover Tuesday, 24 March 2009
  • 23. Project setup ‣ Nomenclature ‣ Project, target, product, frameworks, SDKs, static libraries ‣ Settings belong at a project level Tuesday, 24 March 2009
  • 24. Project layout $(SRCROOT)/ Resources Source/External Source/Main/[Models, Services, Views, …] Source/Test/[Models, Services, Views, …] Tuesday, 24 March 2009
  • 25. Code ‣ Objective-C has a weak type system, don’t be too fancy ‣ Strong typing is good ‣ Beware of using id ‣ Good naming is hard with “named” parameters ‣ Code styles guides ‣ “Introduction to Coding Guidelines for Cocoa”, Apple ‣ “Cocoa Style for Objective-C”, Cocoa Dev Central ‣ Google Tuesday, 24 March 2009
  • 26. Testing ‣ OCUnit (SenTest) ‣ GTM ‣ GHUnit ‣ UISpec ‣ OCMock ‣ Hamcrest Tuesday, 24 March 2009
  • 27. Quality ‣ clang ‣ gcov ‣ CoverStory Tuesday, 24 March 2009
  • 28. Threading ‣ Learn to love asynchronicity ‣ Don’t block the main thread ‣ Use notifications to decouple communications ‣ Use an NSOperationQueue to bound # threads Tuesday, 24 March 2009
  • 29. Memory management ‣ Retain count ‣ Learn & follow the rules ‣ For each alloc/new/malloc/malloc a release/free ‣ Use autorelease sparingly ‣ new/create/get ‣ Use new autorelease pools in loops, thread, etc. ‣ Beware of collection class rules Tuesday, 24 March 2009
  • 30. Gotchas ‣ The iPhone does not support dynamically linked libraries ‣ The simulator uses Mac OS X libraries ‣ Simulator has 72dpi, iPhones have 160dpi ‣ Remember finger sizes! ‣ Don’t use Xcode to manage provision profiles Tuesday, 24 March 2009
  • 32. Help ‣ iPhone Developer Centre ‣ Stack Overflow ‣ Mobile Orchard (tutorials) ‣ http://cocoadev.com/ ‣ http://cocoadevcentral.com/ ‣ Google Tuesday, 24 March 2009
  • 34. Takehome ‣ iPhone is a great device ‣ Embrace challenges of a limited device ‣ You can still do hardcore tech Tuesday, 24 March 2009
  • 35. Projects ‣ FunctionalKit ‣ Motive Tuesday, 24 March 2009
  • 36. Contact Tom Adams CTO & Co-founder tom@mogeneration.com http://mogeneration.com/ Tuesday, 24 March 2009