AmpersandJS is the front-end "non-frameworky framework". Some might consider it as Backbone 2.0. Everything is a small CommonJS module published to npm, which follows strict semver. Perfect for nodeJS devs!
Considering all the discontent with AngularJS 2.0, Ampersand is a more than viable alternative for your MEAN stack.
This prototype works, but it's not pretty, and now it's in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it's imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we'll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
This prototype works, but it's not pretty, and now it's in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it's imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we'll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
Dip Your Toes in the Sea of Security (ConFoo YVR 2017)James Titcumb
Security is an enormous topic, and it’s really, really complicated. If you’re not careful, you’ll find yourself vulnerable to any number of attacks which you definitely don’t want to be on the receiving end of. This talk will give you just a taster of the vast array of things there is to know about security in modern web applications, such as writing secure PHP web applications and securing a Linux server. Whether you are writing anything beyond a basic brochure website, or even developing a complicated business web application, this talk will give you insights to some of the things you need to be aware of.
For a presentation given to the Angular DC Meetup on 3/19/14. (http://www.meetup.com/AngularJS-DC/events/169813802/) Part 2 of the "Angular from Scratch" series. Find part one at http://christianlilley.wordpress.com/2013/11/15/angular-from-scratch-slides-from-angularjs-meetup-dc/ . Find the accompanying demonstration files at https://github.com/xmlilley/ng-demos.
This prototype works, but it's not pretty, and now it's in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it's imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we'll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
This prototype works, but it's not pretty, and now it's in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it's imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we'll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
Dip Your Toes in the Sea of Security (ConFoo YVR 2017)James Titcumb
Security is an enormous topic, and it’s really, really complicated. If you’re not careful, you’ll find yourself vulnerable to any number of attacks which you definitely don’t want to be on the receiving end of. This talk will give you just a taster of the vast array of things there is to know about security in modern web applications, such as writing secure PHP web applications and securing a Linux server. Whether you are writing anything beyond a basic brochure website, or even developing a complicated business web application, this talk will give you insights to some of the things you need to be aware of.
For a presentation given to the Angular DC Meetup on 3/19/14. (http://www.meetup.com/AngularJS-DC/events/169813802/) Part 2 of the "Angular from Scratch" series. Find part one at http://christianlilley.wordpress.com/2013/11/15/angular-from-scratch-slides-from-angularjs-meetup-dc/ . Find the accompanying demonstration files at https://github.com/xmlilley/ng-demos.
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...Codemotion
This talk will show how to use TensorFlow with serverless platforms to bring the benefits of serverless (elastic scalability, low pricing and no charge for idle) to real-time machine learning in the cloud. Attendees will learn why serverless platforms are great for machine learning in the cloud, understand the different approaches for deploying pre-trained TensorFlow models in serverless runtimes and how to architect scalable serverless functions for performance when using TensorFlow. Attendees do not need any prior experience with machine learning or serverless cloud platforms.
Image Manipulation in WordPress 3.5 - WordCamp Phoenix 2013GetSource
Image Manipulation in WordPress 3.5 talk from WordCamp Phoenix 2013
Image manipulation in WordPress was an alchemy of mixing GD functions and WordPress functions together to (hopefully) turn out the desired result. Now, as of WordPress 3.5, GD is abstracted out, and a new class, WP_Image_Editor, allows easy manipulation of image files. This lets you perform simple resizing, crops, flips, rotates, and real-time streaming of those results using Imagick or GD. But, that’s not all! You can also easily extend WordPress’ classes to add your own functions, or replace the entire engine with your own.
This session will walk through what’s changed for image manipulation in WordPress 3.5, and explain ways you can take advantage of the new APIs, both through using them directly and extending them for plugins of your own.
Presented by Mike Schroder (@GetSource/DH-Shredder)
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
JavaScript is the language that powers the interactive web of the future. But as our web applications become larger and more complex, we begin to strain the old paradigm of throwing a bunch of JavaScript functions into a few files. Complex dependencies, tight coupling, and global state can turn our code into a huge plate of spaghetti. Though browsers do not natively support JavaScript modules, there are many tools that can help us to write clean, modular JavaScript.
In this session, we will explore the benefits of writing modular JavaScript. We will also take a deep dive into specific JavaScript module systems, such as Browserify, RequireJS, and the module standards that are coming in ES6.
"Managing API Complexity". Matthew Flaming, TembooYandex
APIs are proliferating on the web, providing app developers with ready access to a wide range of data and services, yet very few apps take advantage of more than one or two API providers. Arbitrary inconsistencies between APIs -- from authentication to input/output formats to details as small as timestamps or pagination -- mean every new API brings its own unnecessarily redundent learning curve, draining developer's most precious resource: time.
Temboo is part of an emerging class of services for managing and scaling API usage. By NORMALIZING access to APIs (as well as their associated documentation and credentials) these services do for development what PaaS and server virtualization have already done for app deployment and infrastructure. "Code virtualization", whereby all the tedious details of API access are abstracted away in standardized cloud-based processes, will free developers to spend their time writing only the code that actually makes their app unique. And that means more unique apps for everyone.
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...Codemotion
This talk will show how to use TensorFlow with serverless platforms to bring the benefits of serverless (elastic scalability, low pricing and no charge for idle) to real-time machine learning in the cloud. Attendees will learn why serverless platforms are great for machine learning in the cloud, understand the different approaches for deploying pre-trained TensorFlow models in serverless runtimes and how to architect scalable serverless functions for performance when using TensorFlow. Attendees do not need any prior experience with machine learning or serverless cloud platforms.
Image Manipulation in WordPress 3.5 - WordCamp Phoenix 2013GetSource
Image Manipulation in WordPress 3.5 talk from WordCamp Phoenix 2013
Image manipulation in WordPress was an alchemy of mixing GD functions and WordPress functions together to (hopefully) turn out the desired result. Now, as of WordPress 3.5, GD is abstracted out, and a new class, WP_Image_Editor, allows easy manipulation of image files. This lets you perform simple resizing, crops, flips, rotates, and real-time streaming of those results using Imagick or GD. But, that’s not all! You can also easily extend WordPress’ classes to add your own functions, or replace the entire engine with your own.
This session will walk through what’s changed for image manipulation in WordPress 3.5, and explain ways you can take advantage of the new APIs, both through using them directly and extending them for plugins of your own.
Presented by Mike Schroder (@GetSource/DH-Shredder)
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
JavaScript is the language that powers the interactive web of the future. But as our web applications become larger and more complex, we begin to strain the old paradigm of throwing a bunch of JavaScript functions into a few files. Complex dependencies, tight coupling, and global state can turn our code into a huge plate of spaghetti. Though browsers do not natively support JavaScript modules, there are many tools that can help us to write clean, modular JavaScript.
In this session, we will explore the benefits of writing modular JavaScript. We will also take a deep dive into specific JavaScript module systems, such as Browserify, RequireJS, and the module standards that are coming in ES6.
"Managing API Complexity". Matthew Flaming, TembooYandex
APIs are proliferating on the web, providing app developers with ready access to a wide range of data and services, yet very few apps take advantage of more than one or two API providers. Arbitrary inconsistencies between APIs -- from authentication to input/output formats to details as small as timestamps or pagination -- mean every new API brings its own unnecessarily redundent learning curve, draining developer's most precious resource: time.
Temboo is part of an emerging class of services for managing and scaling API usage. By NORMALIZING access to APIs (as well as their associated documentation and credentials) these services do for development what PaaS and server virtualization have already done for app deployment and infrastructure. "Code virtualization", whereby all the tedious details of API access are abstracted away in standardized cloud-based processes, will free developers to spend their time writing only the code that actually makes their app unique. And that means more unique apps for everyone.
Best practices for crafting high quality PHP apps (php[world] 2019)James Titcumb
The Best Practices for Crafting Quality PHP Applications workshop is an interactive exploration into some conventions, processes, and habits that help make better quality software. Whilst there is no single silver bullet, we will spend time discussing, supported by some practical exercises, what improvements we can make. We’ll focus on three core areas; planning, development, and testing; using a variety of practical explorations, group discussion and showing you discoveries from my own experience.
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
Crossing the Bridge: Connecting Rails and your Front-end FrameworkDaniel Spector
Presented at Railsconf 2015 by Daniel Spector, @danielspecs.
Crossing the Bridge explores tools, patterns and best practices to connect your Javascript MVC framework to Rails in the most seamless way possible. The talk progresses from demonstrating the standard API request cycle to preloading data to your client-side framework to rendering your javascript on the server. It explores Isomorphic Javascript and ways of implementing it with Rails.
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
The Art and Science of Shipping Ember AppsJesse Cravens
As an alternative to other popular client MVC solutions like Backbone.js and Angular.js, Ember.js differs in that it provides 'Rails-like' defaults by convention to common coding patterns, intelligent memory management, built-in integration testing, and numerous, next generation client side persistence solutions. Join O'Reilly author, Jesse Cravens, as he presents information from his new book: O'Reilly's 'Building Web Apps with Ember.js’ as he takes the audience through the construction of the RocknRollCall demo application. Construct a workflow using the latest in JavaScript build and package management solutions. Use Handlebars and Ember templates.
MIKE Stack Introduction - MongoDB, io.js, KendoUI, and ExpressCharlie Key
You don't need skinny jeans, mason jar lunches, and cups of pu-er cha to demonstrate your hipsterism. What you really need is the M.I.K.E. stack. Built using Mongo, io.js, Kendo UI, and Express, M.I.K.E. will bring your web apps into the world with a hot new JavaScript framework built for performance and ease of deployment. In this seminar, we'll walk through building a web app from scratch within Visual Studio and deployed as a Node-based, Mongo-powered project on Modulus.io, a superb Node hosting platform. We'll discuss building a web api using Express and then discuss fleshing out the frontend using KendoUI widgets, building a simple contact form styled with a responsive Bootstrap theme. Want to be that VS developer who's in the cool kids club? We'll show you how.
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...Wim Selles
This presentation is about the things I did to test the Tele2 React Native app with Appium. I'll explain the journey we've taken and some best practices which you can use with React Native and Appium
Crafting Quality PHP Applications (PHP Joburg Oct 2019)James Titcumb
This prototype works, but it’s not pretty, and now it’s in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it’s imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we’ll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
13. @drewfyock
var WidgetCollection = require('./mycollection');
var SubCollection = require('ampersand-subcollection');
var widgets = new WidgetCollection();
widgets.fetch();
var favoriteWidgets = new SubCollection(widgets, {
where: {
awesome: true
},
comparator: function (model) {
return model.rating;
}
});
21. @drewfyock
var FormView = require('ampersand-form-view');
var InputView = require('ampersand-input-view');
var AwesomeFormView = new FormView({
submitCallback: function (obj) {
console.log('form submitted! Your data:', obj);
},
validCallback: function (valid) {
if (valid) {
console.log('The form is valid!');
} else {
console.log('The form is not valid!');
}
},
fields: [
new InputView({
name: 'client_name',
label: 'App Name',
placeholder: 'My Awesome App',
value: 'hello',
tests: [
function (val) {
if (val.length < 5) return "Must be 5+ characters.";
}
]
})
]
});
45. @drewfyock
Starting a new app
Generating form, view, model or collection
Generating models from JSON
46. @drewfyock
Starting a new app
Generating form, view, model or collection
Generating models from JSON
Generating forms from models
47. @drewfyock
Starting a new app
Generating form, view, model or collection
Generating models from JSON
Generating forms from models
Configuring the generated code
48. @drewfyock
// .ampersandrc
{
// default framework to be prompted with, options are express or hapi
framework: 'hapi',
indent: 4,
view: '', // default template
router: '', // default template
model: '', // default template
page: '', // default template
collection: '', // default template
clientfolder: 'client',
viewfolder: 'views',
pagefolder: 'pages',
modelfolder: 'models',
formsfolder: 'forms',
collectionfolder: 'models',
// whether to create collection when making a model
makecollection: true,
// if it was called without the 'gen' argument we're building a new one
// so we won't look for an application root
approot: '', // starts walking up folders looking for package.json
f: false, // overwrite
force: false, // overwrite flag, longform
quotes: 'single' // can be 'single' or 'double'
};
64. @drewfyock
Why we chose Ampersand at Bessemer:
CommonJS by default
Flexible and modular
Based on Backbone
Just the right amount of magic
Incredibly easy to integrate with Express or Hapi
Support on Gitter
65. @drewfyock
Why you might not choose Ampersand:
Still fairly new
Moonboots - Jade
Not as “full featured" as Angular or Ember
May have to roll-your-own for specific components
An overview of ampersand itself and our philosophy.
How we do things and why do them in a specific way.
"A highly modular, loosely coupled, non-frameworky framework for building advanced JavaScript apps."
Its made of models, collections, views, router - nothing unusual.
I know it MAY look not so different then other solutions, but just bear with me, I'll walk you through basics first.
dataTypes: props / session / derived
extraProperties / children / accessed by either set/get or directly thanks to defineProperty
mix of ampersand-state and ampersand-sync
sync, save, fetch, destroy
Just a place to store all your models of the same type
On its own it doesn’t do much, you need rest/underscore mixin
adds ES5 methods like filter, map, reduce, some
just a subset of your main collection
where, filter, filters, watched, comparator, limit, offset
configure, addFilter, removeFilter, clearFilters
fetch, getOrFetch, fetchById, create, sync
contains all underscore methods
el, submitCallback, validCallback, fields (can be of course registered as registerSubview)
Automatically shows/hides error messages based on tests
Live validates to always report if valid state but only shows messages when sane to do so
Will not show error messages pre-submit or it's never had a valid value. This lets people tab-through a form without triggering a bunch of error messages.
view module for intelligently rendering and validating input
array: same as input view but for multiple inputs (if you want array of answers) with add/remove buttons
Dropdown and checkboxes
role / hook
accessibility implications / ARIA roles
role/data-js/data-bind/data-hook/data-action/rel/name/classes
sets/maintains textContent of selected element. treats undefined, null, and NaN as ''
sets and maintains single class as string that matches value of property
sets the whole attribute to match value of property.
sets the value of the element to match value of the property. works well for input, select, and textarea
add/removes class based on boolean interpretation of property name
add/removes attribute based on boolean interpretation of property name
toggles existence of entire element (uses a comment node as placeholder if gone) based on boolean interpretation of property name.
Toggles existence of multiple items based on value of property.
renders innerHTML, can be a string or DOM, based on property value of model
data bindings in action
setting of avatar src, edit/view URLs
pretty straightforward, watch your routes and execute appropriate function,
handle back button, redirects etc.
pushState and hashChange
This is where fun parts begin!
Helper function for setting up prototype chains for subclasses.
thanks to it you can do `.extend()` anything
Make automatic dom binding possible (extends renderWithTemplate function)
you can even create things like react mixin, that Philip Roberts is I believe currently working on ;)
And last but not least
full app with api, structure and so on
hapi/express
To build great products, you want to use them yourself first
We wanted to create a simple base, a separate pieces that can help you solve your problems, not magically solve them for you.
I couldn't say that better.
Because how you approach it, determines how you'll solve your future problems and you for sure WILL have them sooner or later.
tangled huge parts, hard to modify for your needs
Its easier to lean few small apis than one huge api
There're no questions how to integrate it with gulp, grunt or anything like that.
All you need is browserify.
it's much easier to test small pieces then one huge framework
still working on it
publish separately
its hard to change things, because it requires bumping version in package managers as well
forks, localStorage/realtime with sockets and so on
unix philosophy
if you've a problem that you solve over and over again – you should definitely abstract it
create separate module or create mixin
npm, packages, common tools
and because of that we have ampersandjs tools page
where you can find solutions for already defined, small problems and where you can share your own modules or mixins
CLI, new app, generate model
- Why we use it
+ CommonJS by default
* Simple, familiar
* Keeps the same paradigm in server and client
+ Flexible and module
* Lightweight
* Use the parts you want, omit the ones you don't
* Each module is small, easy to grok, source is extremely approachable
+ Based in Backbone
* If you know Backbone, you know ampersand
- Models, Views, Collections
* Flexible, minimally prescriptive
- Allows for template engine of your choice
* Familiar if you've used Backbone / Marionette
+ Just the right amount of magic
* ampersand-state is the crown jewel
- Both models and views are subclasses
- Properties are cleanly declared and manipulated
* View bindings prevent writing a lot of DOM-maipulation code
- Focus on your organization and logic
* Javascript only solution
- Doesn't get into your markup, which should be agnostic (i.e. Angular?)
+ Incredibly easy to integrate with express or hapi
* Ever try setting up r.js? This is cake compared
- Why you don't want to use it
+ New, changing regularly
+ Moonboots... seriously? wtf?
+ Not as full "featured" as angular or ember
+ May have to roll-your-own for specific components
+ Too much global state
* This was going to be fixed, was it?