• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cocoa for Scientists
 

Cocoa for Scientists

on

  • 2,510 views

Matias Piipari from the Sanger Institute gave a short tutorial, aimed at a scientific audience, on using Apple's Cocoa framework for developing applications.

Matias Piipari from the Sanger Institute gave a short tutorial, aimed at a scientific audience, on using Apple's Cocoa framework for developing applications.

Statistics

Views

Total Views
2,510
Views on SlideShare
2,366
Embed Views
144

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 144

http://ebiinterfaces.wordpress.com 139
https://ebiinterfaces.wordpress.com 3
http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cocoa for Scientists Cocoa for Scientists Presentation Transcript

    • Cocoa for Scientists Matias Piipari Wellcome Trust Sanger Institute Friday, 21 May 2010
    • iMotifs Friday, 21 May 2010
    • Friday, 21 May 2010
    • Biomartify Friday, 21 May 2010
    • Outline Friday, 21 May 2010
    • Outline 1. What is Cocoa? Friday, 21 May 2010
    • Outline 1. What is Cocoa? 2. What can I do with it? Friday, 21 May 2010
    • Outline 1. What is Cocoa? 2. What can I do with it? 3. How can I learn more about it? Friday, 21 May 2010
    • Outline 1. What is Cocoa? 2. What can I do with it? 3. How can I learn more about it? BONUS: A GUI design tutorial Friday, 21 May 2010
    • What is Cocoa? Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... • Data modelling & persistence (Core Data) Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... • Data modelling & persistence (Core Data) • Using multicore CPUs: multithreading, Grand Central Dispatch Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... • Data modelling & persistence (Core Data) • Using multicore CPUs: multithreading, Grand Central Dispatch • 2D drawing (Quartz) Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... • Data modelling & persistence (Core Data) • Using multicore CPUs: multithreading, Grand Central Dispatch • 2D drawing (Quartz) • Image / video processing (Core Image, Core Video, Quartz Composer) Friday, 21 May 2010
    • What is Cocoa? • High-level object oriented collection of APIs for Mac OS X • It is much more than a GUI framework • Interprocess communication: UNIX pipes, distributed notifications • Networking: sockets, HTTP, service auto discovery... • Data modelling & persistence (Core Data) • Using multicore CPUs: multithreading, Grand Central Dispatch • 2D drawing (Quartz) • Image / video processing (Core Image, Core Video, Quartz Composer) • Scripting bridge: script your app in Python, Ruby, AppleScript Friday, 21 May 2010
    • 1985 Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP Friday, 21 May 2010
    • NeXSTEP OPENSTEP Friday, 21 May 2010
    • NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
    • GNUStep NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
    • Cocoa Touch GNUStep (iPhone OS) NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
    • NeXTSTEP legacy is clear • AppKit (AppKit.h) • FoundationKit (Foundation.h) • “NS” prefix in the Cocoa foundation classes (NSObject, NSArray, ... ) • Bundles (.app, .pages, .keynote, etc) • Interface Builder Friday, 21 May 2010
    • The Objective-C language Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) • Late binding: methods looked up during runtime Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) • Late binding: methods looked up during runtime • Add or swap (‘swizzle’) methods during runtime Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) • Late binding: methods looked up during runtime • Add or swap (‘swizzle’) methods during runtime • You need to manage your memory (GC exists, but it’s crap) Friday, 21 May 2010
    • The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) • Late binding: methods looked up during runtime • Add or swap (‘swizzle’) methods during runtime • You need to manage your memory (GC exists, but it’s crap) • A language with some strong conventions Friday, 21 May 2010
    • Cocoa design patterns • Model-View-Controller • Dependency Injection • Target-Action • Delegation • Responder chain • Facade • Decorator • Command Friday, 21 May 2010
    • The APIs Friday, 21 May 2010
    • Quartz: drawing (DEMO) Friday, 21 May 2010
    • Quartz: drawing API Friday, 21 May 2010
    • Quartz: drawing API • Identical API for drawing into... • a window • an off-screen bitmap buffer • A PDF Friday, 21 May 2010
    • Quartz: drawing API • Identical API for drawing into... • a window • an off-screen bitmap buffer • A PDF • API available for C and Objective-C (or supported scripting languages) Friday, 21 May 2010
    • Quartz: drawing API • Identical API for drawing into... • a window • an off-screen bitmap buffer • A PDF • API available for C and Objective-C (or supported scripting languages) • Toll free bridging between C structs / Objective-C objects Friday, 21 May 2010
    • Image / video processing with Quartz Composer Friday, 21 May 2010
    • Image / video processing with Quartz Composer • A visual programming language for image / video processing Friday, 21 May 2010
    • Image / video processing with Quartz Composer • A visual programming language for image / video processing • Embeddable into your own application Friday, 21 May 2010
    • Image / video processing with Quartz Composer • A visual programming language for image / video processing • Embeddable into your own application • New in Snow Leopard: OpenCL kernels Friday, 21 May 2010
    • Image / video processing with Quartz Composer • A visual programming language for image / video processing • Embeddable into your own application • New in Snow Leopard: OpenCL kernels • It is powerful but documentation isn’t great Friday, 21 May 2010
    • Image / video processing with Quartz Composer • A visual programming language for image / video processing • Embeddable into your own application • New in Snow Leopard: OpenCL kernels • It is powerful but documentation isn’t great • (DEMO) Friday, 21 May 2010
    • Child processes, UNIX pipes stdout GUI process motif inference process (native Mac app) (crossplatform Java app) Friday, 21 May 2010
    • Networking & web services Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling • Event based parsing Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling • Event based parsing • DOM based parsing, XPath queries Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling • Event based parsing • DOM based parsing, XPath queries • SOAP OK Friday, 21 May 2010
    • Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling • Event based parsing • DOM based parsing, XPath queries • SOAP OK • JSON OK Friday, 21 May 2010
    • Networking & web services Friday, 21 May 2010
    • Core Data Friday, 21 May 2010
    • Core Data Friday, 21 May 2010
    • Core Data • Data modelling framework Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data • SQLite Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes • Query data Friday, 21 May 2010
    • Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes • Query data • Automatic undo / redo support Friday, 21 May 2010
    • Multicore Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units • Lighter memory footprint than threads Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units • Lighter memory footprint than threads • Easy: worry less about resources, syncing, locking Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units • Lighter memory footprint than threads • Easy: worry less about resources, syncing, locking • POSIX threads Friday, 21 May 2010
    • Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units • Lighter memory footprint than threads • Easy: worry less about resources, syncing, locking • POSIX threads • OpenCL: an extension to C for data-parallel computing Friday, 21 May 2010
    • Scripting bridge Friday, 21 May 2010
    • Scripting bridge • Python - Objective-C bridge: PyObjC Friday, 21 May 2010
    • Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa Friday, 21 May 2010
    • Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa • MacRuby: a ‘native’ Cocoa Ruby interpreter Friday, 21 May 2010
    • Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa • MacRuby: a ‘native’ Cocoa Ruby interpreter • Ruby or Python can also be used as a replacement for AppleScript Friday, 21 May 2010
    • Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa • MacRuby: a ‘native’ Cocoa Ruby interpreter • Ruby or Python can also be used as a replacement for AppleScript • My advice: keep away until you’re comfortable with Cocoa. Friday, 21 May 2010
    • BioCocoa Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... • Alternatives: Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... • Alternatives: • scripting bridge + Bioruby / Biopython Friday, 21 May 2010
    • BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... • Alternatives: • scripting bridge + Bioruby / Biopython • pipe to a child process which does more complex manipulations with biol data Friday, 21 May 2010
    • Fine... but it’s Mac only Friday, 21 May 2010
    • ... or is it? Friday, 21 May 2010
    • Cocotron Friday, 21 May 2010
    • GNUStep Friday, 21 May 2010
    • Learning resources Aaron Hillegass: Stephen G. Kochan: Cocoa Programming Programming in for Mac OS X Objective-C 2.0 http://itunes.stanford.edu/ Stanford University iPhone SDK course Friday, 21 May 2010
    • Learning resources • http://mattgemmell.com/ • http://cocoawithlove.com/ • http://www.cocotron.org/blog/ • http://www.boyfarrell.com/tutorials/ • http://weblog.bignerdranch.com/ • http://abizern.org/ • http://cocoadev.com/ Friday, 21 May 2010
    • My experiences Friday, 21 May 2010
    • My experiences • It’s a lot of fun! Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great • ... but the community is: Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great • ... but the community is: • blogs, forums Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great • ... but the community is: • blogs, forums • plenty of open source code Friday, 21 May 2010
    • My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great • ... but the community is: • blogs, forums • plenty of open source code • #macdev,#iphonedev on IRC (freenode) Friday, 21 May 2010
    • Interface Builder Tutorial Friday, 21 May 2010
    • Target - Action Friday, 21 May 2010
    • Bindings key-value observing Friday, 21 May 2010
    • Controllers Friday, 21 May 2010
    • Biomartify Friday, 21 May 2010
    • Biomartify • Goals Friday, 21 May 2010
    • Biomartify • Goals • Browse the Biomart registry: marts, their datasets Friday, 21 May 2010
    • Biomartify • Goals • Browse the Biomart registry: marts, their datasets • Build a Biomart query: filters & attributes Friday, 21 May 2010
    • Biomartify • Goals • Browse the Biomart registry: marts, their datasets • Build a Biomart query: filters & attributes • Save the query on disk, edit it later Friday, 21 May 2010
    • Biomartify • Goals • Browse the Biomart registry: marts, their datasets • Build a Biomart query: filters & attributes • Save the query on disk, edit it later • Submit the query Friday, 21 May 2010
    • Biomartify • Goals • Browse the Biomart registry: marts, their datasets • Build a Biomart query: filters & attributes • Save the query on disk, edit it later • Submit the query • ‘Migrate’ a query to a dataset Friday, 21 May 2010