SlideShare uma empresa Scribd logo
1 de 120
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

Mais conteúdo relacionado

Semelhante a Cocoa for Scientists: An Introduction

Nuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EPNuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EPNuxeo
 
Scaling webappswithrabbitmq
Scaling webappswithrabbitmqScaling webappswithrabbitmq
Scaling webappswithrabbitmqAlvaro Videla
 
Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4John Ballinger
 
Mobile Development with uPortal and Infusion
Mobile Development with uPortal and InfusionMobile Development with uPortal and Infusion
Mobile Development with uPortal and Infusioncolinbdclark
 
Multi Handset Development - ETE 2010
Multi Handset Development - ETE 2010Multi Handset Development - ETE 2010
Multi Handset Development - ETE 2010Kevin Griffin
 
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...Patrick Chanezon
 
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010Guillaume Laforge
 
Mozilla Research Party Talk
Mozilla Research Party TalkMozilla Research Party Talk
Mozilla Research Party TalkBrendan Eich
 
.NET, OSS & Mono
.NET, OSS & Mono.NET, OSS & Mono
.NET, OSS & MonoPaul Rayner
 
Moeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaMoeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaBOSC 2010
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdfColm Dunphy
 
More than a 1000 words
More than a 1000 wordsMore than a 1000 words
More than a 1000 wordsTimothy Kunau
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 KeynotePeter Wang
 
Webinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EPWebinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EPNuxeo
 
Building Apps with PhoneGap
Building Apps with PhoneGap Building Apps with PhoneGap
Building Apps with PhoneGap alunny
 
Microsoft & open source a 'brave new world' - CORESTART 2.0
Microsoft & open source a 'brave new world' - CORESTART 2.0Microsoft & open source a 'brave new world' - CORESTART 2.0
Microsoft & open source a 'brave new world' - CORESTART 2.0Matt Warren
 

Semelhante a Cocoa for Scientists: An Introduction (20)

Nuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EPNuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EP
 
Scaling webappswithrabbitmq
Scaling webappswithrabbitmqScaling webappswithrabbitmq
Scaling webappswithrabbitmq
 
Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4
 
Mobile Development with uPortal and Infusion
Mobile Development with uPortal and InfusionMobile Development with uPortal and Infusion
Mobile Development with uPortal and Infusion
 
Multi Handset Development - ETE 2010
Multi Handset Development - ETE 2010Multi Handset Development - ETE 2010
Multi Handset Development - ETE 2010
 
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...
AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud:Factors Driving Adopti...
 
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
 
Mozilla Research Party Talk
Mozilla Research Party TalkMozilla Research Party Talk
Mozilla Research Party Talk
 
.NET, OSS & Mono
.NET, OSS & Mono.NET, OSS & Mono
.NET, OSS & Mono
 
Moeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaMoeller bosc2010 debian_taverna
Moeller bosc2010 debian_taverna
 
Open GeoSocial API
Open GeoSocial APIOpen GeoSocial API
Open GeoSocial API
 
Check Please!
Check Please!Check Please!
Check Please!
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf
 
More than a 1000 words
More than a 1000 wordsMore than a 1000 words
More than a 1000 words
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 Keynote
 
Webinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EPWebinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EP
 
Sylvain Bellemare Resume
Sylvain Bellemare ResumeSylvain Bellemare Resume
Sylvain Bellemare Resume
 
Mars - ESUG 2010
Mars - ESUG 2010Mars - ESUG 2010
Mars - ESUG 2010
 
Building Apps with PhoneGap
Building Apps with PhoneGap Building Apps with PhoneGap
Building Apps with PhoneGap
 
Microsoft & open source a 'brave new world' - CORESTART 2.0
Microsoft & open source a 'brave new world' - CORESTART 2.0Microsoft & open source a 'brave new world' - CORESTART 2.0
Microsoft & open source a 'brave new world' - CORESTART 2.0
 

Mais de Francis Rowland

Visual note-taking: listening, learning, remembering
Visual note-taking: listening, learning, rememberingVisual note-taking: listening, learning, remembering
Visual note-taking: listening, learning, rememberingFrancis Rowland
 
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015Francis Rowland
 
Les super pouvoirs du sketching
Les super pouvoirs du sketchingLes super pouvoirs du sketching
Les super pouvoirs du sketchingFrancis Rowland
 
Useful questions to ask when designing data visualisations
Useful questions to ask when designing data visualisationsUseful questions to ask when designing data visualisations
Useful questions to ask when designing data visualisationsFrancis Rowland
 
Jeux d'Innovation (FLUPA UX Day 2013)
Jeux d'Innovation (FLUPA UX Day 2013)Jeux d'Innovation (FLUPA UX Day 2013)
Jeux d'Innovation (FLUPA UX Day 2013)Francis Rowland
 
What the heck are sketchnotes?
What the heck are sketchnotes?What the heck are sketchnotes?
What the heck are sketchnotes?Francis Rowland
 
VIZBI 2013 - UX design tutorial
VIZBI 2013 - UX design tutorialVIZBI 2013 - UX design tutorial
VIZBI 2013 - UX design tutorialFrancis Rowland
 
User research: the gentle art of not asking users what they want
User research: the gentle art of not asking users what they wantUser research: the gentle art of not asking users what they want
User research: the gentle art of not asking users what they wantFrancis Rowland
 
Why usability problems go unfixed - UX Bristol 2012
Why usability problems go unfixed - UX Bristol 2012Why usability problems go unfixed - UX Bristol 2012
Why usability problems go unfixed - UX Bristol 2012Francis Rowland
 
The user experience of EGA data access
The user experience of EGA data accessThe user experience of EGA data access
The user experience of EGA data accessFrancis Rowland
 
Speed sketching UX Cambridge 2011
Speed sketching UX Cambridge 2011Speed sketching UX Cambridge 2011
Speed sketching UX Cambridge 2011Francis Rowland
 
Reactome: Usability testing - is it useful?
Reactome: Usability testing - is it useful? Reactome: Usability testing - is it useful?
Reactome: Usability testing - is it useful? Francis Rowland
 
Usability Testing is Easy! (redux)
Usability Testing is Easy! (redux)Usability Testing is Easy! (redux)
Usability Testing is Easy! (redux)Francis Rowland
 
Usability Testing is Easy!
Usability Testing is Easy!Usability Testing is Easy!
Usability Testing is Easy!Francis Rowland
 
Complementing Computation with Visualization in Genomics
Complementing Computation with Visualization in GenomicsComplementing Computation with Visualization in Genomics
Complementing Computation with Visualization in GenomicsFrancis Rowland
 

Mais de Francis Rowland (20)

Sabotage
Sabotage Sabotage
Sabotage
 
Visual note-taking: listening, learning, remembering
Visual note-taking: listening, learning, rememberingVisual note-taking: listening, learning, remembering
Visual note-taking: listening, learning, remembering
 
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015
A UX Journey into the World of Early Drug Discovery - UX Cambridge 2015
 
Les super pouvoirs du sketching
Les super pouvoirs du sketchingLes super pouvoirs du sketching
Les super pouvoirs du sketching
 
Le Design Studio
Le Design StudioLe Design Studio
Le Design Studio
 
Useful questions to ask when designing data visualisations
Useful questions to ask when designing data visualisationsUseful questions to ask when designing data visualisations
Useful questions to ask when designing data visualisations
 
Jeux d'Innovation (FLUPA UX Day 2013)
Jeux d'Innovation (FLUPA UX Day 2013)Jeux d'Innovation (FLUPA UX Day 2013)
Jeux d'Innovation (FLUPA UX Day 2013)
 
What the heck are sketchnotes?
What the heck are sketchnotes?What the heck are sketchnotes?
What the heck are sketchnotes?
 
VIZBI 2013 - UX design tutorial
VIZBI 2013 - UX design tutorialVIZBI 2013 - UX design tutorial
VIZBI 2013 - UX design tutorial
 
User research: the gentle art of not asking users what they want
User research: the gentle art of not asking users what they wantUser research: the gentle art of not asking users what they want
User research: the gentle art of not asking users what they want
 
Design for Society
Design for SocietyDesign for Society
Design for Society
 
Why usability problems go unfixed - UX Bristol 2012
Why usability problems go unfixed - UX Bristol 2012Why usability problems go unfixed - UX Bristol 2012
Why usability problems go unfixed - UX Bristol 2012
 
Vizbi 2012 Takeaway
Vizbi 2012 TakeawayVizbi 2012 Takeaway
Vizbi 2012 Takeaway
 
The user experience of EGA data access
The user experience of EGA data accessThe user experience of EGA data access
The user experience of EGA data access
 
Speed sketching UX Cambridge 2011
Speed sketching UX Cambridge 2011Speed sketching UX Cambridge 2011
Speed sketching UX Cambridge 2011
 
Drupal at the EBI
Drupal at the EBIDrupal at the EBI
Drupal at the EBI
 
Reactome: Usability testing - is it useful?
Reactome: Usability testing - is it useful? Reactome: Usability testing - is it useful?
Reactome: Usability testing - is it useful?
 
Usability Testing is Easy! (redux)
Usability Testing is Easy! (redux)Usability Testing is Easy! (redux)
Usability Testing is Easy! (redux)
 
Usability Testing is Easy!
Usability Testing is Easy!Usability Testing is Easy!
Usability Testing is Easy!
 
Complementing Computation with Visualization in Genomics
Complementing Computation with Visualization in GenomicsComplementing Computation with Visualization in Genomics
Complementing Computation with Visualization in Genomics
 

Último

Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 

Último (20)

Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 

Cocoa for Scientists: An Introduction

  • 1. Cocoa for Scientists Matias Piipari Wellcome Trust Sanger Institute Friday, 21 May 2010
  • 6. Outline 1. What is Cocoa? Friday, 21 May 2010
  • 7. Outline 1. What is Cocoa? 2. What can I do with it? Friday, 21 May 2010
  • 8. Outline 1. What is Cocoa? 2. What can I do with it? 3. How can I learn more about it? Friday, 21 May 2010
  • 9. 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
  • 10. What is Cocoa? Friday, 21 May 2010
  • 11. What is Cocoa? • High-level object oriented collection of APIs for Mac OS X Friday, 21 May 2010
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 29. NeXSTEP OPENSTEP Friday, 21 May 2010
  • 30. NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
  • 31. GNUStep NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
  • 32. Cocoa Touch GNUStep (iPhone OS) NeXSTEP OPENSTEP Cocoa Friday, 21 May 2010
  • 33. 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
  • 35. The Objective-C language • Object oriented language bolted onto ANSI C Friday, 21 May 2010
  • 36. The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language Friday, 21 May 2010
  • 37. The Objective-C language • Object oriented language bolted onto ANSI C • Dynamic language • Class definitions can change (even during runtime) Friday, 21 May 2010
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. Cocoa design patterns • Model-View-Controller • Dependency Injection • Target-Action • Delegation • Responder chain • Facade • Decorator • Command Friday, 21 May 2010
  • 44. Quartz: drawing (DEMO) Friday, 21 May 2010
  • 46. Quartz: drawing API • Identical API for drawing into... • a window • an off-screen bitmap buffer • A PDF Friday, 21 May 2010
  • 47. 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
  • 48. 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
  • 49. Image / video processing with Quartz Composer Friday, 21 May 2010
  • 50. Image / video processing with Quartz Composer • A visual programming language for image / video processing Friday, 21 May 2010
  • 51. Image / video processing with Quartz Composer • A visual programming language for image / video processing • Embeddable into your own application Friday, 21 May 2010
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. Child processes, UNIX pipes stdout GUI process motif inference process (native Mac app) (crossplatform Java app) Friday, 21 May 2010
  • 56. Networking & web services Friday, 21 May 2010
  • 57. Networking & web services • High-level API for streams & sockets Friday, 21 May 2010
  • 58. Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O Friday, 21 May 2010
  • 59. Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling Friday, 21 May 2010
  • 60. Networking & web services • High-level API for streams & sockets • HTTP client with asynchronous I/O • XML handling • Event based parsing Friday, 21 May 2010
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. Networking & web services Friday, 21 May 2010
  • 67. Core Data • Data modelling framework Friday, 21 May 2010
  • 68. Core Data • Data modelling framework • Serialise / deserialise data Friday, 21 May 2010
  • 69. Core Data • Data modelling framework • Serialise / deserialise data • SQLite Friday, 21 May 2010
  • 70. Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML Friday, 21 May 2010
  • 71. Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes Friday, 21 May 2010
  • 72. Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes • Query data Friday, 21 May 2010
  • 73. Core Data • Data modelling framework • Serialise / deserialise data • SQLite • XML • Auto-generate model classes • Query data • Automatic undo / redo support Friday, 21 May 2010
  • 75. Multicore • NSOperation: high level multithreading API Friday, 21 May 2010
  • 76. Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) Friday, 21 May 2010
  • 77. Multicore • NSOperation: high level multithreading API • Grand Central Dispatch (10.6 only) • Use closures to represent independent work units Friday, 21 May 2010
  • 78. 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
  • 79. 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
  • 80. 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
  • 81. 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
  • 83. Scripting bridge • Python - Objective-C bridge: PyObjC Friday, 21 May 2010
  • 84. Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa Friday, 21 May 2010
  • 85. Scripting bridge • Python - Objective-C bridge: PyObjC • Ruby - Objective-C bridge: RubyCocoa • MacRuby: a ‘native’ Cocoa Ruby interpreter Friday, 21 May 2010
  • 86. 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
  • 87. 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
  • 89. BioCocoa • Sequence I/O (DNA / RNA / protein) Friday, 21 May 2010
  • 90. BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations Friday, 21 May 2010
  • 91. BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments Friday, 21 May 2010
  • 92. BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... Friday, 21 May 2010
  • 93. BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... • Alternatives: Friday, 21 May 2010
  • 94. BioCocoa • Sequence I/O (DNA / RNA / protein) • Annotations • Sequence alignments • Nothing like Bioruby / Bioperl... • Alternatives: • scripting bridge + Bioruby / Biopython Friday, 21 May 2010
  • 95. 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
  • 96. Fine... but it’s Mac only Friday, 21 May 2010
  • 97. ... or is it? Friday, 21 May 2010
  • 100. 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
  • 101. 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
  • 103. My experiences • It’s a lot of fun! Friday, 21 May 2010
  • 104. My experiences • It’s a lot of fun! • It is just C with added decoration Friday, 21 May 2010
  • 105. My experiences • It’s a lot of fun! • It is just C with added decoration • Documentation is not always great Friday, 21 May 2010
  • 106. 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
  • 107. 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
  • 108. 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
  • 109. 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
  • 110. Interface Builder Tutorial Friday, 21 May 2010
  • 111. Target - Action Friday, 21 May 2010
  • 112. Bindings key-value observing Friday, 21 May 2010
  • 115. Biomartify • Goals Friday, 21 May 2010
  • 116. Biomartify • Goals • Browse the Biomart registry: marts, their datasets Friday, 21 May 2010
  • 117. Biomartify • Goals • Browse the Biomart registry: marts, their datasets • Build a Biomart query: filters & attributes Friday, 21 May 2010
  • 118. 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
  • 119. 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
  • 120. 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