SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Xamarin.Mac	
  Introduc0on	
  

  Miguel	
  de	
  Icaza,	
  CTO	
  Xamarin	
  
     miguel@xamarin.com	
  
       January	
  10th	
  2013	
  
Xamarin.Mac	
  Overview	
  
•  Build	
  Mac	
  applica0ons	
  with	
  C#	
  
   –  Use	
  C#	
  and	
  .NET	
  libraries	
  on	
  Mac	
  
   –  All	
  that	
  you	
  love:	
  	
  
        •  LINQ,	
  Task	
  Parallel	
  Library,	
  async	
  
        •  GC,	
  type	
  safety,	
  generics,	
  dynamic	
  and	
  more.	
  
   –  Mac	
  AppStore	
  ready	
  


•  Na0ve	
  Applica0ons	
  
   –  Use	
  na0ve	
  APIs	
  to	
  deeply	
  integrate	
  with	
  OSX	
  
Xamarin.Mac Overview

          2.2B devices reachable with C#
Xamarin.Mac	
  at	
  a	
  Glance	
  
                                                                     Xcode	
  
                   MonoDevelop	
  IDE	
  
                                                              (UI	
  Designer)	
  




                                 Xamaric.Mac	
  
                                                           Cocoa	
  Frameworks	
  
 Tools	
  and	
  SDK	
             Libraries	
  
           	
  
•  Binder	
  
                               Mono	
  Core	
  Class	
  
•  Bundler	
                                                System	
  Libraries	
  
                                  Libraries	
  
•  Linker	
  
•  Packager	
  
           	
  
                                Mono	
  Run0me	
                Darwin	
  OS	
  
Xamarin.Mac	
  Frameworks	
  
        Graphics	
                                  User	
  Interface	
  
•      CoreGraphics	
        •    ImageKit	
     •  AppKit	
              •    QCComposer	
  
•      CoreImage	
           •    ImageIO	
      •  CoreAnima0on	
   •         QuickLook	
  
•      CoreText	
            •    OpenGL	
       •  CoreImage	
           •    SceneKit	
  
•      CoreVideo	
           •    PDFKit	
                                •    WebKit	
  


     Audio	
  and	
  Video	
                          System	
  Services	
  
                                                 •     AddressBook	
   •  CoreWLan	
  
•  AVFounda0on	
   •  CoreMidi	
  
                                                 •     Bluetooth	
           •  Scrip0ngBridge	
  
•  AudioToolbox	
   •  CoreMedia	
  
                    •  OpenAL	
                  •     CoreLoca0on	
   •  StoreKit	
  
•  AudioUnit	
  
                                                 •     CoreServices	
  


     Infrastructure	
  
•  CoreData	
   •  Founda0on	
  
•  CoreFounda0on	
   ObjCRun0me	
  
                • 
•  Darwin	
     •  Security	
  
Lots	
  shared	
  with	
  MonoTouch	
  (iOS)	
  
        Graphics	
                                    User	
  Interface	
  
•      CoreGraphics	
        •    ImageKit	
     •     AppKit	
             •    QCComposer	
  
•      CoreImage	
           •    ImageIO	
      •     CoreAnima0on	
   •        QuickLook	
  
•      CoreText	
            •    OpenGL	
       •     CoreGraphics	
   •        SceneKit	
  
•      CoreVideo	
           •    PDFKit	
       •     CoreImage	
          •    WebKit	
  


     Audio	
  and	
  Video	
                          System	
  Services	
  
                                                 •     AddressBook	
   •  CoreWLan	
  
•  AVFounda0on	
   •  CoreMidi	
  
                                                 •     Bluetooth	
           •  Scrip0ngBridge	
  
•  AudioToolbox	
   •  CoreMedia	
  
                    •  OpenAL	
                  •     CoreLoca0on	
   •  StoreKit	
  
•  AudioUnit	
  
                                                 •     CoreServices	
  


     Infrastructure	
  
•  CoreData	
   •  Founda0on	
  
•  CoreFounda0on	
   ObjCRun0me	
  
                • 
•  Darwin	
     •  Security	
  
How	
  does	
  Xamarin.Mac	
  work?	
  
•  OSX	
  Libraries	
  Projected	
  to	
  C#	
  
    –  1:1	
  mapping	
  from	
  OSX	
  na0ve	
  APIs	
  to	
  C#	
  

•  Objec0ve-­‐C	
  (80%	
  of	
  APIs)	
  
    –  Object	
  system	
  mapped	
  
    –  Supports	
  subclassing	
  and	
  overriding	
  

•  C-­‐based	
  APIs	
  (20%	
  of	
  APIs)	
  
    –  Exposed	
  as	
  C#	
  classes/methods	
  
    –  No	
  support	
  for	
  subclassing	
  or	
  overriding	
  
The	
  Basics	
  
        Graphics	
                                      User	
  Interface	
  
•      CoreGraphics	
        •    ImageKit	
         •  AppKit	
              •    QCComposer	
  
•      CoreImage	
           •    ImageIO	
          •  CoreAnima0on	
   •         QuickLook	
  
•      CoreText	
            •    OpenGL	
           •  CoreImage	
           •    SceneKit	
  
•      CoreVideo	
           •    PDFKit	
                                    •    WebKit	
  


     Audio	
  and	
  Video	
                              System	
  Services	
  
                                                     •     AddressBook	
   •  CoreWLan	
  
•  AVFounda0on	
   •  CoreMidi	
  
                                                     •     Bluetooth	
           •  Scrip0ngBridge	
  
•  AudioToolbox	
   •  CoreMedia	
  
                    •  OpenAL	
                      •     CoreLoca0on	
   •  StoreKit	
  
•  AudioUnit	
  
                                                     •     CoreServices	
  


     Infrastructure	
  
•  CoreData	
   •  Founda0on	
  
•  CoreFounda0on	
   ObjCRun0me	
  
                • 
•  Darwin	
     •  Security	
  
Anatomy	
  of	
  a	
  Xamarin.Mac	
  App	
  
                     NSDocument	
  version	
  
                                       	
  
                                       Applica'on	
  Delegate	
  
                                                               Called	
  with	
  applica0on	
  events,	
  among	
  them	
  	
  
                                                               “FinishedLaunching”	
  

                                                               Info.plist	
  
                                                               Applica0on	
  metadata,	
  used	
  by	
  the	
  OS	
  
                                                               (app	
  name,	
  requirements,	
  doc	
  type	
  handlers,	
  etc)	
  

                                                                Main	
  applica'on	
  menu	
  
                                                                Interface	
  defini0on	
  for	
  your	
  main	
  menu	
  



                                                                       Main	
  Window	
  UI	
  Defini'on	
  
                                                                       UI	
  for	
  your	
  Main	
  Window,	
  edited	
  with	
  
Implementa'on	
  for	
  your	
  main	
  window	
                       Xcode.	
  
Code	
  to	
  implement	
  the	
  features	
  of	
  your	
  
Document	
  handler.	
  
Results	
  
Structure	
  of	
  your	
  App	
  
                    NSWindow	
  
                    	
  
                    The	
  toplevel	
  window	
  in	
  your	
  app	
  
                    	
  
                    NSWindow.ContentView	
  
                    	
  
                    An	
  NSViews,	
  hosts	
  all	
  content	
  
NSViews	
  –	
  Powerful	
  containers	
  
•    NSViews	
  can	
  contain	
  other	
  NSViews	
  
•    NSViews	
  can	
  handle	
  events	
  
•    NSViews	
  can	
  paint	
  themselves	
  
•    NSViews	
  can	
  layout	
  their	
  nested	
  NSViews	
  
•    NSViews	
  can	
  be	
  backed	
  by	
  a	
  CALayer	
  
     –  CALayers	
  are	
  GPU	
  accelerated	
  
•  NSView	
  proper0es	
  can	
  be	
  animated	
  
NSWindow	
  and	
  nested	
  NSViews	
  
AppKit	
  -­‐	
  Applica0on	
  Framework	
  
•  Pervasive	
  use	
  of	
  Model	
  View	
  Controller	
  
   –  Unless	
  you	
  are	
  wri0ng	
  a	
  custom	
  control	
  
   –  All	
  logic	
  goes	
  into	
  your	
  controller	
  class	
  
   –  Controller	
  orchestrates	
  work	
  of	
  views	
  


•  Goes	
  beyond	
  the	
  standard	
  offering	
  
   –  High-­‐level	
  NSDocument	
  does	
  the	
  heavy	
  lijing	
  
   –  Full	
  Menu,	
  Saving,	
  Loading,	
  mul0-­‐window	
  support	
  
Extending	
  our	
  first	
  Window	
  
                          Subclass	
  




                                                 Create	
  +	
  Ini0alize	
  Object	
  

                  Hook	
  up	
  some	
  code,	
  lambda	
  
My	
  app	
  in	
  Ac0on	
  
Crea0ng	
  Beau0ful	
  Interfaces	
  
                             •  Launch	
  Xcode	
  to	
  edit	
  
                                XIB	
  files.	
  

                             •  Ac0vate	
  side-­‐by-­‐side	
  	
  
                                view	
  
                                	
  
                                	
  
                                	
  
                                	
  
                             •  Control-­‐drag	
  to	
  source	
  
                                file.	
  
Connec0ng	
  your	
  code	
  
Exposing	
  the	
  UI	
  to	
  Code	
  
•  Outlets	
  
     –  Allows	
  you	
  to	
  reference	
  an	
  object	
  from	
  code	
  
     –  Control-­‐drag	
  to	
  source	
  pane,	
  and	
  give	
  it	
  a	
  name	
  

•  Ac0ons	
  
     –  Allows	
  a	
  method	
  to	
  be	
  invoked	
  as	
  a	
  response	
  
     –  Control	
  drag	
  to	
  source	
  pane,	
  and	
  give	
  a	
  name	
  

•  In	
  C#	
  land	
  
     –  Ac0ons	
  become	
  par0al	
  methods	
  in	
  your	
  class	
  
     –  Outlets	
  become	
  proper0es	
  in	
  your	
  class	
  
Implemen0ng	
  Ac0ons	
  and	
  using	
  Outlets	
  
Running	
  
Behind	
  the	
  Scenes	
  
Events	
  and	
  Callbacks	
  
•  In	
  the	
  C#	
  world	
  we	
  are	
  used	
  to	
  objects	
  
   broadcas0ng	
  events.	
  	
  	
  Like	
  this:	
  
    –      var	
  myControl	
  =	
  new	
  SomeControl	
  ();	
  
    –      myControl.Clicked	
  +=	
  SaveFile;	
  
    –      myControl.FocusIn	
  +=	
  MakeFontBold;	
  
    –      myControl.FocusOut	
  +=	
  ResetFont;	
  
    	
  
                                        SaveFile	
  


              MyControl	
           MakeFontBold	
  


                                       ResetFont	
  
Apple’s	
  Idiom	
  
•  Objects	
  instead	
  send	
  interes0ng	
  events	
  to	
  a	
  
   “Delegate”.	
  	
  	
  All	
  messages	
  are	
  sent	
  there.	
  
   	
  
   var	
  myControl	
  =	
  new	
  SomeControl	
  ()	
  
   myControl.Delegate	
  =	
  new	
  MyControlDelegate	
  ()	
  


       myControl	
                                    myControlDelegate	
  
                                       	
  
                                       class	
  MyControlDelegate	
  :	
  ControlDelegate	
  {	
  
                                             	
  override	
  Clicked	
  ()	
  {…}	
  
                                             	
  override	
  FocusIn	
  ()	
  {…}	
  
                                             	
  override	
  FocusOut	
  ()	
  {…}	
  
                                       }	
  
Xamarin.Mac	
  and	
  Delegates	
  
•  Both	
  models	
  are	
  supported	
  
    –  You	
  get	
  to	
  choose	
  in	
  a	
  per-­‐instance	
  basis	
  


•  Apple	
  Delegate	
  panern	
  mapped	
  to	
  C#	
  events	
  
    –  Internally,	
  we	
  create	
  the	
  Delegate	
  class,	
  map	
  it	
  to	
  
       your	
  C#	
  lambda/anonymous	
  method/delegate	
  


•  One	
  replaces	
  the	
  other	
  
SHIPPING	
  YOUR	
  APP	
  
Shipping	
  Your	
  App	
  -­‐	
  Yourself	
  
•  App	
  has	
  full	
  access	
  to	
  the	
  system	
  

•  Applica0ons	
  are	
  shipped	
  as	
  “bundles”	
  
     –  Directory	
  with	
  .app	
  extension	
  
     –  Self-­‐contained,	
  with	
  no	
  external	
  dependencies	
  
     –  Op0onally:	
  generate	
  installer	
  from	
  IDE	
  as	
  well.	
  

•  MacOS	
  recently	
  enabled	
  GateKeeper	
  
     –  This	
  requires	
  you	
  to	
  sign	
  your	
  app	
  
     –  Or	
  apps	
  wont	
  start	
  on	
  modern	
  systems1	
  (by	
  default)	
  

   1.	
  Technically	
  any	
  Mac	
  running	
  Mountain	
  Lion	
  (10.8.xx)	
  or	
  Lion	
  10.7.5	
  and	
  newer	
  
Shipping	
  your	
  App	
  -­‐	
  AppStore	
  
•  Mac	
  App	
  Store	
  
    –  Must	
  apply	
  to	
  Apple	
  for	
  developer	
  program	
  
    –  Must	
  sign	
  applica0on	
  
    –  Submit	
  app	
  for	
  review	
  

•  App	
  will	
  be	
  sandboxed	
  

•  IDE	
  signs,	
  packages	
  and	
  launches	
  uploader	
  

•  See	
  Xamarin’s	
  docs	
  for	
  tutorial	
  
MacOS	
  X	
  Sandbox	
  	
  
•  Kernel	
  enforced	
  sandbox	
  
•  Limits	
  access	
  to	
  the	
  system:	
  
       –  Limita0ons	
  on	
  file	
  system	
  access	
  
       –  Use	
  special	
  Open/Save	
  dialog	
  panels	
  
       –  Limits	
  access	
  to	
  services,	
  and	
  some	
  kernel	
  APIs	
  
	
  
Mac	
  AppStore	
  –	
  Sandbox	
  Configura0on	
  

Info.plist	
  	
  
	
  
Edi0ng	
  this	
  file	
  brings	
  up	
  
the	
  metadata	
  editor.	
  
	
  
Use	
  this	
  editor	
  to	
  configure	
  
your	
  applica0on	
  requirements	
  
from	
  the	
  sandbox.	
  
Next Steps
Learn more at:         Deep Dive at Xamarin Evolve 2013
-  xamarin.com/mac     April 14 – 17, Austin, TX
-  Docs.xamarin.com
                       2 Days of Xamarin Technical Training &
                       Certification
Free trial:
-  xamarin.com/trial   2 Conference days covering all things mobile

                       Keynotes by Nat, Miguel and Scott Hanselman

                       Call for speakers officially open & sponsorship
                       information available at evolve@xamarin.com
Pricing	
  
•  Free	
  trial	
  at	
  xamarin.com/trial	
  

•  Professional:	
  $399	
  
    	
  
•  Enterprise:	
  $999	
  per	
  seat	
  

•  Enterprise	
  Priority:	
  $2,499	
  per	
  seat	
  
Resources	
  
•  Xamarin’s	
  Mac	
  Resources:	
  
     –  hnp://docs.xamarin.com/mac	
  

•  API	
  documenta0on:	
  
     –  Installed	
  on	
  first	
  use	
  (Apple	
  +	
  Xamarin	
  Docs)	
  

•  C#	
  samples:	
  hnps://github.com/xamarin/mac-­‐samples	
  

•  Support	
  Forum:	
  hnp://forums.xamarin.com/categories/mac	
  

•  Apple	
  Developer	
  Portal:	
  hnp://developer.apple.com/mac	
  

•  Xamarin’s	
  Evolve	
  conference:	
  hnp://xamarin.com/evolve	
  
MORE	
  INFORMATION	
  
TouchDraw	
  and	
  iCircuit	
  
•  TouchDraw	
  



	
  
•  iCircuit	
  
PROJECTIONS	
  
Objec0ve-­‐C	
  Projec0on	
  to	
  C#	
  
•  What	
  we	
  map:	
  
    –  Classes	
  	
  
    –  Structures	
  
    –  Methods	
  and	
  Proper0es	
  
    –  Objec0ve-­‐C	
  blocks	
  
    –  Public	
  global	
  fields	
  
    –  No0fica0ons	
  
    –  Dic0onaries	
  
    –  Core	
  data	
  types	
  

•  Follow	
  the	
  .NET	
  Framework	
  Design	
  Guidelines	
  
Projec0ng	
  Classes	
  and	
  Structs	
  
•  Iden0cal	
  class	
  names	
  
•  Scoped	
  by	
  namespace	
  	
  
	
  
Example:	
  
     	
  NSWindow	
  and	
  NSURL	
  
	
  
Become	
  
       	
  MonoMac.AppKit.NSWindow	
  
     	
  MonoMac.Foundation.NSUrl	
  
Projec0ng	
  Methods	
  and	
  Proper0es	
  
•  We	
  rename	
  methods	
  to	
  follow	
  .NET	
  FDG	
  
•  Use	
  C#	
  overloading	
  

Example:	
  
-­‐(void)	
  drawString:(NSString	
  *)	
  str	
  atPoint:(CGPoint)pos	
  
-­‐(void)	
  drawString:(NSString	
  *)	
  str	
  
	
  
Becomes:	
  
void	
  DrawString	
  (string	
  str)	
  
void	
  DrawString	
  (string	
  str,	
  PointF	
  position)	
  
	
  
Projec0ng	
  Blocks	
  
•  Blocks	
  are	
  Objec0ve-­‐C	
  lambdas	
  
•  They	
  are	
  mapped	
  to	
  C#	
  delegates	
  
    –  Can	
  be	
  used	
  with	
  C#	
  lambdas	
  or	
  methods	
  


Example:	
  
    (int)(^)(string	
  msg,	
  int	
  flag)	
  

Becomes:	
  
  	
  delegate	
  int	
  X	
  (string	
  msg,	
  int	
  flag)	
  
Projec0ng	
  No0fica0ons	
  
•  No0fica0ons	
  are	
  posted	
  as	
  strings	
  +	
  Dic0onary	
  
•  We	
  map	
  those	
  to	
  strong	
  types	
  +	
  EventArgs	
  
Regular	
  Style/Objec've-­‐C	
                Strongly	
  Typed	
  
Projec0ng	
  NSDic0onary	
  Op0ons	
  
•  Dic0onaries	
  are	
  used	
  to	
  pass	
  parameters	
  
•  Loosely	
  typed,	
  hard	
  to	
  debug,	
  hard	
  to	
  find	
  

•  We	
  provide	
  strongly	
  typed	
  classes	
  
•  They	
  implicitly	
  convert	
  to	
  NSDic0onary	
  
    –  With	
  the	
  right	
  magic	
  keys	
  
    –  With	
  the	
  correct	
  types	
  for	
  parameters	
  
AppKit	
  –	
  The	
  Heart	
  of	
  Mac	
  Apps	
  

Más contenido relacionado

La actualidad más candente

Shannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Build Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application ServerBuild Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application ServerCarly Snodgrass
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesKyle McInnes
 
OSGi In Anger - Tara Simpson
OSGi In Anger - Tara SimpsonOSGi In Anger - Tara Simpson
OSGi In Anger - Tara Simpsonmfrancis
 
IBM Mobile Foundation POT - Part 2 introduction to application development wi...
IBM Mobile Foundation POT - Part 2 introduction to application development wi...IBM Mobile Foundation POT - Part 2 introduction to application development wi...
IBM Mobile Foundation POT - Part 2 introduction to application development wi...AIP Foundation
 
eBay Architecture
eBay Architecture eBay Architecture
eBay Architecture Tony Ng
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMGabriel Walt
 
Using BrightWork for Project Management with SharePoint 2010 - from Atidan
Using BrightWork for Project Management with SharePoint 2010 - from AtidanUsing BrightWork for Project Management with SharePoint 2010 - from Atidan
Using BrightWork for Project Management with SharePoint 2010 - from AtidanDavid J Rosenthal
 
Native - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesNative - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesPhong Le Duy
 
Building Azure RemoteApp - Microsoft Campus Days 2014
Building Azure RemoteApp - Microsoft Campus Days 2014Building Azure RemoteApp - Microsoft Campus Days 2014
Building Azure RemoteApp - Microsoft Campus Days 2014Morgan Simonsen
 
Using Adobe Gaming Tools for Education
Using Adobe Gaming Tools for EducationUsing Adobe Gaming Tools for Education
Using Adobe Gaming Tools for EducationJoseph Labrecque
 
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...Acquia
 

La actualidad más candente (20)

WinDays15 - RemoteApp
WinDays15 - RemoteAppWinDays15 - RemoteApp
WinDays15 - RemoteApp
 
Shannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco Intro
 
Demandware krueger
Demandware kruegerDemandware krueger
Demandware krueger
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Build Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application ServerBuild Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application Server
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and Smartphones
 
OSGi In Anger - Tara Simpson
OSGi In Anger - Tara SimpsonOSGi In Anger - Tara Simpson
OSGi In Anger - Tara Simpson
 
IBM Mobile Foundation POT - Part 2 introduction to application development wi...
IBM Mobile Foundation POT - Part 2 introduction to application development wi...IBM Mobile Foundation POT - Part 2 introduction to application development wi...
IBM Mobile Foundation POT - Part 2 introduction to application development wi...
 
eBay Architecture
eBay Architecture eBay Architecture
eBay Architecture
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM
 
Using BrightWork for Project Management with SharePoint 2010 - from Atidan
Using BrightWork for Project Management with SharePoint 2010 - from AtidanUsing BrightWork for Project Management with SharePoint 2010 - from Atidan
Using BrightWork for Project Management with SharePoint 2010 - from Atidan
 
Don Schwarz App Engine Talk
Don Schwarz App Engine TalkDon Schwarz App Engine Talk
Don Schwarz App Engine Talk
 
Native - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesNative - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile Architectures
 
Building Azure RemoteApp - Microsoft Campus Days 2014
Building Azure RemoteApp - Microsoft Campus Days 2014Building Azure RemoteApp - Microsoft Campus Days 2014
Building Azure RemoteApp - Microsoft Campus Days 2014
 
Using Adobe Gaming Tools for Education
Using Adobe Gaming Tools for EducationUsing Adobe Gaming Tools for Education
Using Adobe Gaming Tools for Education
 
Building Azure Remoteapp
Building Azure RemoteappBuilding Azure Remoteapp
Building Azure Remoteapp
 
Crx 2.2 Deep-Dive
Crx 2.2 Deep-DiveCrx 2.2 Deep-Dive
Crx 2.2 Deep-Dive
 
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...
Acquia Managed Cloud: Highly Available Architecture for Highly Unpredictable ...
 
CQ 5.4 Deep-Dive
CQ 5.4 Deep-DiveCQ 5.4 Deep-Dive
CQ 5.4 Deep-Dive
 

Destacado

Destacado (11)

Introduction to Qualnet
Introduction to Qualnet Introduction to Qualnet
Introduction to Qualnet
 
Network simulation software
Network simulation softwareNetwork simulation software
Network simulation software
 
VANET Simulation - Jamal Toutouh
VANET Simulation - Jamal  ToutouhVANET Simulation - Jamal  Toutouh
VANET Simulation - Jamal Toutouh
 
Link Layer Protocols for WSN-based IoT
Link Layer Protocols for WSN-based IoTLink Layer Protocols for WSN-based IoT
Link Layer Protocols for WSN-based IoT
 
TinyOS 2.1 Tutorial: TOSSIM
TinyOS 2.1 Tutorial: TOSSIMTinyOS 2.1 Tutorial: TOSSIM
TinyOS 2.1 Tutorial: TOSSIM
 
Intoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIMIntoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIM
 
1 session installation
1 session installation1 session installation
1 session installation
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Tutorial ns 3-tutorial-slides
Tutorial ns 3-tutorial-slidesTutorial ns 3-tutorial-slides
Tutorial ns 3-tutorial-slides
 
Introduction to Xamarin 2.0
Introduction to Xamarin 2.0Introduction to Xamarin 2.0
Introduction to Xamarin 2.0
 
Ns 2 Network Simulator An Introduction
Ns 2 Network Simulator An IntroductionNs 2 Network Simulator An Introduction
Ns 2 Network Simulator An Introduction
 

Similar a Xamarin.Mac Seminar

Building Papers
Building PapersBuilding Papers
Building PapersMahmoud
 
Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouchJonas Follesø
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDamir Beylkhanov
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Make your Cloud Applications Function for real – A Complete Overview of Oracl...Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Make your Cloud Applications Function for real – A Complete Overview of Oracl...Lucas Jellema
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryQAware GmbH
 
Android platform
Android platformAndroid platform
Android platformmaya_slides
 
Android application development
Android application developmentAndroid application development
Android application developmentLinh Vi Tường
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellEugene Fedorenko
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONICDeveloping Hybrid Applications with IONIC
Developing Hybrid Applications with IONICFuat Buğra AYDIN
 
Xamarin.Mac Introduction
Xamarin.Mac IntroductionXamarin.Mac Introduction
Xamarin.Mac IntroductionMiguel de Icaza
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsAndreas Sahle
 
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...DevOpsDays Houston
 
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...IndicThreads
 
Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Cloud Native Application Development-build fast, low TCO, scalable & agile so...Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Cloud Native Application Development-build fast, low TCO, scalable & agile so...Lucas Jellema
 

Similar a Xamarin.Mac Seminar (20)

Building Papers
Building PapersBuilding Papers
Building Papers
 
Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouch
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
 
iOS platform
iOS platformiOS platform
iOS platform
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Make your Cloud Applications Function for real – A Complete Overview of Oracl...Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Make your Cloud Applications Function for real – A Complete Overview of Oracl...
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
 
Android platform
Android platformAndroid platform
Android platform
 
Android application development
Android application developmentAndroid application development
Android application development
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshell
 
Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONICDeveloping Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
 
My androidpresentation
My androidpresentationMy androidpresentation
My androidpresentation
 
Xamarin.Mac Introduction
Xamarin.Mac IntroductionXamarin.Mac Introduction
Xamarin.Mac Introduction
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile apps
 
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
 
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
 
Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Cloud Native Application Development-build fast, low TCO, scalable & agile so...Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Cloud Native Application Development-build fast, low TCO, scalable & agile so...
 

Más de Xamarin

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinXamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinXamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushXamarin
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureXamarin
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksXamarin
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinXamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningXamarin
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UIXamarin
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesXamarin
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilityXamarin
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeXamarin
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Xamarin
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsXamarin
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureXamarin
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Xamarin
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureXamarin
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Xamarin
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioXamarin
 

Más de Xamarin (20)

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft Azure
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin Workbooks
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine Learning
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UI
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and Resources
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and Profitability
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile Practice
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.Forms
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft Azure
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual Studio
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Xamarin.Mac Seminar

  • 1. Xamarin.Mac  Introduc0on   Miguel  de  Icaza,  CTO  Xamarin   miguel@xamarin.com   January  10th  2013  
  • 2. Xamarin.Mac  Overview   •  Build  Mac  applica0ons  with  C#   –  Use  C#  and  .NET  libraries  on  Mac   –  All  that  you  love:     •  LINQ,  Task  Parallel  Library,  async   •  GC,  type  safety,  generics,  dynamic  and  more.   –  Mac  AppStore  ready   •  Na0ve  Applica0ons   –  Use  na0ve  APIs  to  deeply  integrate  with  OSX  
  • 3. Xamarin.Mac Overview 2.2B devices reachable with C#
  • 4. Xamarin.Mac  at  a  Glance   Xcode   MonoDevelop  IDE   (UI  Designer)   Xamaric.Mac   Cocoa  Frameworks   Tools  and  SDK   Libraries     •  Binder   Mono  Core  Class   •  Bundler   System  Libraries   Libraries   •  Linker   •  Packager     Mono  Run0me   Darwin  OS  
  • 5. Xamarin.Mac  Frameworks   Graphics   User  Interface   •  CoreGraphics   •  ImageKit   •  AppKit   •  QCComposer   •  CoreImage   •  ImageIO   •  CoreAnima0on   •  QuickLook   •  CoreText   •  OpenGL   •  CoreImage   •  SceneKit   •  CoreVideo   •  PDFKit   •  WebKit   Audio  and  Video   System  Services   •  AddressBook   •  CoreWLan   •  AVFounda0on   •  CoreMidi   •  Bluetooth   •  Scrip0ngBridge   •  AudioToolbox   •  CoreMedia   •  OpenAL   •  CoreLoca0on   •  StoreKit   •  AudioUnit   •  CoreServices   Infrastructure   •  CoreData   •  Founda0on   •  CoreFounda0on   ObjCRun0me   •  •  Darwin   •  Security  
  • 6. Lots  shared  with  MonoTouch  (iOS)   Graphics   User  Interface   •  CoreGraphics   •  ImageKit   •  AppKit   •  QCComposer   •  CoreImage   •  ImageIO   •  CoreAnima0on   •  QuickLook   •  CoreText   •  OpenGL   •  CoreGraphics   •  SceneKit   •  CoreVideo   •  PDFKit   •  CoreImage   •  WebKit   Audio  and  Video   System  Services   •  AddressBook   •  CoreWLan   •  AVFounda0on   •  CoreMidi   •  Bluetooth   •  Scrip0ngBridge   •  AudioToolbox   •  CoreMedia   •  OpenAL   •  CoreLoca0on   •  StoreKit   •  AudioUnit   •  CoreServices   Infrastructure   •  CoreData   •  Founda0on   •  CoreFounda0on   ObjCRun0me   •  •  Darwin   •  Security  
  • 7. How  does  Xamarin.Mac  work?   •  OSX  Libraries  Projected  to  C#   –  1:1  mapping  from  OSX  na0ve  APIs  to  C#   •  Objec0ve-­‐C  (80%  of  APIs)   –  Object  system  mapped   –  Supports  subclassing  and  overriding   •  C-­‐based  APIs  (20%  of  APIs)   –  Exposed  as  C#  classes/methods   –  No  support  for  subclassing  or  overriding  
  • 8. The  Basics   Graphics   User  Interface   •  CoreGraphics   •  ImageKit   •  AppKit   •  QCComposer   •  CoreImage   •  ImageIO   •  CoreAnima0on   •  QuickLook   •  CoreText   •  OpenGL   •  CoreImage   •  SceneKit   •  CoreVideo   •  PDFKit   •  WebKit   Audio  and  Video   System  Services   •  AddressBook   •  CoreWLan   •  AVFounda0on   •  CoreMidi   •  Bluetooth   •  Scrip0ngBridge   •  AudioToolbox   •  CoreMedia   •  OpenAL   •  CoreLoca0on   •  StoreKit   •  AudioUnit   •  CoreServices   Infrastructure   •  CoreData   •  Founda0on   •  CoreFounda0on   ObjCRun0me   •  •  Darwin   •  Security  
  • 9.
  • 10. Anatomy  of  a  Xamarin.Mac  App   NSDocument  version     Applica'on  Delegate   Called  with  applica0on  events,  among  them     “FinishedLaunching”   Info.plist   Applica0on  metadata,  used  by  the  OS   (app  name,  requirements,  doc  type  handlers,  etc)   Main  applica'on  menu   Interface  defini0on  for  your  main  menu   Main  Window  UI  Defini'on   UI  for  your  Main  Window,  edited  with   Implementa'on  for  your  main  window   Xcode.   Code  to  implement  the  features  of  your   Document  handler.  
  • 12. Structure  of  your  App   NSWindow     The  toplevel  window  in  your  app     NSWindow.ContentView     An  NSViews,  hosts  all  content  
  • 13. NSViews  –  Powerful  containers   •  NSViews  can  contain  other  NSViews   •  NSViews  can  handle  events   •  NSViews  can  paint  themselves   •  NSViews  can  layout  their  nested  NSViews   •  NSViews  can  be  backed  by  a  CALayer   –  CALayers  are  GPU  accelerated   •  NSView  proper0es  can  be  animated  
  • 14. NSWindow  and  nested  NSViews  
  • 15. AppKit  -­‐  Applica0on  Framework   •  Pervasive  use  of  Model  View  Controller   –  Unless  you  are  wri0ng  a  custom  control   –  All  logic  goes  into  your  controller  class   –  Controller  orchestrates  work  of  views   •  Goes  beyond  the  standard  offering   –  High-­‐level  NSDocument  does  the  heavy  lijing   –  Full  Menu,  Saving,  Loading,  mul0-­‐window  support  
  • 16. Extending  our  first  Window   Subclass   Create  +  Ini0alize  Object   Hook  up  some  code,  lambda  
  • 17. My  app  in  Ac0on  
  • 18. Crea0ng  Beau0ful  Interfaces   •  Launch  Xcode  to  edit   XIB  files.   •  Ac0vate  side-­‐by-­‐side     view           •  Control-­‐drag  to  source   file.  
  • 20. Exposing  the  UI  to  Code   •  Outlets   –  Allows  you  to  reference  an  object  from  code   –  Control-­‐drag  to  source  pane,  and  give  it  a  name   •  Ac0ons   –  Allows  a  method  to  be  invoked  as  a  response   –  Control  drag  to  source  pane,  and  give  a  name   •  In  C#  land   –  Ac0ons  become  par0al  methods  in  your  class   –  Outlets  become  proper0es  in  your  class  
  • 21. Implemen0ng  Ac0ons  and  using  Outlets  
  • 24. Events  and  Callbacks   •  In  the  C#  world  we  are  used  to  objects   broadcas0ng  events.      Like  this:   –  var  myControl  =  new  SomeControl  ();   –  myControl.Clicked  +=  SaveFile;   –  myControl.FocusIn  +=  MakeFontBold;   –  myControl.FocusOut  +=  ResetFont;     SaveFile   MyControl   MakeFontBold   ResetFont  
  • 25. Apple’s  Idiom   •  Objects  instead  send  interes0ng  events  to  a   “Delegate”.      All  messages  are  sent  there.     var  myControl  =  new  SomeControl  ()   myControl.Delegate  =  new  MyControlDelegate  ()   myControl   myControlDelegate     class  MyControlDelegate  :  ControlDelegate  {    override  Clicked  ()  {…}    override  FocusIn  ()  {…}    override  FocusOut  ()  {…}   }  
  • 26. Xamarin.Mac  and  Delegates   •  Both  models  are  supported   –  You  get  to  choose  in  a  per-­‐instance  basis   •  Apple  Delegate  panern  mapped  to  C#  events   –  Internally,  we  create  the  Delegate  class,  map  it  to   your  C#  lambda/anonymous  method/delegate   •  One  replaces  the  other  
  • 28. Shipping  Your  App  -­‐  Yourself   •  App  has  full  access  to  the  system   •  Applica0ons  are  shipped  as  “bundles”   –  Directory  with  .app  extension   –  Self-­‐contained,  with  no  external  dependencies   –  Op0onally:  generate  installer  from  IDE  as  well.   •  MacOS  recently  enabled  GateKeeper   –  This  requires  you  to  sign  your  app   –  Or  apps  wont  start  on  modern  systems1  (by  default)   1.  Technically  any  Mac  running  Mountain  Lion  (10.8.xx)  or  Lion  10.7.5  and  newer  
  • 29. Shipping  your  App  -­‐  AppStore   •  Mac  App  Store   –  Must  apply  to  Apple  for  developer  program   –  Must  sign  applica0on   –  Submit  app  for  review   •  App  will  be  sandboxed   •  IDE  signs,  packages  and  launches  uploader   •  See  Xamarin’s  docs  for  tutorial  
  • 30. MacOS  X  Sandbox     •  Kernel  enforced  sandbox   •  Limits  access  to  the  system:   –  Limita0ons  on  file  system  access   –  Use  special  Open/Save  dialog  panels   –  Limits  access  to  services,  and  some  kernel  APIs    
  • 31. Mac  AppStore  –  Sandbox  Configura0on   Info.plist       Edi0ng  this  file  brings  up   the  metadata  editor.     Use  this  editor  to  configure   your  applica0on  requirements   from  the  sandbox.  
  • 32. Next Steps Learn more at: Deep Dive at Xamarin Evolve 2013 -  xamarin.com/mac April 14 – 17, Austin, TX -  Docs.xamarin.com 2 Days of Xamarin Technical Training & Certification Free trial: -  xamarin.com/trial 2 Conference days covering all things mobile Keynotes by Nat, Miguel and Scott Hanselman Call for speakers officially open & sponsorship information available at evolve@xamarin.com
  • 33. Pricing   •  Free  trial  at  xamarin.com/trial   •  Professional:  $399     •  Enterprise:  $999  per  seat   •  Enterprise  Priority:  $2,499  per  seat  
  • 34. Resources   •  Xamarin’s  Mac  Resources:   –  hnp://docs.xamarin.com/mac   •  API  documenta0on:   –  Installed  on  first  use  (Apple  +  Xamarin  Docs)   •  C#  samples:  hnps://github.com/xamarin/mac-­‐samples   •  Support  Forum:  hnp://forums.xamarin.com/categories/mac   •  Apple  Developer  Portal:  hnp://developer.apple.com/mac   •  Xamarin’s  Evolve  conference:  hnp://xamarin.com/evolve  
  • 36. TouchDraw  and  iCircuit   •  TouchDraw     •  iCircuit  
  • 38. Objec0ve-­‐C  Projec0on  to  C#   •  What  we  map:   –  Classes     –  Structures   –  Methods  and  Proper0es   –  Objec0ve-­‐C  blocks   –  Public  global  fields   –  No0fica0ons   –  Dic0onaries   –  Core  data  types   •  Follow  the  .NET  Framework  Design  Guidelines  
  • 39. Projec0ng  Classes  and  Structs   •  Iden0cal  class  names   •  Scoped  by  namespace       Example:    NSWindow  and  NSURL     Become    MonoMac.AppKit.NSWindow    MonoMac.Foundation.NSUrl  
  • 40. Projec0ng  Methods  and  Proper0es   •  We  rename  methods  to  follow  .NET  FDG   •  Use  C#  overloading   Example:   -­‐(void)  drawString:(NSString  *)  str  atPoint:(CGPoint)pos   -­‐(void)  drawString:(NSString  *)  str     Becomes:   void  DrawString  (string  str)   void  DrawString  (string  str,  PointF  position)    
  • 41. Projec0ng  Blocks   •  Blocks  are  Objec0ve-­‐C  lambdas   •  They  are  mapped  to  C#  delegates   –  Can  be  used  with  C#  lambdas  or  methods   Example:   (int)(^)(string  msg,  int  flag)   Becomes:    delegate  int  X  (string  msg,  int  flag)  
  • 42. Projec0ng  No0fica0ons   •  No0fica0ons  are  posted  as  strings  +  Dic0onary   •  We  map  those  to  strong  types  +  EventArgs   Regular  Style/Objec've-­‐C   Strongly  Typed  
  • 43. Projec0ng  NSDic0onary  Op0ons   •  Dic0onaries  are  used  to  pass  parameters   •  Loosely  typed,  hard  to  debug,  hard  to  find   •  We  provide  strongly  typed  classes   •  They  implicitly  convert  to  NSDic0onary   –  With  the  right  magic  keys   –  With  the  correct  types  for  parameters  
  • 44. AppKit  –  The  Heart  of  Mac  Apps