The document provides an overview and agenda for a webinar on advanced MVVM development in Windows 8. It introduces the speaker and covers topics like thinking about the Modern UI, MVVM overview, building blocks like commanding and messaging, application architecture, navigation, data access, data binding to Windows 8 controls, working with contracts and tiles, lifecycle and state management, and unit testing. Attendees can win prizes by completing a post-webinar survey. The webinar aims to show how to build Windows 8 apps using MVVM patterns and architectures.
The Model View ViewModel (MVVM) is an architectural pattern originated by Microsoft as a specialization of the Presentation Model (Martin Fowler). Similar to MVC, MVVM is suitable for client applications (Xaml-based, Xamarin, SPA, ...) because it facilitates a clear separation between the UI and the Business Logic. Examples with WPF, MvvmCross, AngularJs. It also contains solutions for common use cases.
A Smooth Transition to HTML5 Using MVVMChris Bannon
How difficult is it to port Silverlight applications to HTML5? That is the question we hear every day at ComponentOne. Instead of speculating about it, we decided to sit down and try it. Today we will discuss the process and tools we used when doing so. The approach we took was to use the MVVM pattern (from Silverlight) when developing the HTML5/JavaScript version. By choosing this method we were able to port our data access and UI layers quite easily. We take advantage of tools like KnockoutJS and Wijmo to make the process even easier. Our developers were able to minimize the cost of learning new paradigms in this migration by reusing most of their knowledge. What we ended up with was nearly identical applications in Silverlight and HTML5. Come learn how you can smoothly transition to HTML5!
How difficult is it to port Flex and Silverlight applications to HTML5? That is the question we hear every day at ComponentOne. Instead of speculating about it, we decided to sit down and try it. Today we will discuss the process and tools we used when doing so. The approach we took was to use the MVVM pattern (from Silverlight) when developing the HTML5/JavaScript version. By choosing this method we were able to port our data access and UI layers quite easily. Our developers were able to minimize the cost of learning new paradigms in this migration by reusing most of their knowledge. What we ended up with was nearly identical applications in Silverlight and HTML5. Come learn how you can smoothly transition to HTML5!
Models used in iOS programming, with a focus on MVVMAndrei Popa
I have hopefully tried here to gather some useful stuff about MVVM which is the "proper" way to build a highly decoupled app in iOS today, a model that makes use of ReactiveCocoa as binding solution.
The Model View ViewModel (MVVM) is an architectural pattern originated by Microsoft as a specialization of the Presentation Model (Martin Fowler). Similar to MVC, MVVM is suitable for client applications (Xaml-based, Xamarin, SPA, ...) because it facilitates a clear separation between the UI and the Business Logic. Examples with WPF, MvvmCross, AngularJs. It also contains solutions for common use cases.
A Smooth Transition to HTML5 Using MVVMChris Bannon
How difficult is it to port Silverlight applications to HTML5? That is the question we hear every day at ComponentOne. Instead of speculating about it, we decided to sit down and try it. Today we will discuss the process and tools we used when doing so. The approach we took was to use the MVVM pattern (from Silverlight) when developing the HTML5/JavaScript version. By choosing this method we were able to port our data access and UI layers quite easily. We take advantage of tools like KnockoutJS and Wijmo to make the process even easier. Our developers were able to minimize the cost of learning new paradigms in this migration by reusing most of their knowledge. What we ended up with was nearly identical applications in Silverlight and HTML5. Come learn how you can smoothly transition to HTML5!
How difficult is it to port Flex and Silverlight applications to HTML5? That is the question we hear every day at ComponentOne. Instead of speculating about it, we decided to sit down and try it. Today we will discuss the process and tools we used when doing so. The approach we took was to use the MVVM pattern (from Silverlight) when developing the HTML5/JavaScript version. By choosing this method we were able to port our data access and UI layers quite easily. Our developers were able to minimize the cost of learning new paradigms in this migration by reusing most of their knowledge. What we ended up with was nearly identical applications in Silverlight and HTML5. Come learn how you can smoothly transition to HTML5!
Models used in iOS programming, with a focus on MVVMAndrei Popa
I have hopefully tried here to gather some useful stuff about MVVM which is the "proper" way to build a highly decoupled app in iOS today, a model that makes use of ReactiveCocoa as binding solution.
Understanding The MVVM Pattern (TechDays Belgium)Laurent Bugnion
The Model-View-ViewModel pattern (also called MVVM) is a hot topic in today’s Silverlight and WPF world. This pattern facilitates modern development techniques such as separation of concerns (decoupling), unit testing and test driven development, work with modern tools such as Visual Studio 2010, Expression Blend and more.
In this session, Laurent (a user and promoter of MVVM since 2006) will introduce this pattern to you with many demos. We will talk about the basic components of a modern Silverlight or WPF application, and of additional helpers that will make your life as a developer much easier.
Model View ViewModel (MVVM) is an architectural pattern that originated from Microsoft and provides a pattern for code-sharing across Windows Store and Windows Phone apps; however, you can take MVVM anywhere - including iOS and Android!
MVVM frameworks act as the glue that ties together the apps user interface and business logic and adds amazing features such as data binding and commands. There are several MVVM frameworks that allow you to share more code on iOS, Android, and Windows including Bind, MVVM Light, MvvmCross, and Xamarin.Forms ships with its own lightweight MVVM framework. Come learn what exactly the MVVM pattern is, and when to use it. We will go through the pros and cons of several architectural patterns, such as MVC and MVP, and compare them to MVVM. We will investigate several different MVVM frameworks from lightweight to heavier approaches. Walk away with the ability to leverage the MVVM framework for optimal code reuse in creating beautiful native mobile applications on every platform
The introduction covers the following
1. What are Microservices and why should be use this paradigm?
2. 12 factor apps and how Microservices make it easier to create them
3. Characteristics of Microservices
Note: Please download the slides to view animations.
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
HTML5 is the playing area, the strip, Javascript presentation frameworks are the fences and they are fierce and proud. In this presentation we will attend an interesting match between two of the emerging contenders in the MV* family: KnockoutJS and BackboneJS. We'll try to understand how they solve the same issues in modern web software development to better decide which one is suitable in our scenario.
C# everywhere - Building Cross-Platform Apps with Xamarin and MvvmCrossFlavius-Radu Demian
This presentation consists in a deep dive into Xamarin and also an introduction into MvvmCross which is a MVVM framework. Xamarin has an unique approach when it comes to mobile development approaches.
The Model-View-ViewModel pattern was introduced for Windows Presentation Foundation applications (WPF) and later exploded in popularity with the introduction of various frameworks to support development on additional platforms including Silverlight and Windows Phone. The release of KnockoutJS the pattern has extended MVVM to the web and exposed it to the JavaScript stack, while the new Windows 8 Metro platform embraces the same XAML and C#-based technologies that WPF and Silverlight pioneered. In this talk, Jeremy Likness takes a deep dive into the history of the pattern, describes its benefits, and discusses how it relates to modern application development. Is it a bad fit for web applications? Does it belong in the Metro space? Learn the benefits and trade-offs to help decide if this pattern makes sense in your projects moving forward.
Continuous integration and delivery with Xamarin and VSTSGill Cleeren
Writing the code for your next Xamarin project isn’t all that difficult. But the coding is only part of the job.
Using Visual Studio Team Services, it’s now easier than ever to set up continuous integration for your Xamarin app development to build and test your apps, including unit tests and UI tests. You can even integrate with the Xamarin Test Cloud to execute UI test for your apps on numerous devices, running in the cloud. You’ll learn how HockeyApp can help us with the distribution of the test versions of the app to our real testers and how you can monitor crashes while testing. Finally, we’ll learn about release management to create the packages ready for the different stores.
With Xamarin now free for everyone, the popularity of the cross-platform framework is increasing rapidly. We’ve now had the time to play around with it, now the time has come to build serious apps with it.
In this session, you’ll learn how a real-world Xamarin application architecture is built, with an emphasis on testability and maintainability. The app we’ll look at is called MyTrains, an application used to book train journeys.
You’ll see an architecture that has proven itself over different projects already. The architecture is using the MvvmCross framework. You’ll see how the architecture is built from the ground up, starting with model, the repositories and the services. On top of that, we’ll build the view models which will be used by the views in the iOS and Android apps. Along the way, you’ll see how MvvmCross uses data binding and commanding and how navigation is handled in MVVM
You’ll walk away with an example of how real applications in Xamarin should be built. You’ll be able to use this as your starting point for your next Xamarin application.
Understanding The MVVM Pattern (TechDays Belgium)Laurent Bugnion
The Model-View-ViewModel pattern (also called MVVM) is a hot topic in today’s Silverlight and WPF world. This pattern facilitates modern development techniques such as separation of concerns (decoupling), unit testing and test driven development, work with modern tools such as Visual Studio 2010, Expression Blend and more.
In this session, Laurent (a user and promoter of MVVM since 2006) will introduce this pattern to you with many demos. We will talk about the basic components of a modern Silverlight or WPF application, and of additional helpers that will make your life as a developer much easier.
Model View ViewModel (MVVM) is an architectural pattern that originated from Microsoft and provides a pattern for code-sharing across Windows Store and Windows Phone apps; however, you can take MVVM anywhere - including iOS and Android!
MVVM frameworks act as the glue that ties together the apps user interface and business logic and adds amazing features such as data binding and commands. There are several MVVM frameworks that allow you to share more code on iOS, Android, and Windows including Bind, MVVM Light, MvvmCross, and Xamarin.Forms ships with its own lightweight MVVM framework. Come learn what exactly the MVVM pattern is, and when to use it. We will go through the pros and cons of several architectural patterns, such as MVC and MVP, and compare them to MVVM. We will investigate several different MVVM frameworks from lightweight to heavier approaches. Walk away with the ability to leverage the MVVM framework for optimal code reuse in creating beautiful native mobile applications on every platform
The introduction covers the following
1. What are Microservices and why should be use this paradigm?
2. 12 factor apps and how Microservices make it easier to create them
3. Characteristics of Microservices
Note: Please download the slides to view animations.
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
HTML5 is the playing area, the strip, Javascript presentation frameworks are the fences and they are fierce and proud. In this presentation we will attend an interesting match between two of the emerging contenders in the MV* family: KnockoutJS and BackboneJS. We'll try to understand how they solve the same issues in modern web software development to better decide which one is suitable in our scenario.
C# everywhere - Building Cross-Platform Apps with Xamarin and MvvmCrossFlavius-Radu Demian
This presentation consists in a deep dive into Xamarin and also an introduction into MvvmCross which is a MVVM framework. Xamarin has an unique approach when it comes to mobile development approaches.
The Model-View-ViewModel pattern was introduced for Windows Presentation Foundation applications (WPF) and later exploded in popularity with the introduction of various frameworks to support development on additional platforms including Silverlight and Windows Phone. The release of KnockoutJS the pattern has extended MVVM to the web and exposed it to the JavaScript stack, while the new Windows 8 Metro platform embraces the same XAML and C#-based technologies that WPF and Silverlight pioneered. In this talk, Jeremy Likness takes a deep dive into the history of the pattern, describes its benefits, and discusses how it relates to modern application development. Is it a bad fit for web applications? Does it belong in the Metro space? Learn the benefits and trade-offs to help decide if this pattern makes sense in your projects moving forward.
Continuous integration and delivery with Xamarin and VSTSGill Cleeren
Writing the code for your next Xamarin project isn’t all that difficult. But the coding is only part of the job.
Using Visual Studio Team Services, it’s now easier than ever to set up continuous integration for your Xamarin app development to build and test your apps, including unit tests and UI tests. You can even integrate with the Xamarin Test Cloud to execute UI test for your apps on numerous devices, running in the cloud. You’ll learn how HockeyApp can help us with the distribution of the test versions of the app to our real testers and how you can monitor crashes while testing. Finally, we’ll learn about release management to create the packages ready for the different stores.
With Xamarin now free for everyone, the popularity of the cross-platform framework is increasing rapidly. We’ve now had the time to play around with it, now the time has come to build serious apps with it.
In this session, you’ll learn how a real-world Xamarin application architecture is built, with an emphasis on testability and maintainability. The app we’ll look at is called MyTrains, an application used to book train journeys.
You’ll see an architecture that has proven itself over different projects already. The architecture is using the MvvmCross framework. You’ll see how the architecture is built from the ground up, starting with model, the repositories and the services. On top of that, we’ll build the view models which will be used by the views in the iOS and Android apps. Along the way, you’ll see how MvvmCross uses data binding and commanding and how navigation is handled in MVVM
You’ll walk away with an example of how real applications in Xamarin should be built. You’ll be able to use this as your starting point for your next Xamarin application.
Windows 10 is finally here. Now is the time to learn about the awesome new features that the platform offers. Do you want to know what Windows 10 enables for developers? Or do you want to see how you can enhance your existing Windows 8.1 app? In this session, we will give you a full overview of the most important new features of Windows 10.
Building your first iOS app using XamarinGill Cleeren
Your task before coming to this session: know C# and .NET. Your mission during this session: learn how you can leverage your C# knowledge to build iOS apps. If you decide to accept this mission: be prepared to see how in just 60 minutes, a complete iOS app will appear in front of you. All using C#. This session will destroy itself after 60 minutes.
Building your first android app using XamarinGill Cleeren
Do you have a great knowledge about C#? Maybe you’ve already built a great mobile app on Windows Phone or Windows 8? Would you like to be able to use your knowledge to build an Android app without having to resort to other languages or IDEs? Well, now you can! With Xamarin. In this session, Gill Cleeren will take you through the creation of your first Android application. We’ll see how we can use our trusted Visual Studio for this task, how we can create apps with mulitple screens and how we can call services. We’ll also look at how we can deploy the application and how we can debug our code.
Are you struggling to create a consistent user interface for your web app? Don't want to bring in too many expensive designers? Take a look at Bootstrap!
Building a community - BuildStuff Lithuania 2014Gill Cleeren
You want to be a user group lead? Thinking of starting your own user group? Awesome! But there are a number of things to think about before starting. Is your whole idea viable? Where do I get speakers and attendees? Should I create a legal entity? How do I finance the whole thing?
In this session, Gill Cleeren will tell you how he has had a successful user group in Belgium for almost 10 years now.
C# everywhere: Xamarin and cross platform developmentGill Cleeren
C# is hotter than ever. Using Xamarin, we can use C# to not only build our apps on Windows Phone but also on iOS and Android. The magic that sits between are PCLs (Portable Class Libraries) that we can re-use on all these platforms. The goal is of course achieving the highest level of code sharing and re-using.
In this talk, we'll see how we can share code between Windows Phone, iOS and Android to build a cross-platform app using Xamarin. You'll also see how much of the marketing fluff is real: do we really get a lower time-to-market when sharing code and is this approach really cheaper than building 3 apps separately? Come to this talk and learn all about it
jQuery is the new favorite of web developers. This lightweight JavaScript library makes developers love writing JavaScript code again! What needed 20 lines of code first is now reduced to 3 lines. Who wouldn’t be enthusiastic?! Microsoft showed its love for the library by fully integrating it in Visual Studio. I dare to ask: Should you stay behind? In this session, we’ll take a look at jQuery and we’ll teach you what you need to know to get on your way. More specifically, we’ll look at selectors, attributes, working with WCF, jQuery UI and much more. You may walk out of this session wearing a sticker: “I love jQuery”!
HTML5 contains many new interesting features that make the platform a capaple development platform. Sockets, SVG, geolocation, local storage and many more are included in the platform. In this one hour session, we will look at cool implementations of 10 features of HTML5
We’re not going to get into a real fight in this talk, don’t worry. Instead we are going to compare the 2 popular languages in their current state and see what the benefits and disadvantages are. Maybe we’ll throw some Angular in the battle as well and see what influence that has on the outcome of the match. After this talk, you’ll be better armed in your next meeting on which technology you should use for your next project!
Why you shouldn't dismiss windows 8 for your lob appsGill Cleeren
In this webinar, we are going to take a look at the different mobile platforms to build business apps and we are going to focus on one in particular, and that is Windows 8. Windows 8 launched almost a year ago and in the near future, it’ll start playing an important role in business app development.
The video recording is available at http://gicl.me/13iHpk7
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.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
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.
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…
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...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.
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:
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Advanced MVVM in Windows 8
1. Advanced MVVM
Development in Windows 8
SILVERLIGHTSHOW.NET WEBINARS SERIES
GILL CLEEREN
www.snowball.be – gill@snowball.be - @gillcleeren
2. About me…
• Gill Cleeren
– .NET Architect @Ordina
– Pluralsight trainer
– Microsoft Regional Director
– Silverlight MVP / Telerik MVP
– Speaker
– Visug user group lead
– Author
– Blog: www.snowball.be
– Email: gill@snowball.be
– Twitter: @gillcleeren
3. Agenda
• Thinking about Modern UI
• MVVM Overview
• Building Blocks
– Commanding
– ViewModel Locator
– Messaging
• Application architecture
• Navigation and window management
• Data access and repositories
• Data binding to Windows 8 controls
• Working with contracts
– Share
• Working with tiles updates
– Local
– Push notifications
• Lifecycle and state management
• Unit testing the VMs and services
4. You can win!
Complete the post-webinar survey and win!
3 free ebooks of choice
from SilverlightShow Ebook Shelf!
My ebooks ’Connecting Windows 8
Apps with Services’ and ‘Windows 8
and the Future of XAML’ are also there.
5. Some practical stuff
• Ask questions through Q&A window
– We’ll answer them after the session or by personal
mail
• A link to the video recording will be sent to you
7. Modern UI is different
• Content before chrome
• Full screen apps
– Snap view and filled view
• Orientation and rotation
• Windows are now “pages”
• New ways of interacting with an app
– App bar
– Charms/Contracts
• Lifecycle and tiles
• …
8. MVVM and Modern UI
• Currently most Modern UI apps are built in XAML
• MVVM is supported in WPF, Silverlight, Windows Phone…
• Core concepts of XAML are universal
– Data binding, commands, DataContext…
• Each technology has some specifics
– Navigation, controls, lifecycle management, background tasks…
• BUT knowledge can be easily leveraged
– Even to non-XAML based technologies (HTML5 with Knockout
JS)
9. It’s a great idea…
to build Windows 8 apps
using MVVM!
We’ll show you how!
11. Hello MVVM
• MVVM is an
architectural
pattern
– Based on MVC
pattern
– In turn based on
PresentationMode
l by Fowler
– Introduced by
John Gossman
(WPF dude) I <3
XAML
13. Hello MVVM
• Became popular
with Silverlight
– Also applicable
in
• WPF
• Windows Phone
7 and 8
• Windows
8/WinRT
14. Woot, I can finally
build my code Here’s the design.
without the designer Now let me go and
messing things up! play with my iPhone.
15. What we all did when we were
young…
• Watch Eddy Murphy arrive in America…
• Tom Selleck’s moustache was closely
monitored
• Record ourselves…
• Shoot ducks (and try shooting the damn dog)
16. What we all did when we were
young…
• And write code in code-behind… Lots of it.
View
XAML
Code-Behind
Data Model
Event Handlers
17. Meanwhile, in 2013, things have
changed.
• Not necessarily any better though…
18. Writing testable code however, is
becoming the norm. Finally. Courtesy
of MVVM.
View
XAML
Code-Behind
Data-binding Change
and notification
commands
View Model
State + Data Model
Operations
20. The View
• Represents the user interface that the user will
see
• Can be a page, user control or Data Template
• Keep it simple
– Clean code-behind
– Only visual logic (all the rest should go in the
ViewModel)
• Should never contain anything that is to be tested
– Model-related
21. The ViewModel
• An abstraction of View, definition of what can be shown on screen
• Glue between View and Model
– Implements INotifyPropertyChanged
• Contains
– State properties: data
– Operations: commands
– Validation support
• Should not contain “view properties” such as Color
– Use converters for this
• Often wraps or “re-models” the model for the View to use
• Must be testable
• No control references!
• Often, 1 ViewModel per View
– Can be 1-to-many or many-to-1
• Manages the flow of the application
• Interacts with the model
22. The Model
• Data model, service reference/proxy
classes, DTO…
– Very often, an extra layer is added on top of the
generated proxy classes
• Validation logic
• Data access
• No reference to ViewModel
23. Linking the View and the ViewModel
• Data binding is the glue but…
• A view needs to “find” its ViewModel
– ViewModel is the DataContext
• Can be static or dynamic
– Static: View creates ViewModel and sets it as DataContext
– Dynamic: at runtime, View selects its ViewModel or vice-
versa
• 2 options:
– View-First: ViewModel gets created because View is
created
– ViewModel-First: ViewModel is created and View gets
selected
24. Locator pattern
• Implemented through a class that contains all
VMs as properties
• An instance is then made available as Resource
• All Views can bind, no code needed in View
– Clean way
– Not good since all VMs need to be known upfront
• Property for each available VM
• Not easy if more than one instance exists of a
View
– In this case, some form of IOC is recommended
25. Commands
• MVVM-based code have no event handlers in
code-behind
• How to handle events happening in the UI?
Commands
Based on Command pattern
In object-oriented programming, the command pattern is a behavioral
design pattern in which an object is used to represent and
encapsulate all the information needed to call a method at a later time.
his information includes the method name, the object that
owns the method and values for the method parameters.
26. Commands
• WinRT has the ICommand interface
– Execute()
– CanExecute()
– CanExecuteChanged event
public interface ICommand
{
event EventHandler CanExecuteChanged;
bool CanExecute(object parameter);
void Execute(object parameter);
}
27. Commands
• Way to create commands:
– Write ICommand implementation
– Create instance on VM
– Bind Command property of control to this
instance
• Works only on some controls
• Rest needs to use behaviors
28. Behaviors
• Block of code that we can attach to XAML element
• Promotes reuse
• Useful in MVVM scenarios on controls that don’t
support commanding
– Avoids having code in code-behind
• Supported by Blend
• Not supported by Windows 8
– Neither are triggers
– EventToCommand is therefore not available by default
– The community has the answer!
29. Using EventToCommand as a behavior
• Take a look at WinRtBehaviors on CodePlex/NuGet
(Joost van Schaik)
<TextBlock Text="TextBlock" FontSize="48">
<WinRtBehaviors:Interaction.Behaviors>
<Behaviors:EventToBoundCommandBehavior Event="Tapped"
Command="{Binding TestCommand}"
CommandParameter="{Binding TestProperty, Mode=TwoWay}"/>
</WinRtBehaviors:Interaction.Behaviors>
</TextBlock>
• Works through Attached behaviors
– Attached dependency property
30. Communication between VMs
View Model View Model
View Model View Model
View Model View Model
View Model View Model
31. Messaging
View
View XAML
XAML
Code-
Code- Behind
Behind
View Model
View Model Data Model
State + Operations
Data Model
State + Operations
Message
Publish
messages View
XAML
Code-
Subscribe to Behind
messages
View Model
Event Aggregator
Message State + Operations
33. From the ground up!
• Core principles for a testable and maintainable
architecture
– Separation of concerns
• “A new class doesn’t cost a thing”
– Repositories
– Loose coupling
– Dependency injection
– Unit testing and mocking
36. The container
• Loose coupling is achieved through dependency injection
• Dependencies are instantiated and maintained through container
• MVVM Light comes with SimpleIOC
– Not very extended when it comes to managing lifetime of objects
• NuGet offers alternatives
– MetroIOC
– TinyIOC
– AutoFac
• Can be used to manage
– ViewModels
– Views
– Services
– …
37. Abstraction for the container
• Avoid making direct calls to your container
from code
• Instead, introduce an abstraction layer for
your container
• Code not dependent on container
• If container changes, only one class needs
changing
40. Navigation
• Windows 8 apps use “new” screens to convey
information
– Not many controls and content on screen
– Navigation == content
– Result is that we often have to navigate using
more clicks/taps
• Navigation is based on concept of pages
– Forward and backward navigation support
41. Pages and Frames
• Windows 8 apps know pages: this is the “window”, top-
level control
– Used as Views in MVVM scenario
– No visible chrome
• Frame will host pages
– One page at a time
– Performs navigation from page to page
• Frame.Navigate()
• Frame.GoBack()
– Single Frame is created at application level
• First view gets loaded after splash screen
• Extended splash screen is MVVM view as well
42. Navigation and SOC
• Navigation is not the task of the ViewModel
• Navigation is not the task of the View
… and most certainly not the task of the Model
Then, whose task is it?
• Separate service that has link to Frame
• Called from ViewModels
– Static
– Dynamic
• NavigationService is injected in ViewModels through IOC
– Easily mockable
– No hard dependency on specific implementation in ViewModels
– Often, single instance is created application-wide and passed through
injection/container
43. Window management
• Windows 8 apps don’t use MDI interfaces,
have separate windows though
– Exception dialog
– Confirmation window
– Message dialog
• Managed through separate service
– Called from ViewModels
• Again good news for testing and SOC
46. Repositories
• Abstraction between data persistence and data
consumption code
– Allows changing implementation of persistence code
without changing consumer
– Easier to test
– Creates central location for all data access
• Advantage in the case where data will be cached locally
• A repository often manages access to single
resource collection
– More than one entity type on single repository though
• Parent-child relation
47. Data services
• Since repositories often work with a single
entity, they are not a good hook for the
ViewModels
– Would make the ViewModel responsible for
combining response of several repository reponses
• Create separate service for data acess
– Per “unit of functionality”
– Shared between ViewModels
• Often created application-wide through IOC
container
– Injected into ViewModels through DI
50. Windows 8 and lists of data
• Data lists are everywhere
– RSS feeds
– Flickr images
– News updates
– Local file system enumerations
– …
• Microsoft has focused on creating controls that work with these
lists
– GridView
– ListView
– FlipView
– Semantic Zoom
• Support data binding
– Some require a little bit of help though!
52. Semantic zoom done right
• Touch-based technique for presenting and
navigating large sets of data in a single view
• Based on 2 modes
– Low level: zoomed-in mode
• Shows all data in a flat structure
– High level: zoomed-out mode
• Shows items in groups
• Typical uses:
– Addressbook
– Photo album
– Product catalog
53. Using the semantic zoom control
• Contents can be anything that implements
ISemanticZoom
– ListView
– GridView
– Most of the time, you’ll use 2 GridViews
<SemanticZoom>
<SemanticZoom.ZoomedOutView>
<!-- Put the GridView for the zoomed out view here. -->
</SemanticZoom.ZoomedOutView>
<SemanticZoom.ZoomedInView>
<!-- Put the GridView for the zoomed in view here. -->
</SemanticZoom.ZoomedInView>
</SemanticZoom>
57. Sharing in Windows 8
• Sharing used to go via clipboard or locally saving content
– Sharing is in fact from one app to another
• Often time-consuming, sometimes confusing
• Windows 8 has the Share charm
– Share contract works when tapping the Share charm
• Offers “lightweight, in context” sharing capabilities
• Sharing happens between 2 apps
– Source app: app that wants to share data
– Target app: app that can accept data as destination
– An app can be both a source and a target
• Can share with itself
58. Sharing in Windows 8
• Share pane (Win + H)
– List of apps that can accept the data
• Depends on the data being shared
– Quicklinks
• Selected app normally opens a specific share view
– Optimized to just handle the share operation
– Closes after finishing the “sharing task”
• Sharing apps don’t have to know each other
– Works through broker
– Pub/sub model
59. Sharing between 2 apps
Register with
DataTransferManager
DataRequested event
Source app
Create data DataRequested
to share
All done!
Activated
for share
target
Target app
60. Sharing using MVVM
• Share source
– Separate service will register with the
DataTransferManager
– Will also get in data to share when requested
– ViewModel control this service but don’t directly
interact with the DataTransferManager
• Share target
– Separate View for the Share operation
– Separate ViewModel for the Share view
– Service can be used to complete the share operation
63. Tiles
• Tiles can be updated in several ways
– Local (from the app code)
• Can only be used when the app is running
• Useful for tile updates (not that useful for toasts)
– Scheduled
• Update at specific time
• Useful for tiles and toasts
– Periodic
• Update at specific interval
• Poll a cloud service for content
– Push notifications
• Updates are sent from the cloud
• Ideal for updating the tile without the app being executed
64. Local updates using MVVM
• Again not the role of the ViewModel to
update a tile/badge/toast
• Separate service is required
– Can work with data access service to get
information
– Can work with navigation service to navigate to
correct page and pass contextual information
– Can be mocked out to be able to test in isolation
67. Process lifecycle in Windows 8
Launching Suspending
Running
Not running/
Not running Suspended
Terminated
Resuming
Termination
App Close
App crash
68. Process lifecycle management
• Managing state information is required
– Suspended apps may not return and get terminated
– Users expect to see the app in the same state they left it
– Syncing state between multiple devices may be expected
– The app could be updated to a newer version
– While suspended, the app may be activated, triggering a different
page
– ...
• Can be done using
– Application Data API
• LocalSettings/LocalFolder
• RoamingSettings/RoamingFolder
– Via specific service then to repository
• It’s not the task of the ViewModel to manage this
– A service has this responsibility
69. What should be saved?
• App data
– Persistent across application reboots
– Should be saved incrementally
• Session data
– More temporary of nature
– Saved mostly for suspending/termination
– Includes often location within a multi-page app
72. Unit testing in MVVM
• Using MVVM goes hand-in-hand with unit testing
– SOC: Because we use services for all external tasks,
the VMs can be tested in isolation
– DI: possible to pass mock services so that our test is
not depending on external influences
• Difficult to test code that interacts directly with
UI
• Mocking is recommended
– Unit test not depending on external components
– Supply a stub/fake
– DI/abstraction layer is required