The document discusses writing native Mac applications using C# and Xamarin.Mac. It provides an overview of Xamarin.Mac, how it allows access to Mac OS X APIs from C#, and how a basic Xamarin.Mac application is structured. It also demonstrates how to add a button to a window and handle button clicks in C#.
Presentation to Xamarin User Group in San Francisco, 19-Sep-2013... all the latest in Xamarin technology including iOS, Android, Xamarin Studio, Portable Class Libraries, Async/Await and TestCloud.
Slides for my session at Xamarin Evolve 2014.
Code for the Todo app is here
https://github.com/xamarin/xamarin-forms-samples/tree/master/Todo/PCL
(there is a XAML version here)
https://github.com/conceptdev/xamarin-forms-samples/tree/master/TodoXaml
And the 8ball app is mentioned here
https://github.com/xamarin/mini-hacks/tree/master/Xamarin.Forms
This presentation is about -
a) Understand the basics of auto Layout
b) Use Auto Layout programmatically
c) Debug Auto Layout
d) Constraints
e) Intrinsic content Size
f) Interface Builder and Constraints
g) Contraint Priorities
h)Constraints in Code
I)Debugging Auto layout
J)Animation Constraints
k)Visual Format Language
* Blog post: http://wakeupandcode.com/deeper-into-windows-10-development
The presentation material was adopted from the Microsoft Virtual Academy course on Windows 10 app development, hosted by Jerry Nixon and Andy Wigley.
Whether you’re new to app development, or a published developer, learn how you can leverage your current skills to build apps for the next generation of Windows. Join Sr. Technical Evangelist Shahed Chowdhuri and go deeper into Windows 10 app development. All in-person attendees will get a free BizSpark code which will give you access to all Visual Studio editions, a Windows Store publishing account, free Azure credits, and more!
Presentation to Xamarin User Group in San Francisco, 19-Sep-2013... all the latest in Xamarin technology including iOS, Android, Xamarin Studio, Portable Class Libraries, Async/Await and TestCloud.
Slides for my session at Xamarin Evolve 2014.
Code for the Todo app is here
https://github.com/xamarin/xamarin-forms-samples/tree/master/Todo/PCL
(there is a XAML version here)
https://github.com/conceptdev/xamarin-forms-samples/tree/master/TodoXaml
And the 8ball app is mentioned here
https://github.com/xamarin/mini-hacks/tree/master/Xamarin.Forms
This presentation is about -
a) Understand the basics of auto Layout
b) Use Auto Layout programmatically
c) Debug Auto Layout
d) Constraints
e) Intrinsic content Size
f) Interface Builder and Constraints
g) Contraint Priorities
h)Constraints in Code
I)Debugging Auto layout
J)Animation Constraints
k)Visual Format Language
* Blog post: http://wakeupandcode.com/deeper-into-windows-10-development
The presentation material was adopted from the Microsoft Virtual Academy course on Windows 10 app development, hosted by Jerry Nixon and Andy Wigley.
Whether you’re new to app development, or a published developer, learn how you can leverage your current skills to build apps for the next generation of Windows. Join Sr. Technical Evangelist Shahed Chowdhuri and go deeper into Windows 10 app development. All in-person attendees will get a free BizSpark code which will give you access to all Visual Studio editions, a Windows Store publishing account, free Azure credits, and more!
CodeStock :: Introduction To MacRuby and HotCocoaDoc Norton
MacRuby is an implementation of Ruby 1.9 directly on top of Mac OS X core technologies. HotCocoa is a thin, idiomatic Ruby layer that sits above Cocoa and other frameworks. Together, they make building Mac applications pain free (for Rubyists). Doc shows us how to get started and then walks us through the creation of a simple app.
지난 7월 29일, 개발자 여러분을 위해 준비한 "Windows 10 앱개발 100분 완성" 라이브 영상으로 Windows 10 UWP (Universal Windows Platform) 부터 IoT Core까지 Windows 10 과 관련된 전반적인 내용은 물론 개발에 필요한 핵심정보들을 전달해드립니다. 실시간으로 진행된 Q&A 와 Windows 10 앱개발 데모까지 On-demand 영상으로 확인하실 수 있습니다.
목차
1. UWP
2. XAML Controls
3. Networking
4. Linq
5. Adaptive UI
6. Data Binding
7. SQLite Local Database
8. Toast
Presentation about Windows Presentation Foundation - that appeared in the .NET Framework 3.0. The technology gives us ability to create outstanding UI for our applications.
I gave that lecture for IT Academic Days at my University.
Although Web and mobile apps are getting more capable every day, often your application makes the most sense on the desktop. In this talk, we’ll look at some recent technologies that have allowed significant desktop apps — like Barnes & Noble’s NOOK Study e-textbook reader, or Adobe’s Brackets IDE — to be written in HTML5 and JavaScript. Projects like the Chromium Embedded Framework, node-webkit, and AppJS provide an excellent native-to-JS bridge. With them in hand, you can bring the full power of the Node.js and front-end ecosystems to bear, while still gaining the advantages of running as a native app.
Here we explain the installation & basic coding for Titanium Appcelerator which is a cross platform development tool supporting Android, iOS & Blackberry.
This talk describes a possibility for building native Desktop applications in an web focused environment using the Electron framework. Especially the use in combination with modern single page application frameworks like Angular and React is focused.
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin
René Ruppert shows you how to easily integrate the power of three different Azure Cognitive Services into a Xamarin application. Given that nobody can decipher René's handwriting, he's going to use the power of Azure to turn it into clear text and use that as input for further processing.
Watch the recording at https://youtu.be/ipeXRXetmFE
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin
Mark Smith shows you how to automate your app development pipeline with Visual Studio App Center. You’ll walk through how to connect your app to App Center and start improving your development process and your apps immediately.
Watch recording at https://youtu.be/QXLOzdpYPXU
More Related Content
Similar to Writing native Mac apps in C# with Xamarin.Mac - Aaron Bockover
CodeStock :: Introduction To MacRuby and HotCocoaDoc Norton
MacRuby is an implementation of Ruby 1.9 directly on top of Mac OS X core technologies. HotCocoa is a thin, idiomatic Ruby layer that sits above Cocoa and other frameworks. Together, they make building Mac applications pain free (for Rubyists). Doc shows us how to get started and then walks us through the creation of a simple app.
지난 7월 29일, 개발자 여러분을 위해 준비한 "Windows 10 앱개발 100분 완성" 라이브 영상으로 Windows 10 UWP (Universal Windows Platform) 부터 IoT Core까지 Windows 10 과 관련된 전반적인 내용은 물론 개발에 필요한 핵심정보들을 전달해드립니다. 실시간으로 진행된 Q&A 와 Windows 10 앱개발 데모까지 On-demand 영상으로 확인하실 수 있습니다.
목차
1. UWP
2. XAML Controls
3. Networking
4. Linq
5. Adaptive UI
6. Data Binding
7. SQLite Local Database
8. Toast
Presentation about Windows Presentation Foundation - that appeared in the .NET Framework 3.0. The technology gives us ability to create outstanding UI for our applications.
I gave that lecture for IT Academic Days at my University.
Although Web and mobile apps are getting more capable every day, often your application makes the most sense on the desktop. In this talk, we’ll look at some recent technologies that have allowed significant desktop apps — like Barnes & Noble’s NOOK Study e-textbook reader, or Adobe’s Brackets IDE — to be written in HTML5 and JavaScript. Projects like the Chromium Embedded Framework, node-webkit, and AppJS provide an excellent native-to-JS bridge. With them in hand, you can bring the full power of the Node.js and front-end ecosystems to bear, while still gaining the advantages of running as a native app.
Here we explain the installation & basic coding for Titanium Appcelerator which is a cross platform development tool supporting Android, iOS & Blackberry.
This talk describes a possibility for building native Desktop applications in an web focused environment using the Electron framework. Especially the use in combination with modern single page application frameworks like Angular and React is focused.
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin
René Ruppert shows you how to easily integrate the power of three different Azure Cognitive Services into a Xamarin application. Given that nobody can decipher René's handwriting, he's going to use the power of Azure to turn it into clear text and use that as input for further processing.
Watch the recording at https://youtu.be/ipeXRXetmFE
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin
Mark Smith shows you how to automate your app development pipeline with Visual Studio App Center. You’ll walk through how to connect your app to App Center and start improving your development process and your apps immediately.
Watch recording at https://youtu.be/QXLOzdpYPXU
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinXamarin
In this webinar deck Craig Dunn shows what’s new in iOS 11 and how to take advantage of the latest updates – from drag-and-drop for iPad to machine learning and more – 100% in .NET and Visual Studio. Whether you’re building new or updating existing Xamarin.iOS apps, you’ll see how to implement new frameworks, APIs, and UI features, walk-through code samples, get expert tips and tricks, so you can start shipping iOS 11-ready apps to your users.
Watch webinar at https://youtu.be/mXAbpXLT1vo
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinXamarin
In this webinar deck Tom Opgenorth dives into what’s new in Android 8 Oreo and shows how to add the latest features – like Picture-in-picture, notification channels, downloadable fonts, and more – to your apps, 100% in .NET and Visual Studio. Whether you’re building new or updating existing Xamarin.Android apps, you’ll get the step-by-step demos, code samples, and expert tips you need to start shipping Android 8 Oreo-ready apps to your users immediately.
Watch webinar at https://youtu.be/qEW6AyUdnKw
Build Better Games with Unity and Microsoft AzureXamarin
David Antognoli shows you how to take your Unity games to the next level with powerful cloud services. He’ll walk through how to connect your apps to Microsoft Azure, adding compelling features that users love, like leaderboards and heatmaps, and demo how new Unity and Visual Studio 2017 features improve your development process and your users' experience.
In the session, you’ll:
• Create and configure a new Unity project and integrate with Azure Easy tables – from scratch
• Reference external packages from NuGet in Unity projects
• Update the Unity Mono security certificate store
• Add leaderboards and use the Azure Mobile Client SDK to save data telemetry
• Analyze heatmap telemetry to improve your game design
• Ask questions and receive guidance from our team of experts
Watch the webinar recording at https://channel9.msdn.com/Events/Xamarin/Recent-Webinars/Build-Better-Games-with-Unity-and-Microsoft-Azure
Exploring UrhoSharp 3D with Xamarin WorkbooksXamarin
In this webinar recording Charles Petzold show how to build a 3D app from the ground up with UrhoSharp and Xamarin Workbooks. UrhoSharp is a powerful, high performance 3D graphics engine suitable for games, animation, and data visualization. UrhoSharp and Xamarin Workbooks give developers a streamlined way to get started with 3D graphics programming quickly.
Regardless whether you're using UrhoSharp to target Android, iOS, macOS, Xamarin.Forms, or Windows, you can use Workbooks to develop and perfect your UrhoSharp code. The Workbooks approach brings an interactive immediacy to 3D graphics that inspires experimentation, exploration, and discovery.
Watch the webinar recording at https://aka.ms/urho-sharp-3d-webinar
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinXamarin
These are the slides from Mark Smith's webinar where he shows how to apply your existing desktop development skills, knowledge, and code to mobile development. With Microsoft’s mobile tools and cloud services, you can start delivering native user experiences without learning new languages.
Mark compares desktop and mobile UI/UX and share best practices for porting existing desktop apps to Android, iOS, and UWP. Whether you’re building apps for consumers, employees, or suppliers, you’ll learn how to overcome common obstacles and get the step-by-step training you need to deliver high quality apps.
Watch the webinar recording at aka.ms/xamu-desktop-devs-video
Developer’s Intro to Azure Machine LearningXamarin
Azure Machine Learning makes it easy for developers to incorporate intelligence and predictive analytics into their apps. Jason teaches core Machine Learning concepts and shows you how use Azure Machine Learning Studio to start building smarter apps immediately.
Watch the webinar recording at aka.ms/xamu-azure-ml-video
Explore Xamarin University at xamarin.com/university
Rob Gibbens shows you how to build better Xamarin.Forms UI using platform-specific APIs that aren’t directly exposed by the framework. He’ll demo how to integrate native controls and adjust visual properties that are unique to each platform while still sharing the majority of your code across platforms. You’ll leave ready with the step-by-step guidance you need to take full advantage of the latest OS-specific UI patterns and designs.
Watch the webinar recording at aka.ms/xamu-xamarin.forms-ui-video
Explore Xamarin University at xamarin.com/university
Session 4 - Xamarin Partner Program, Events and ResourcesXamarin
This is the presentation slides of video session delivered at the Xamarin Partner Summit 2017. Microsoft speaker Greg Urquhart, describes the Xamarin Partner Program and upcoming changes. Microsoft speaker Francine Anthony, highlights upcoming events and resources for Xamarin Partners.
Watch the session recording at channel9.msdn.com/Events/Xamarin-Partners/Xamarin-Partner-Summit-2017/Xamarin-Partner-Program-Events-and-Resources
Session 3 - Driving Mobile Growth and ProfitabilityXamarin
This is the presentation slides of video session delivered at Xamarin Partner Summit 2017 by Microsoft speakers, Neil Smith, Sebastien Le Calvez, Alex Popp and Matt Larson. It provides practical advice on ways that Xamarin Partners can leverage Microsoft technologies and programs to create further growth and profitability across their mobile practice.
Watch the session recording at channel9.msdn.com/Events/Xamarin-Partners/Xamarin-Partner-Summit-2017/Driving-Moble-Growth-and-Profitability
Session 2 - Emerging Technologies in your Mobile PracticeXamarin
This is the presentation slides of video session delivered at Xamarin Partner Summit 2017 by Microsoft speakers, Jaclyn Stiles, Neil Smith and Matt Larson. It focuses on emerging technologies - such as Cognitive Services, Machine Learning, IOT and more - as key components of a "mobile +" strategy and approach.
Watch the session recording at channel9.msdn.com/Events/Xamarin-Partners/Xamarin-Partner-Summit-2017/Emerging-Technologies-in-your-Mobile-Practice
Session 1 - Transformative Opportunities in Mobile and Cloud Xamarin
The opening keynote address delivered at Xamarin Partner Summit 2017. During the address, Microsoft speakers Greg Urquhart and Erik Polzin explore Xamarin and Microsoft since the acquisition in 2016, the theme of mobile-first, cloud-first and the "mobile +" shift driving greater opportunities for Xamarin Partners. Microsoft speaker and Xamarin technical expert, Colby Williams, also demos Visual Studio Mobile Center.
Watch the session recording at channel9.msdn.com/Events/Xamarin-Partners/Xamarin-Partner-Summit-2017/Transformative-Opportunities-in-Mobile-and-Cloud
SkiaSharp, powered by Google’s Skia graphics library, helps developers extend their Xamarin.Forms apps with compelling 2D graphics. Charles Petzold shows you how to include a SkiaSharp canvas in your Xamarin.Forms apps and make the most of the extensive and versatile SkiaSharp library.
Watch the webinar recording at aka.ms/xamu-skiasharp-video
Explore Xamarin University at xamarin.com/university
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureXamarin
René Ruppert shows you how to use your .NET skills to deliver multi-player games for the latest Apple devices, from iPhone to tvOS. He’ll demo SpriteKit basics, create a mobile version of the popular Connect Four board game, easily integrate with scalable cloud services, and teach best practices for sharing C# game logic, UI, and infrastructure code across platforms.
Watch the webinar recording at aka.ms/xamu-ios-apps-video
Explore Xamarin University at xamarin.com/university
Intro to Xamarin.Forms for Visual Studio 2017Xamarin
Jesse Dietrichson shows you how to take your .NET skills mobile with Xamarin.Forms for Visual Studio 2017. With Xamarin.Forms, you’re able to maximize code reuse and quickly build fully native apps for Android, iOS, and Windows. Jesse will show you how to use the latest Visual Studio features to design, develop, and test your apps faster than ever.
Watch the webinar recording at aka.ms/xamu-vs2017-xamarin.forms-video
Explore Xamarin University at xamarin.com/university
Whether you’re a new mobile developer or an experienced enterprise team lead, Microsoft’s Azure App Service and Xamarin give you everything you need to build engaging Android, iOS, and Windows apps.
Watch webinar recording at aka.ms/xamuazurevideo
Explore Xamarin University at xamarin.com/university
Introduction to Xamarin for Visual Studio 2017Xamarin
James Montemagno walks you through how Xamarin for Visual Studio 2017 makes it even easier to deliver fully native Android, iOS, and UWP apps from a single C# codebase. You'll learn what's new, including: the Xamarin Inspector and Profiler, new language features in C# 7, and how Visual Studio 2017 streamlines mobile development for .NET developers everywhere.
Watch webinar recording at https://aka.ms/introtoxamarinvs2017
Building Your First iOS App with Xamarin for Visual StudioXamarin
Anything you can do in Objective-C or Swift and XCode, you can do in C# with Xamarin for Visual Studio. Chris Van Wyk, Xamarin University mobile expert, shows how you can use your .NET skills to build fully native iOS apps — completely in C#.
Watch webinar recording at https://aka.ms/xamuiosappvideo
Explore Xamarin University at xamarin.com/university
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
4. It’s all about sharing code
Shared C# Code
Xamarin.Mobile
Business Logic
Cloud Access
Database Access
DesktopDesktop MobileMobileMobile
Windows iOS
Windows
Phone
Android
5. It’s all about sharing code
Shared C# Code
Xamarin.Mobile
Business Logic
Cloud Access
Database Access
DesktopDesktop MobileMobileMobile
Windows iOS
Windows
Phone
AndroidMac
6. TouchDraw runs on iPad,
Android, and Mac, achieving
over 70% code reuse across
the platforms.
39%
61%
TouchDraw
for iPad
24%
76%
TouchDraw
for Mac
28%
72%
TouchDraw
for Android
Shared Code
Platform Specific
7. Xamarin.Mac at a glance
• Write native Mac applications in C#
• Access Mac OS X APIs for rich integration
• Leverage the full power of C# and .NET
• Integrated with the Xamarin experience
• Deploy directly to the Mac AppStore
8. Xamarin.Mac at a glance
Xamarin.Mac
Frameworks
Xamarin Tools
and SDK
• Binder
• Bundler
• Linker
• Packager Mono Runtime
.NET Base Class Libraries System Libraries
Darwin OS
Cocoa Frameworks
Xcode
(UI designer)
Xamarin Studio IDE
9. Xamarin.Mac at a glance
Xamarin.Mac
Frameworks
Xamarin Tools
and SDK
• Binder
• Bundler
• Linker
• Packager Mono Runtime
.NET Base Class Libraries System Libraries
Darwin OS
Cocoa Frameworks
Xcode
(UI designer)
Xamarin Studio IDE
10. Xamarin.Mac Frameworks
GraphicsGraphics
CoreGraphics ImageKit
CoreImage ImageIO
CoreText OpenGL
CoreVideo PDFKit
User InterfaceUser Interface
AppKit QuickLook
CoreAnima?on SceneKit
QCComposer WebKit
Audio and VideoAudio and Video
AVFounda?on CoreMidi
AudioToolbox CoreMedia
AudioUnit OpenAL
System ServicesSystem Services
AddressBook CoreWLAN
Bluetooth Scrip?ngBridge
CoreLoca?on StoreKit
CoreServices
InfrastructureInfrastructure
CoreData Founda?on
CoreFounda?on ObjCRun?me
Darwin Security
11. Many are shared with Xamarin.iOS
GraphicsGraphics
CoreGraphics ImageKit
CoreImage ImageIO
CoreText OpenGL
CoreVideo PDFKit
User InterfaceUser Interface
AppKit QuickLook
CoreAnima?on SceneKit
QCComposer WebKit
Audio and VideoAudio and Video
AVFounda?on CoreMidi
AudioToolbox CoreMedia
AudioUnit OpenAL
System ServicesSystem Services
AddressBook CoreWLAN
Bluetooth Scrip?ngBridge
CoreLoca?on StoreKit
CoreServices
InfrastructureInfrastructure
CoreData Founda?on
CoreFounda?on ObjCRun?me
Darwin Security
12. The Basics
GraphicsGraphics
CoreGraphics ImageKit
CoreImage ImageIO
CoreText OpenGL
CoreVideo PDFKit
User InterfaceUser Interface
AppKit QuickLook
CoreAnima?on SceneKit
QCComposer WebKit
Audio and VideoAudio and Video
AVFounda?on CoreMidi
AudioToolbox CoreMedia
AudioUnit OpenAL
System ServicesSystem Services
AddressBook CoreWLAN
Bluetooth Scrip?ngBridge
CoreLoca?on StoreKit
CoreServices
InfrastructureInfrastructure
CoreData Founda5on
CoreFounda?on ObjCRun?me
Darwin Security
14. How does Xamarin.Mac work?
• OS X APIs are projected into C#
1:1 mapping for full platform coverage
15. How does Xamarin.Mac work?
• OS X APIs are projected into C#
1:1 mapping for full platform coverage
• 80% are Objective-C
Full object system is mapped
Subclassing and overriding supported
16. How does Xamarin.Mac work?
• OS X APIs are projected into C#
1:1 mapping for full platform coverage
• 80% are Objective-C
Full object system is mapped
Subclassing and overriding supported
• 20% are C
Exposed as C# structs/classes/methods
No support for subclassing or overriding
17. How does Xamarin.Mac work?
• OS X APIs are projected into C#
1:1 mapping for full platform coverage
Check out “Binding
Objective-C Libraries” for a
deep dive at 1:30!
• 80% are Objective-C
Full object system is mapped
Subclassing and overriding supported
• 20% are C
Exposed as C# structs/classes/methods
No support for subclassing or overriding
21. Anatomy of a Xamarin.Mac application
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
22. Anatomy of a Xamarin.Mac application
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
Resources Folder
Place any resources (images, icons,
static data) to be bundled with the app
23. Anatomy of a Xamarin.Mac application
Application Delegate
Called with application events such as
FinishedLaunching or OpenFiles
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
Resources Folder
Place any resources (images, icons,
static data) to be bundled with the app
24. Anatomy of a Xamarin.Mac application
Application Delegate
Called with application events such as
FinishedLaunching or OpenFiles
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
Application Main Menu
Interface definition pre-populated with
many common defaults
Resources Folder
Place any resources (images, icons,
static data) to be bundled with the app
25. Anatomy of a Xamarin.Mac application
Application Delegate
Called with application events such as
FinishedLaunching or OpenFiles
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
Application Main Menu
Interface definition pre-populated with
many common defaults
Main Window User Interface
The primary window definition
editable in the Xcode UI Builder
Resources Folder
Place any resources (images, icons,
static data) to be bundled with the app
26. Anatomy of a Xamarin.Mac application
Application Delegate
Called with application events such as
FinishedLaunching or OpenFiles
Info.plist
Application metadata, used by Mac OS
(app name, version, publisher, etc.)
Application Main Menu
Interface definition pre-populated with
many common defaults
Main Window User Interface
The primary window definition
editable in the Xcode UI Builder
Main Window Implementation
Class for implementing the features of
your Main Window
Resources Folder
Place any resources (images, icons,
static data) to be bundled with the app
28. 01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
Building out our NSWindow
public
override
void
WindowControllerDidLoadNib
(NSWindowController
windowController)
{
base.WindowControllerDidLoadNib
(windowController);
var
button
=
new
NSButton
(new
RectangleF
(10,
10,
200,
32))
{
Title
=
"Hello
Mac"
BezelStyle
=
NSBezelStyle.Rounded
};
button.Activated
+=
(sender,
e)
=>
new
NSAlert
{
MessageText
=
"You
clicked
me!"
}
.BeginSheet
(windowController.Window);
windowController.Window.ContentView.AddSubview
(button);
}
29. 01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
Building out our NSWindow
public
override
void
WindowControllerDidLoadNib
(NSWindowController
windowController)
{
base.WindowControllerDidLoadNib
(windowController);
var
button
=
new
NSButton
(new
RectangleF
(10,
10,
200,
32))
{
Title
=
"Hello
Mac"
BezelStyle
=
NSBezelStyle.Rounded
};
button.Activated
+=
(sender,
e)
=>
new
NSAlert
{
MessageText
=
"You
clicked
me!"
}
.BeginSheet
(windowController.Window);
windowController.Window.ContentView.AddSubview
(button);
}
Call the base class’ version
30. 01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
Building out our NSWindow
public
override
void
WindowControllerDidLoadNib
(NSWindowController
windowController)
{
base.WindowControllerDidLoadNib
(windowController);
var
button
=
new
NSButton
(new
RectangleF
(10,
10,
200,
32))
{
Title
=
"Hello
Mac"
BezelStyle
=
NSBezelStyle.Rounded
};
button.Activated
+=
(sender,
e)
=>
new
NSAlert
{
MessageText
=
"You
clicked
me!"
}
.BeginSheet
(windowController.Window);
windowController.Window.ContentView.AddSubview
(button);
}
Call the base class’ version
Allocate and
configure a button
31. 01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
Building out our NSWindow
public
override
void
WindowControllerDidLoadNib
(NSWindowController
windowController)
{
base.WindowControllerDidLoadNib
(windowController);
var
button
=
new
NSButton
(new
RectangleF
(10,
10,
200,
32))
{
Title
=
"Hello
Mac"
BezelStyle
=
NSBezelStyle.Rounded
};
button.Activated
+=
(sender,
e)
=>
new
NSAlert
{
MessageText
=
"You
clicked
me!"
}
.BeginSheet
(windowController.Window);
windowController.Window.ContentView.AddSubview
(button);
}
Call the base class’ version
Allocate and
configure a button
Connect a lambda
to run when
activated (clicked)
32. 01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
Building out our NSWindow
public
override
void
WindowControllerDidLoadNib
(NSWindowController
windowController)
{
base.WindowControllerDidLoadNib
(windowController);
var
button
=
new
NSButton
(new
RectangleF
(10,
10,
200,
32))
{
Title
=
"Hello
Mac"
BezelStyle
=
NSBezelStyle.Rounded
};
button.Activated
+=
(sender,
e)
=>
new
NSAlert
{
MessageText
=
"You
clicked
me!"
}
.BeginSheet
(windowController.Window);
windowController.Window.ContentView.AddSubview
(button);
}
Call the base class’ version
Allocate and
configure a button
Connect a lambda
to run when
activated (clicked)
Add the button to the
document window
38. Designing the UI: Xcode Interface Builder
Inspectors
Applies to the selected control:
• Properties
• Sizing
• Connections
39. Designing the UI: Xcode Interface Builder
Inspectors
Applies to the selected control:
• Properties
• Sizing
• Connections
Object Library
Drag controls to
your window
40. Connecting the UI
• UI built in Interface Builder connects to code in two ways
Actions
Outlets
41. Connecting the UI: Actions
• Methods defined in C#; invoked directly by controls
• Partial methods and always have the same signature
42. Connecting the UI: Actions
• Methods defined in C#; invoked directly by controls
• Partial methods and always have the same signature
-‐
(IBAction)IncreaseButtonActivated:(id)sender;
partial
void
IncreaseButtonActivated
(NSObject
sender);
Objective-C
C#
43. Connecting the UI: Outlets
• Surface controls from Interface Builder to C# properties
• The property type is that of the connected control
44. Connecting the UI: Outlets
• Surface controls from Interface Builder to C# properties
• The property type is that of the connected control
@property
(assign)
IBOutlet
NSButton
*IncreaseButton;
[Outlet]
NSButton
IncreaseButton
{
get;
set;
}
Objective-C
C#
51. Events and Callbacks
• In C#, events are a very common communication pattern:
var
window
=
new
NSWindow
();
window.DidBecomeKey
+=
HandleDidBecomeKey;
window.DidResignKey
+=
HandleDidResignKey;
NSWindow
HandleDidBecomeKey
HandleDidResignKey
52. Events and Callbacks
• With Apple’s pattern however, objects send interesting events,
or messages, to a delegate:
new
NSWindow
{
Delegate
=
new
MyWindowDelegate
()
};
NSWindow
MyWindowDelegate
class
MyWindowDelegate
:
NSWindowDelegate
{
override
void
DidBecomeKey
(...)
override
void
DidResignKey
(...)
}
54. Events and Callbacks
• Xamarin.Mac supports both models
You are free to choose on a per-instance basis
55. Events and Callbacks
• Xamarin.Mac supports both models
You are free to choose on a per-instance basis
• The Apple Delegate pattern maps to C# events
Internally we create the Delegate class and map it to
subscribed event handlers
56. Events and Callbacks
• Xamarin.Mac supports both models
You are free to choose on a per-instance basis
• The Apple Delegate pattern maps to C# events
Internally we create the Delegate class and map it to
subscribed event handlers
• One pattern replaces the other
58. AppKit
• Pervasive use of Model-View-Controller
All logic goes in the controller class
Unless writing a custom control (NSView)
Controller orchestrates the work of views
59. AppKit
• Pervasive use of Model-View-Controller
All logic goes in the controller class
Unless writing a custom control (NSView)
Controller orchestrates the work of views
• Goes well beyond the basics of UI
High-level NSDocument does the heavy li!ing
Full menus, saving, loading, window restoration, multi-
window support: all for free
64. Structure of the UI
• NSWindow
Top-level window
• NSWindow.ContentView
An NSView that contains controls for the application
• NSView is a class from which most controls derive
Can contain any number of children (NSView.Subviews)
65. Structure of the UI
• Some controls have many faces and roles
NSTextField implements both “label” and “entry” roles
Instead of being discrete controls, properties are modified
to fit the desired role
Xcode provides pre-set properties for controls
66. NSView: a powerful container
• Can contain (and perform layout of) subviews
• Handles events
• Paints itself
• Can be backed by a CALayer
CALayers are GPU accelerated
• Its properties can be animated
68. Ship Your App: by yourself
• The app is unrestricted and has full access to the system
• Shipped as a “bundle”
Typically a zipped up .app folder
Fully self-contained
Xamarin Studio generates this by default
74. Ship Your App: in the App Store
• Must apply for the Mac developer program through Apple
• Must sign app
• App is submitted for review
75. Ship Your App: in the App Store
• Must apply for the Mac developer program through Apple
• Must sign app
• App is submitted for review
• The app will be sandboxed
76. Ship Your App: in the App Store
• Must apply for the Mac developer program through Apple
• Must sign app
• App is submitted for review
• The app will be sandboxed
• Xamarin Studio signs, packages, and submits the app
• Shipping to the App Store is the best end-user experience
77. Mac OS X Sandbox
• Kernel-enforced sandbox
• Limits access to the system
Limitations on filesystem access
Use of special open/save panels
Limits access to some services and APIs
78. Mac OS X Sandbox
• Edit Sandbox entitlements in Info.plist in Xamarin Studio