Come listen to leading Rich Internet Applications (RIA) experts from Microsoft and Adobe discuss many of the best and worst practices when building RIAs. RIAs provide a similar user experience to traditional desktop applications combined with the ease of deployment of web/browser based applications. This produces a fair amount of confusion because there are a number of potentially conflicting practices depending on whether you approach your RIA as a desktop or a web application. This session dives into the definition of RIA and walks through the best and worst practices that have appeared over and over again. We will explore architectural patterns and practices such as state management, fault tolerance, service composition, communications protocols and message formats and goes into details on how RIAs can be developed using runtime environments such as Adobe AIR or Microsoft Silverlight.
For more read our blogs at
http://www.jamesward.com
http://www.joshholmes.com
How to utilize the power of wordpress cms by john perelessjohnpereless
John Pereless explains why Wordpress is a top choice among small business owners as well as professional bloggers. The power of Wordpress resides in it’s backend and built in themes, plugins and extensions for the widgets as well as integration with world wide web 2.0 resources.
Progressive Web Apps - Overview & Getting StartedGaurav Behere
A brief intro to progressive web apps & conventional ways of performance optimization on web.
The presentation was given as part of a tech talk, thus the readers are suggested to read through the reference links as well.
Frontend 'vs' Backend Getting the Right MixBob Paulin
Modern website architectures are typically composed of 2 parts: frontend and backend. Building out frontend and backend components requires diverse skill sets and often have competing interests when it comes to developer productivity and site performance. This talk will discuss some ways Java frameworks deal with these issues as well as benefits and tradeoffs. The talk will include combine demos with cutting edge frontend frameworks (Handlebarsjs, CoffeeScript, Less) and popular Java backends (Spring, Apache CXF).
Bio:
Bob Paulin is an independent consultant that has been developing on Java for the past 10 years. Bob is focuses on Business Enablement and Web Centric Applications. He’s presented in the past at CJUG on Apache Sling and is currently helping his clients perform modular development/design, automation for continuous delivery, and build forward leaning web applications. When not coding, Bob enjoys coaching football and spending time with his with his wife and 3 kids.
What is AMP? Why should I learn what it offers? And how can I take advantage of it in WordPress? This deck was used to guide a discussion about these topics at the awesome PDX WP Meetup on August 5th, 2019.
Many developers opt for ASP.NET MVC for their new web applications. But this might not be always possible and you may need to use Web Forms for your new projects. That needs to be followed certain guidelines while developing a Web Forms project then at later stage migrating to MVC would be less painful comparatively.
What to know more about dot net? visit : http://crbtech.in/Dot-Net-Training/
J2EE Getting started What is involved to be a J2EE Developer,
This presentation gives an overview of Technologies and Arch in General.
And shows where Spring,Struts,Hibernate,Webservices,MVC fit
En client-serveur traditionnel, chaque action de l'utilisateur induit un recalcul de toute la page côté serveur, puis le transport du HTML vers le navigateur. PHP et ses frameworks MVC sont conçus pour gérer cette architecture. Mais quand AJAX et HTML5 viennent bouleverser la répartition de ce qui se fait côté client et côté serveur, il est temps de repenser nos outils. Quelle part de nos frameworks reste pertinente dans une architecture API-centric? PHP est-il condamné à ne servir que des APIs REST? Et quelles architectures côté client peuvent prendre le relais sans faire exploser la complexité de développement ? Paradoxalement, c'est du monde du jeu vidéo que viendra peut-être la clé des applications de demain. Une conférence sans code, mais avec des dessins. Et des idées pour demain.
Are you almost certain there is someone you were supposed to call today, but have no clue who that someone is? Consider how wonderful it would be to better organize your tasks, sales calls, and appointments, with Microsoft Outlook!
Join us to hear some great Outlook tips that will have you feeling de-cluttered and empowered to take your business to the next level.
How to utilize the power of wordpress cms by john perelessjohnpereless
John Pereless explains why Wordpress is a top choice among small business owners as well as professional bloggers. The power of Wordpress resides in it’s backend and built in themes, plugins and extensions for the widgets as well as integration with world wide web 2.0 resources.
Progressive Web Apps - Overview & Getting StartedGaurav Behere
A brief intro to progressive web apps & conventional ways of performance optimization on web.
The presentation was given as part of a tech talk, thus the readers are suggested to read through the reference links as well.
Frontend 'vs' Backend Getting the Right MixBob Paulin
Modern website architectures are typically composed of 2 parts: frontend and backend. Building out frontend and backend components requires diverse skill sets and often have competing interests when it comes to developer productivity and site performance. This talk will discuss some ways Java frameworks deal with these issues as well as benefits and tradeoffs. The talk will include combine demos with cutting edge frontend frameworks (Handlebarsjs, CoffeeScript, Less) and popular Java backends (Spring, Apache CXF).
Bio:
Bob Paulin is an independent consultant that has been developing on Java for the past 10 years. Bob is focuses on Business Enablement and Web Centric Applications. He’s presented in the past at CJUG on Apache Sling and is currently helping his clients perform modular development/design, automation for continuous delivery, and build forward leaning web applications. When not coding, Bob enjoys coaching football and spending time with his with his wife and 3 kids.
What is AMP? Why should I learn what it offers? And how can I take advantage of it in WordPress? This deck was used to guide a discussion about these topics at the awesome PDX WP Meetup on August 5th, 2019.
Many developers opt for ASP.NET MVC for their new web applications. But this might not be always possible and you may need to use Web Forms for your new projects. That needs to be followed certain guidelines while developing a Web Forms project then at later stage migrating to MVC would be less painful comparatively.
What to know more about dot net? visit : http://crbtech.in/Dot-Net-Training/
J2EE Getting started What is involved to be a J2EE Developer,
This presentation gives an overview of Technologies and Arch in General.
And shows where Spring,Struts,Hibernate,Webservices,MVC fit
En client-serveur traditionnel, chaque action de l'utilisateur induit un recalcul de toute la page côté serveur, puis le transport du HTML vers le navigateur. PHP et ses frameworks MVC sont conçus pour gérer cette architecture. Mais quand AJAX et HTML5 viennent bouleverser la répartition de ce qui se fait côté client et côté serveur, il est temps de repenser nos outils. Quelle part de nos frameworks reste pertinente dans une architecture API-centric? PHP est-il condamné à ne servir que des APIs REST? Et quelles architectures côté client peuvent prendre le relais sans faire exploser la complexité de développement ? Paradoxalement, c'est du monde du jeu vidéo que viendra peut-être la clé des applications de demain. Une conférence sans code, mais avec des dessins. Et des idées pour demain.
Are you almost certain there is someone you were supposed to call today, but have no clue who that someone is? Consider how wonderful it would be to better organize your tasks, sales calls, and appointments, with Microsoft Outlook!
Join us to hear some great Outlook tips that will have you feeling de-cluttered and empowered to take your business to the next level.
Brief introduction to Professional Practice Course (BTCE-605 as per Punjab Technical University), also known as Building Costing and Estimation in some institutions.
Radioimmunoassay (RIA) is a very sensitive in vitro assay technique used to measure concentrations of antigens (for example, hormone levels in blood) by use of antibodies. As such, it can be seen as the inverse of a radiobinding assay, which quantifies an antibody by use of corresponding antigens.
The following presentation contains helpful information regarding Radioimmunoassay (RIA) and Enzyme-Linked Immunosorbent Assay (ELISA), including their history, introduction, advantages, procedures and applications.
This is the deck that I used in my European Silverlight Tour in Spain, Switzerland, Denmark, Sweden, Bengium, Netherlands and Ireland. It\'s about architecting Rich Internet Applications with Silverlight 2.0.
This will be a brief discussion on Pen Testing Web Services in 2012, though OWASP have testing guides which describes various methods and tools for performing black box and white box security testing on web services but they’re all outdated. The key points of the presentation will revolve around how to pen test web services, what are the pre-requisites, methodology, tools used, etc.
Web 2.0 has brought new life to the Internet, providing a more interactive user experience that is comparable to fat client desktop applications. Web 2.0 introduces new types of services that are designed to share presentation and multimedia objects (presentation services) and give the ability to develop a new application by combining services from different sites or applications (e.g. through Mashups). One of the popular components of today’s Web 2.0 is Rich Internet Applications (RIAs). They include new features to process information and interactive user interfaces based on Ajax, Flex, JavaFX, Silverlight, etc. The user no longer has to wait for a new page to load whenever he makes a request; some information retrieval now happens asynchronously in the background while the user is interacting with the GUI, while other requests can be managed by logic that runs on the client without requiring calls over the Internet to the server side. However, what users see is merely a facade. It is powered by server-side distributed Business services that process data according to client requests. The question then becomes how services should be designed to support the requirements of RIA clients. We will look at RIA support services that are included in a SOA infrastructure and are managed through SOA governance tools.
Overview of the need for APIs in order to build RIAs with Adobe Flex. Also a breif walkthrough on how to create Mashups with Flex and Kapow Mashup Server.
Todays web front-end applications architecture. All resources shared at the end of presentation.
Full sources on:
https://lnkd.in/gyQuFKK
https://lnkd.in/gZK8Sp3
An overview of web development essentials that will help you as a user experience designer to not only understand how to integrate designs with development components, but also to learn some tips on interacting effectively with developers.
I felt necessity of creating this brief slideshow, so as to help PHP Developer interns and communicating the intricacies of development with my clients easier. I thought the more deeply clients understood what really went into translating their ideas to web applications under the hood, the better it could translate to
exchange of design issues,
appreciation of development process intricacies, resulting delivery time & cost issues.
So I quickly put together information that I found on internet & have tried to make an attempt. Hope this helps other developers too... Your comments & critique are welcome in terms of improving & simplifying this slide show.
Connect Solutions offers a full suite of Magento development services. From the design and architecture of your Magento platform, to delivery and optimization, through to ongoing support and maintenance, our Magento developers provide enviable expertise in Magento platform. Being a top-rated Magento development agency, reputed solutions partner and premier extension builder. We provide Magento Development services that guarantee diverse functionality and a smooth customer experience. Connect Solutions is one of the best Magento Web Development Company which offer Magento Custom Development services to contribute to the growth of any Magento websites in need. We provide you Magento developers who are vetted via thorough background verification.
Visit us: https://connect-sol.com/magento-development-service/
Similar to Best And Worst Practices Building Ria with Adobe and Microsoft (20)
Mentorship by Josh Holmes - a KalamazooX talkJosh Holmes
I measure my career by the mentors that have guided me through that period of time. When I stop learning new things, that’s when it’s time to move on. Sometimes, it’s technology that I need to learn, sometimes it’s leadership, sometimes it’s hard to quantify. Regardless, I love learning new things and it’s mentors that have taught me over the years.
I’ve also had the pleasure and the honor of serving as a mentor to many others on a very wide range of topics from technology to managing company politics.
In this session, we’ll talk about mentorship, how to find a great mentor and when/how you should step up as a mentor.
Building a high performance front end is a balancing act. You need to understand all the different moving parts and subsystems in the browser and how they interact with each other.
Small changes can significantly impact page and app load time, memory consumption, and processor use which has a huge impact on your user’s experience!
In this session, we will dive into the subsystems of the browser and learn to optimize performance on sites and in web apps.
We will also deep dive into the new performance analyzing tools available expose good and bad run-time patterns for your sites and web apps, and provide users with a fast and fluid experience.
This talk is a celebration of the letter F as regards to software formation. From his first feats in forming friction free software, Josh has been fanatically fighting the furious fight for first class software. This talk is a free flowing fantastic flurry of fulmination about being fearful of failure, focusing on the fixed, forcing feedback and much more… So consider yourself forewarned.
This talk was first delivered in Edinburgh at #WhiskyWeb
A fast moving trend is building for mobile with HTML5. In this talk, Josh Holmes will show what can be accomplished with a mobile browser app and talk about the design considerations for that form factor.
Cloud computing is revolutionising the tech industry but it goes much further than that, as it can have great economic impact across a company and indeed across the country. In the Ireland Cloud Economic Report, produced by the Goodbody Economic Consultants and commissioned by Microsoft, it outlines the potential impact on Ireland’s economy by aggressively but intelligently adopting Cloud Computing across different sectors. At the CloudArena event, we will take a glimpse into the potential future of Ireland and our tech industry.
PHP on IIS has had an amazing performance jump in the past 2-3 years but you can always squeeze a little more torque out of an engine with the right tuning. In this session we’ll dive into improvements in FastCGI and fantastic new libraries such as WinCache 1.1 for exceptional performance in your applications as we go under the hood with IIS.
I delivered this talk at CakeFest 2010 in Chicago. I pulled together the slides from a couple of different that I had done previously to do a quick overview of PHP on the Microsoft web stack and then to hit the technical side of PHP on Azure.
At OpenCamp 2010, Josh Holmes did a session called Scaling WordPress (and really any PHP application) on Microsoft. This talk dives into supporting PHP and WordPress in specific on Windows/IIS.
This talk is a talk that I did at MODxpo in Dallas around PHP on Windows. The demos that I did were tailered to MODx but the rest of the content is applicable to a lot of different projects and PHP applications.
Moving Enterprise Applications To The CloudJosh Holmes
With a nod to Brian Prince who created the base for this presentation, this is the talk that Ben Henderson and I did at A Lap Around PDC in Nashville, TN in 1/2010.
Simplicity is a lost art in the application development space. The Wikipedia definition of Simplicity is “Simplicity is the property, condition, or quality of being simple or un-combined. It often denotes beauty, purity or clarity. Simple things are usually easier to explain and understand than complicated ones. Simplicity can mean freedom from hardship, effort or confusion.” This is a beautiful statement that we often lose sight of when we are building our applications. Instead we are on a never ending quest to fill out a checklist of features or to build something clever forgetting about the actual needs of our users to get a specific task done. This session takes complexity to task and challenges you to bring simplicity to the center of your development with some straightforward ideas and guidance.
Full writeup of the presentation and patter at http://sn.im/lostartofsimplicity
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
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.
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.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
4. RIA for me is all about expanding the experience for the user. Those "gray beards" amongst us remember the old days of just being happy seeing plain, static text show up in the browser . We've come a long way since then. While dynamic web sites have pushed us way beyond the simple pages of the old days, RIA is helping us now provide the same level of dynamic interaction on the client side as well. I think this is wonderful as it improves the entire process (server and client)! While we have a great opportunity here to help users, the challenge is to not actually make things more difficult . Like any new feature, the web is rife with examples of poorly designed and hard to use applications. It is not enough to learn how to make HTTP requests and change content dynamically, but rather how to do it well in ways that help the user and not scare them off. Raymond Camden http://www.insideria.com/2008/01/what-is-ria-1.html
5. But the term still begs the question: Rich in what sense? Responsiveness, immediacy, convenience? production values, chrome, animation? http://www.insideria.com/2008/01/what-is-ria-1.html Christian Crumlish
6.
7. Back Button and Refresh Visual Vocabulary State management Browser Sandbox Business Logic in UI Component Level Logic Animation new for Desktop Developers new for Web Developer What’s different with RIA? Limited Runtime Service Orientation Non-text based layout Hype
52. private void Application_Startup( object sender, StartupEventArgs e) { string startPageParameter = "/StartPage" ; if (!e.InitParams.ContainsKey(startPageParameter)) { this .RootVisual = new DefaultStartPage(); } else { switch (e.InitParams[startPageParameter]) { case "DefaultStartPage" : this .RootVisual = new DefaultStartPage(); break ; case "NonDefaultStartPage" : this .RootVisual = new NonDefaultStartPage(); break ; default : throw new Exception ( "/StartPage must be 'DefaultStartPage' or 'NonDefaultStartPage'." ); } } }
Contact information – I don’t hide on the internet, I’m joshholmes.com, joshholmes on facebook, joshholmes on linked in, joshholmes on twitter and most of the other social networking sites out there. If you don’t take any other notes – get my email address down because you can take the slides home but you can’t take me home… Unless you’ve got really good Scotch.
The first question that we have to answer is “What is R.I.A.?” http://www.flickr.com/photos/88746839@N00/2102287933/
Raymond Camden did an interview for InsideRia back in January 2008 and said - Ria is about the experience in the browser – pushing dynamic web sites on the client side. The challenge is not to actually make things more difficult. Poorly designed applications do not help the user.
In the same article, Christian Crumlish wisely asked the question – Rich in what sense? There are thousands of things that you could mean by rich. So what do we mean?
And then if you go to Wikipedia (the compendium of all human knowledge), they define Rich Internet Applications as web applications that bring the features and functionality that has traditionally been reserved for desktop applications. It’s about the user interface on the web but keeping the state and et all on the application server. RIAs run in a web browser and do not require a software installation (for this exact application – a plug-in may be required to provide the RIA platform but this application doesn’t require an install) and runs in a secured sandbox.
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Form factor that supports needs User context Different ux/data on different forms (phone, desk, xbox) Different users, different needs Try to make all options doable on the platform It's all about the end user! Be an advocate for the end user Know your users define personas behaviors & workflows proficiencies & deficiencies Fight for what you feel they will really benefit from Photo credit: http://www.flickr.com/photos/frischmilch/
Frank Lloyd Write was a huge proponent of form following function. This is a picture of his http://www.flickr.com/photos/ddwise/2312837211
He often spent more time inside than he did outside. He invented furniture, track lighting, acoustical techniques and a ton more. The tie back here is that we should some time thinking the architecture of our client side as well as our server side and how it fits in with the rest of the application. http://www.flickr.com/photos/sminor/316037308/sizes/l/
Model-View-Controller is the concept introduced by Smalltalk's inventors ( TrygveReenskaug and others) of encapsulating some data together with its processing (the model) and isolate it from the manipulation (the controller) and presentation (the view) part that has to be done on a UserInterface . A model is an object representing data or even activity, e.g. a database table or even some plant-floor production-machine process. A view is some form of visualization of the state of the model. A controller offers facilities to change the state of the model. Smalltalk provides mechanisms to link models, views and controllers in some standard way in order for a model to communicate state changes to every attached view (there can be several, as you can see). Model state changes happen either because a controller issued some command or for some internal reason. An easy way to understand MVC: the model is the data, the view is the window on the screen, and the controller is the glue between the two.
The MVP pattern is a UI presentation pattern based on the concepts of the MVC pattern. The pattern separates responsibilities across four components: the view is responsible for rending UI elements, the view interface is used to loosely couple the presenter from its view, the presenter is responsible for interacting between the view/model, and the model is responsible for business behaviors and state management. In some implementations the presenter interacts with a service (controller) layer to retrieve/persist the model. The view interface and service layer are commonly used to make writing unit tests for the presenter and the model easier. Key Benefits Before using any pattern a developers needs to consider the pros and cons of using it. There are a number of key benefits to using either the MVC or MVP pattern (See list below). But, there also a few draw backs to consider. The biggest drawbacks are additional complexity and learning curve. While the patterns may not be appropriate for simple solutions; advance solutions can greatly benefit from using the pattern. I’m my experience a have seen a few solutions eliminate a large amount of complexity but being re-factored to use either pattern. · Loose coupling – The presenter/controller are an intermediary between the UI code and the model. This allows the view and the model to evolve independently of each other. · Clear separation of concerns/responsibility o UI (Form or Page) – Responsible for rending UI elements o Presenter/controller – Responsible for reacting to UI events and interacts with the model o Model – Responsible for business behaviors and state management · Test Driven – By isolating each major component (UI, Presenter/controller, and model) it is easier to write unit tests. This is especially true when using the MVP pattern which only interacts with the view using an interface. · Code Reuse – By using a separation of concerns/responsible design approach you will increase code reuse. This is especially true when using a full blown domain model and keeping all the business/state management logic where it belongs. · Hide Data Access – Using these patterns forces you to put the data access code where it belongs in a data access layer. There a number of other patterns that typical works with the MVP/MVC pattern for data access. Two of the most common ones are repository and unit of work. (See Martin Fowler – Patterns of Enterprise Application Architecture for more details) · Flexibility/Adaptable – By isolating most of your code into the presenter/controller and model components your code base is more adaptable to change. For example consider how much UI and data access technologies have changed over the years and the number of choices we have available today. A properly design solution using MVC or MVP can support multi UI and data access technologies at the same time.
So what really are the differences between the MVC and MVP pattern. Actually there are not a whole lot of differences between them. Both patterns focus on separating responsibility across multi components and promote loosely coupling the UI (View) from the business layer (Model). The major differences are how the pattern is implemented and in some advanced scenarios you need both presenters and controllers. Here are the key differences between the patterns: · MVP Pattern o View is more loosely coupled to the model. The presenter is responsible for binding the model to the view. o Easier to unit test because interaction with the view is through an interface o Usually view to presenter map one to one. Complex views may have multi presenters. · MVC Pattern o Controller are based on behaviors and can be shared across views o Can be responsible for determining which view to display ( Front Controller Pattern ) Hopefully you found this post interesting and it helped clarify the differences between the MVC and MVP pattern. If not, do not be discouraged patterns are powerful tools that can be hard to use sometimes. One thing to remember is that a pattern is a blue print and not an out of the box solutions. Developers should use them as a guide and modify the implementation according to their problem domain. http://www.flickr.com/photos/14448070@N00/1584043910/sizes/o/
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
5-10 principles or values that guide your decision making process These are you guideposts to focus your thinking when you have to make a tough decision The fewer the better Helps to make sure entire development team understands the big picture and cares about the end user Examples: Speed before beauty 3 clicks or less Drag & drop instead of menu commands One that I always use is that if you have to hit search for normal navigation, then I’ve failed in the design. Photo credit: http://www.flickr.com/photos/psd/
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Use the appropriate level of fidelity. There are two places that this is important. (next slide) Photo credit: http://www.flickr.com/photos/sarchi/
First, in the design phase. When you draw a form with a black marker on a white board, people don’t expect that to ship next week. They also don’t start arguing over color choices or logos or exact placement. Rather they start looking at the rough functionality and focus in on that. http://www.codeplex.com/protoxaml
The second place that fidelity comes in to play is in the level of detail that you should your user. As an example, when someone is looking up a phone number, do you need to show them the 4 addresses, resume and all recent communications? Maybe – probably not. But you should definitely have that as a close at hand option. The same goes for reporting – what’s your audience? Your CFO doesn’t need to see how much you spend on a pencil but does need to know how much office supplies are over the entire company. This is one of the things that Deepzoom is really good at. Let’s take a look at this Virtual Earth example and see how that works. As you zoom in, you get more and more detail because more is warranted. It makes no sense to show street level information from the sky.
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
They’re not necessarily the same person! Usertest.com is a great site for letting public users use your application and provide feedback. Photo credit: http://www.flickr.com/photos/piccadillywilson/
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Build for easy learning curve Minimize training Use standard keyboard and mouse shortcuts Use focus and tabbing conventions Nobody reads manuals! However: Don't forget the needs of power users (70/20/10 rule here!) Easy to learn, lifetime to master Photo credit: http://www.flickr.com/photos/thiru/
Just as two objects can’t occupy the same space, two people can’t edit the same data with out a conflict. Build for multi-user concurrency right up front. Optimistic concurrency is NOT concurrency! Photo credit: http://www.flickr.com/photos/conanil/
Decide where the logic and processing balance on where’s the logic? Client/Server - this line is starting to get more and more blurry but there are some guideposts that we can throw out there. Deciding on where the data goes. What’s the balance between client side/server side. Think S+S and multiple clients and state management. Speed verses flexibility. Photo credit: http://www.flickr.com/photos/saschapohflepp/
This neat system allows more than one person to open the gate, each using their own key. Overdone security can kill the user experience. If there is too much impedance, smart users will do their best to get around all the locks Too much security leads to systems that are hard to administer and maintain Photo credit: http://www.flickr.com/photos/psd/
Smart error messages and reporting Troubleshooting by end users and support staff Instrument the application for feature usage tracking If you don't plan on maintaining a dev staff, avoid completely custom code Build for agility Web services are the ultimate decoupling tool Build for ease of deployment Photo credit: http://www.flickr.com/photos/oskay/
Not thinking about the offline usage with a complimentary mobile app or WPF application Smart error messages and reporting Troubleshooting by end users and support staff Instrument the application for feature usage tracking If you don't plan on maintaining a dev staff, avoid completely custom code Build for agility Web services are the ultimate decoupling tool Build for ease of deployment Photo credit: http://www.flickr.com/photos/oskay/
Why? Is it pretty? Is it functional? Is it compelling? (Does it make you want to use it?) Does it improve your quality of life? Does it just plain work?!? What would make it better?
No best practices talk would be complete without some worst practices.
Remember that HTML/Javascript still rock. They are very good at information dispersal. There are a number of RIA applications that have been thrown out there into the world that have made the user’s life more difficult. If you need simple dispersal – then HTML is probably the right choice for you. http://www.flickr.com/photos/rocketnumber9/7731212/
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
The issue with the refresh button is that when someone clicks it, it takes the application out of memory and completely reloads it. In the windows world, it’s as if they pulled up task manager, killed the app and restarted it. There are a lot of strategies that one can take to deal with this. One is just let it happen and start over at the beginning of the application. Sometimes, that’s the right move. Another idea is to write out the status every time there is a change. This could be server side or client side depending on the circumstances. Another idea is to write out the status on unload. If you write out the status, you need to write in the loader the function that checks the status and sets the application appropriately. http://www.flickr.com/photos/randomchu/251646898/sizes/l/
Quick sample code in the app.xaml.cs to deal with the startup.
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Do not break web standards. Don’t do things like trying to disable the back button/refresh button and so on.
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Regardless of your front end technology, too many containers is a bad thing. It slows down rendering, adds memory, becomes hard to maintain and locks you into a single display format. This is bad for a number of reasons. There’s a push in HTML world to get away from tables in favor of CSS because you can swap out the CSS and radically change the layout from say three columns with a right hand nav to a mobile layout with a nav bar across the top or something. That promise only comes true if you don’t get into the other trap of divitis. That’s substituting divs for tables and going nuts that direction. The same is true in Silverlight, WPF, Flash, Flex, JavaFX, Winforms – name a UI technology. Too many containers becomes a bad thing. http://www.theiff.org/oexhibits/paper06.html
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff). Breaking standard browser experiences. Slowing the application down with the use of too many containers. Slowing the application down by using XML for data transfers over optimized protocols (read binary when possible or compressed) Not applicable from the article but we could add one easily here. Forgetting about the page refresh – that could be our sub there. Over use of animations Not setting up an enterprise ecosystem Not using the entire framework Slowing the DataGrid (and any other control) down with complex renderers Not thinking about the offline usage with a complimentary mobile app or WPF application
Religion does not belong in technology decisions. That true from the UI/Server technologies that you work with to the architectural practices that you employ.
Why? Is it pretty? Is it functional? Is it compelling? (Does it make you want to use it?) Does it improve your quality of life? Does it just plain work?!? What would make it better?
Contact information – I don’t hide on the internet, I’m joshholmes.com, joshholmes on facebook, joshholmes on linked in, joshholmes on twitter and most of the other social networking sites out there. If you don’t take any other notes – get my email address down because you can take the slides home but you can’t take me home… Unless you’ve got really good Scotch.