SlideShare a Scribd company logo
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

More Related Content

PDF
Groovy 1 7 Update, past, present, future - S2G Forum 2010
PPTX
PPTX
Chocolate production process-Hersheys
PPT
PPTX
Processing of cocoa
PPTX
PPTX
Cocoa - chemistry processing and technology
PPT
Chocolate Presentation
Groovy 1 7 Update, past, present, future - S2G Forum 2010
Chocolate production process-Hersheys
Processing of cocoa
Cocoa - chemistry processing and technology
Chocolate Presentation

Similar to Cocoa for Scientists (20)

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

More from Francis Rowland (20)

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

Recently uploaded (20)

PDF
FORM 1 BIOLOGY MIND MAPS and their schemes
PDF
My India Quiz Book_20210205121199924.pdf
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
Weekly quiz Compilation Jan -July 25.pdf
PDF
1_English_Language_Set_2.pdf probationary
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PPTX
TNA_Presentation-1-Final(SAVE)) (1).pptx
PDF
LDMMIA Reiki Yoga Finals Review Spring Summer
PDF
Trump Administration's workforce development strategy
PDF
Empowerment Technology for Senior High School Guide
PDF
advance database management system book.pdf
PPTX
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 1)
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
Τίμαιος είναι φιλοσοφικός διάλογος του Πλάτωνα
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
Computing-Curriculum for Schools in Ghana
FORM 1 BIOLOGY MIND MAPS and their schemes
My India Quiz Book_20210205121199924.pdf
Practical Manual AGRO-233 Principles and Practices of Natural Farming
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
Weekly quiz Compilation Jan -July 25.pdf
1_English_Language_Set_2.pdf probationary
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
TNA_Presentation-1-Final(SAVE)) (1).pptx
LDMMIA Reiki Yoga Finals Review Spring Summer
Trump Administration's workforce development strategy
Empowerment Technology for Senior High School Guide
advance database management system book.pdf
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 1)
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Τίμαιος είναι φιλοσοφικός διάλογος του Πλάτωνα
Chinmaya Tiranga quiz Grand Finale.pdf
Computing-Curriculum for Schools in Ghana

Cocoa for Scientists

  • 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