A talk on static code analysis tools such as jshint, jscs, and eslint and how to use them to write good (stylish) code. Also introducing tools to enforce using the correct style via editorconfig or js-beautify to minimize efforts to write good code.
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHPAdam Englander
Asynchronous frameworks allow developers to build stateful protocols and Internet of Things applications without threading and forking. Python, Ruby, and Node.js have had asynchronous frameworks for over ten years. PHP is now starting to catch up with Icicle.io. Learn the basics concepts of event based programming, and how the event loop allows a single thread to process all the requests for your application.
My lightening talk given at GopherCon EU on June 18th!
Golang developers care a lot about security and as Go modules become more widely used, they need more ways to assure these publicly shared packages are safe.
One unique feature included with Golang version 1.13 is the foresight that went into authentication and security for Go modules. When a developer creates a new module or a new version of an existing module, a go.sum file included there creates a list of SHA-256 hashes that are unique to that module version. That go.sum file is then sent to Google’s official checksum database where it is stored and used to verify that modules haven’t been tampered with when accessed later by a GOPROXY. This helps keep the integrity of packages intact. In this talk, we’ll go over the behavior of the checksum database, how it protects Go modules, and how the merkle-tree works.
Now, while the checksum authentication feature helps create trust among developers, it isn’t fully tamperproof. If a vulnerability is introduced in the original module’s files, the gosumdb will only be able to indicate that the module wasn’t changed later. This doesn’t solve the problem of malicious code being introduced in the very first commit.
Luckily, GoCenter can now tell you when any Go module has a known vulnerability. We’ve brought the power of JFrog Xray’s security scanning to this reliable repository of Go modules for the Golang developer community.
A talk on static code analysis tools such as jshint, jscs, and eslint and how to use them to write good (stylish) code. Also introducing tools to enforce using the correct style via editorconfig or js-beautify to minimize efforts to write good code.
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHPAdam Englander
Asynchronous frameworks allow developers to build stateful protocols and Internet of Things applications without threading and forking. Python, Ruby, and Node.js have had asynchronous frameworks for over ten years. PHP is now starting to catch up with Icicle.io. Learn the basics concepts of event based programming, and how the event loop allows a single thread to process all the requests for your application.
My lightening talk given at GopherCon EU on June 18th!
Golang developers care a lot about security and as Go modules become more widely used, they need more ways to assure these publicly shared packages are safe.
One unique feature included with Golang version 1.13 is the foresight that went into authentication and security for Go modules. When a developer creates a new module or a new version of an existing module, a go.sum file included there creates a list of SHA-256 hashes that are unique to that module version. That go.sum file is then sent to Google’s official checksum database where it is stored and used to verify that modules haven’t been tampered with when accessed later by a GOPROXY. This helps keep the integrity of packages intact. In this talk, we’ll go over the behavior of the checksum database, how it protects Go modules, and how the merkle-tree works.
Now, while the checksum authentication feature helps create trust among developers, it isn’t fully tamperproof. If a vulnerability is introduced in the original module’s files, the gosumdb will only be able to indicate that the module wasn’t changed later. This doesn’t solve the problem of malicious code being introduced in the very first commit.
Luckily, GoCenter can now tell you when any Go module has a known vulnerability. We’ve brought the power of JFrog Xray’s security scanning to this reliable repository of Go modules for the Golang developer community.
As humans, we are wired for connection and have a desire to belong. We thrive in community and often come together around a shared passion, as well as the enjoyment of competition and contest. The widespread success of professional sports illustrates this clearly, and the rise of esports demonstrates how our nature assets itself as we explore other forms of entertainment. As game developers, we can benefit from organized competition, using it to drive engagement and foster strong communities.
Speaker: Peter Heinrich
Getting Started with the Amazon GameOn API - Peter HeinrichAmazon Web Services
Amazon's GameOn API allows you to easily incorporate competitive play in your game. It allows you to delegate the heavy lifting of managing competition events, participants, and prizes so you can focus on what you do best: making your game fun. This brief introduction to the GameOn API will explore initialization, authentication, entering a match, submitting a score, and claiming prizes.
Svelte (adjective): Attractively thin, graceful, and stylishThe Software House
Bartosz Magier: Jak napisać w pełni reaktywną aplikację szybko i ładnie? Czy taka aplikacja będzie działać wydajnie? Przekonaj się, czym jest nowy JavaScriptowy framework Svelte, co oferuje i czy rzeczywiście jest taki „graceful and stylish” jak obiecuje jego nazwa.
Consistency, Availability, Partition: Make Your ChoiceAndrea Giuliano
Shared data systems try hardly to satisfy data consistency, system availability and tolerance to network partitions.
In a distributed system it is impossible to simultaneously provide all these guarantees at any given moment in time.
The purpose of the talk is to show the mechanism used by data storage systems such as Dynamo and BigTable in order to satisfy two guarantees at a time.
Choosing the right way to process data might become a strategic and non trivial decision for many kind of applications. Especially in applications where an high percentage of the time is spent elaborating information behind the scenes.
There are different message queuing systems designed to manage and process data asynchronously. Using simple messages, it becomes possible to define many types of queue patterns, from the straightforward solution to the more complex one like routing, publisher/subscriber and topic.
The purpose of the talk is to show how to approach the different scenarios in php, adding value to your application.
The upcoming version Plone 5.2 will support Plone 3, what does that mean for you?
When should you start to use Python 3 in your new Plone projects? When and how should you migrate existing projects to Python 3? How do you migrate addons and your custom code?
Drawing from the experience with the migration of Plone itself I'll answer all the questions that arise from moving to Python 3.
ASCII is so 1963. Nowadays, computers must support a broad range of different characters beyond the 128 we had in the early days of computing - not just accents and emojis but also completely different writing systems used around the globe. The Unicode standard packs a whopping 143,859 characters into an elegant system used by over 95% of the Internet, but PHP's string functions don't play nicely with Unicode by default, making it difficult for developers to properly handle such a wide array of possible user inputs.
In this talk, we'll explore why Unicode is important, how the various encodings like UTF-8 work under-the-hood, how to handle them within PHP, and some nifty tricks and shortcuts to preserve performance.
Spinbackup is a Cloud-to-Cloud Backup and Cloud Cybersecurity solutions provider for G Suite.
Spinbackup protects G Suite organizations against Data Leak and Loss disasters in the cloud by letting G Suite administrators to back up their sensitive data, identify security risks, and fix them before they become a huge disaster in one dashboard.
Spinbackup helps organizations gain more control and visibility over data security by providing an additional layer of protection beyond what the typical cloud service provider can offer.
This presentation gives a lot of insights into Jimdo's infrastructure that hosts 20 million websites. To enable our application developers to quickly launch and improve their services, we've created a platform called Wonderland that does all the infrastructure work them.
In this talk, I present the parts of Wonderland related to monitoring and logging. You can learn about our Prometheus setup as well as how we stream log messages from Docker to Logstash.
As humans, we are wired for connection and have a desire to belong. We thrive in community and often come together around a shared passion, as well as the enjoyment of competition and contest. The widespread success of professional sports illustrates this clearly, and the rise of esports demonstrates how our nature assets itself as we explore other forms of entertainment. As game developers, we can benefit from organized competition, using it to drive engagement and foster strong communities.
Speaker: Peter Heinrich
Getting Started with the Amazon GameOn API - Peter HeinrichAmazon Web Services
Amazon's GameOn API allows you to easily incorporate competitive play in your game. It allows you to delegate the heavy lifting of managing competition events, participants, and prizes so you can focus on what you do best: making your game fun. This brief introduction to the GameOn API will explore initialization, authentication, entering a match, submitting a score, and claiming prizes.
Svelte (adjective): Attractively thin, graceful, and stylishThe Software House
Bartosz Magier: Jak napisać w pełni reaktywną aplikację szybko i ładnie? Czy taka aplikacja będzie działać wydajnie? Przekonaj się, czym jest nowy JavaScriptowy framework Svelte, co oferuje i czy rzeczywiście jest taki „graceful and stylish” jak obiecuje jego nazwa.
Consistency, Availability, Partition: Make Your ChoiceAndrea Giuliano
Shared data systems try hardly to satisfy data consistency, system availability and tolerance to network partitions.
In a distributed system it is impossible to simultaneously provide all these guarantees at any given moment in time.
The purpose of the talk is to show the mechanism used by data storage systems such as Dynamo and BigTable in order to satisfy two guarantees at a time.
Choosing the right way to process data might become a strategic and non trivial decision for many kind of applications. Especially in applications where an high percentage of the time is spent elaborating information behind the scenes.
There are different message queuing systems designed to manage and process data asynchronously. Using simple messages, it becomes possible to define many types of queue patterns, from the straightforward solution to the more complex one like routing, publisher/subscriber and topic.
The purpose of the talk is to show how to approach the different scenarios in php, adding value to your application.
The upcoming version Plone 5.2 will support Plone 3, what does that mean for you?
When should you start to use Python 3 in your new Plone projects? When and how should you migrate existing projects to Python 3? How do you migrate addons and your custom code?
Drawing from the experience with the migration of Plone itself I'll answer all the questions that arise from moving to Python 3.
ASCII is so 1963. Nowadays, computers must support a broad range of different characters beyond the 128 we had in the early days of computing - not just accents and emojis but also completely different writing systems used around the globe. The Unicode standard packs a whopping 143,859 characters into an elegant system used by over 95% of the Internet, but PHP's string functions don't play nicely with Unicode by default, making it difficult for developers to properly handle such a wide array of possible user inputs.
In this talk, we'll explore why Unicode is important, how the various encodings like UTF-8 work under-the-hood, how to handle them within PHP, and some nifty tricks and shortcuts to preserve performance.
Spinbackup is a Cloud-to-Cloud Backup and Cloud Cybersecurity solutions provider for G Suite.
Spinbackup protects G Suite organizations against Data Leak and Loss disasters in the cloud by letting G Suite administrators to back up their sensitive data, identify security risks, and fix them before they become a huge disaster in one dashboard.
Spinbackup helps organizations gain more control and visibility over data security by providing an additional layer of protection beyond what the typical cloud service provider can offer.
This presentation gives a lot of insights into Jimdo's infrastructure that hosts 20 million websites. To enable our application developers to quickly launch and improve their services, we've created a platform called Wonderland that does all the infrastructure work them.
In this talk, I present the parts of Wonderland related to monitoring and logging. You can learn about our Prometheus setup as well as how we stream log messages from Docker to Logstash.
Azure makes substantial infrastructure capabilities available to you with just a click of a mouse, but this isn't the virtualization stack you are used to. HOSTING VP of Product Sean Brunton, will discuss the gotchas and nuances of the current Azure compute services to help you find success for production applications on Azure
Talk given at University of Applied Sciences at Krems , Austria for Master Forum 2017. Provides a rich overview of contemporary web development suitable for managers and business people.
In this talk we are going to present a preview of Spring Roo 2.0, a rewrite of the code generating tool for the development of Java web applications based on current Spring technologies like Spring Boot, Spring Data, etc.
Zend con 2016 - Asynchronous Prorgamming in PHPAdam Englander
Asynchronous frameworks allow developers to build stateful protocol and Internet of Things applications without threading and forking. Python, Ruby, and Node.js have had asynchronous frameworks for over ten years. PHP is now starting to catch up with Icicle.io. Learn the basic concepts of event-based programming and how the event loop allows a single thread to process all the requests for an application.
Puppet Camp Sydney 2014 - Evolving Design Patterns in AWSjohnpainter_id_au
A view of the past, present and future roles and architectures of Puppet Enterprise in AWS. Based on real world enterprise examples this presentation gives a in-the-trenches view of 4 key architectural patterns for Puppet Enterprise in AWS.
Architecture and demo of native integration between Puppet Enterprise and AWS Autoscaling. Dynamic autoscaled nodes are automatically signed (programatically, NOT via auto sign), and groups assigned according to AWS native metadata. Nodes are then deregistered and remove from the master as autoscale/autoheal deregisters them.
Solution 1 - Multi Master
Solution 2 - Puppet Controlling AWS - Uplift of Puppet CloudPack to support AWS, Rackspace and Joyent.
Solution 3 - Masterless puppet via AWS S3 and local apply.
Solution 4 - Puppet Enterprise natively interfacing with AWS Autoscale via the Sourced Autoscale Broker.
Solution 5 - A Scale out architecture for autoscaled PaaS platforms with Puppet Enterprise providing a compliance tier.
Nuno Job - what's next for software - ANDdigital tech summitGreta Strolyte
Nuno Job will be giving a fast paced, passionate and thought-provoking talk around the future of software. He will expand on the theme of connection, showing why team values such as: integrity, persistence and respect are essential for modern software teams.
Nuno Job (YLD, MCS) is the CEO of YLD, a top tier technology consultancy that helps London's top CIOs to respond to the Innovator's Dilemma. Previously he was Chief Commercial at Nodejitsu where he was responsible for the world's largest Node.js cloud and provided extensive contributions to the success of Node.js as an enterprise-ready technology. Nuno's formative work years were spent in the U.S. at IBM Research and MarkLogic. He is a proud Sequoia alumni and a big advocate and enabler of open-source software. Currently, he lives in London were he leads the YLD team and helps great FTSE100 transform into the best technology enterprises.
Tweet: @dscape
REST est devenu un standard pour les APIs web. Mais malgré sa popularité, il est plein de défauts. Son successeur existe et il vient de Facebook. Venez découvrir en détail le principe, la mise en oeuvre et l’écosystème de GraphQL.
Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionierenStephan Hochhaus
Vortrag vom 22.6.2023 beim Agilen Stammtisch Dortmund https://www.meetup.com/agiler-stammtisch-ruhr/events/294034979/
Entgegen der landläufigen Meinung sind viele Daten nicht immer gute Daten. Es müssen schon die richtigen sein. In dieser Ausgabe des Agilen Stammtischs beschäftigen wir uns mit der Frage, was für eine Kultur eigentlich hinter datengetriebenen Unternehmen steckt. Warum sind diese erfolgreich und wie lösen sie die technischen und organisatorischen Herausforderungen zu ihrem Vorteil?
Dabei streifen wir diverse Bereiche von Wissensmanagement über Data Mesh bis hin zu Datenstrategie und Data Governance.
Weltvermessen mit OpenDataCam - Wie ich einmal eine Viertelmillionen Autos ge...Stephan Hochhaus
Dank moderner Werkzeuge wie OpenDataCam ist Computer Vision, ein Teilbereich der KI, heute keine Raketenwissenschaft mehr. Mit ein wenig technischem Sachverstand kann man mit der Quantifizierung der Welt beginnen. Stephan Hochhaus gibt uns einen Einblick, wie man ohne Spezialkenntnisse Objekte erkennen, nachverfolgen und zählen kann. Dazu berichtet er von seinen Erfahrungen beim Zählen vor der eigenen Haustür mit einem nVidia Jetson und einer Webcam.
Agile Principles and the often cited business value are a myth to many agile practitioners. In this talk I take a look at four different aspects, starting with the epic fail of the theft of the Swedish Crown Jewels in 2018.
Little text, many pictures, good luck making sense of this one ;)
At the 11th Meteor meetup Ruhr I presented my first mobile game "Walk of Claim" for iPhone and Android. This presentation discusses the creation of the game in five acts.
In 2014, users simply expect more from web apps, developers expect less complexity.
This presentation explains, why Meteor is the next generation platform that delievers a better user experience with less development effort and shows the three main traits that help evolve programming from the dinosaur stage to the modern web.
Ansible hilft bei der Automatisierung des Configuration Managements. Welche Vorteile Ansible gegenüber manueller Installation bietet und auf welchen Grundprinzipien es aufbaut beschreibt dieser Talk.
Gehalten am 15.01.2014 bei der OpenTechSchool Dortmund.
A presentation on how to use Casper.js to test dynamic web applications build with Meteor.js.
Original presentation created with reveal.js, find the code here: https://github.com/perlmonkey/caspermeetsmeteor
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
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.
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/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
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.
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.
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.
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.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 3
Meteor - not just for rockstars
1. I S O M O R P H I C R E A LT I M E
A P P S W I T H
FA C E B O O K - Q U A L I T Y A P P S W I T H O U T FA C E B O O K ’ S M O N E Y
METE R
Stephan Hochhaus
@yauh
2. T H E R O A D S O FA R
• Applications in the browser
• JavaScript everywhere
• Overwhelming tools
3. A P P S I N T H E B R O W S E R
U S E R S E X P E C T M O R E
4. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
5. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
6. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
7. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
8. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
9. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
10. J AVA S C R I P T C O N Q U E R E D T H E S E R V E R
N O D E . J S
11. W E B D E V I S R O C K E T S C I E N C E
L A R G E T E A M S B U I L D L A R G E A P P S
15. – N I C K M A R T I N
At Meteor, we hope to democratize web app development by
empowering anyone, anywhere to create apps.
16. T H E M E T E O R S TA C K
N O T O N LY F O R R O C K S TA R S
17. T H E M E T E O R S TA C K
N O T O N LY F O R R O C K S TA R S
The Database
The Server Engine
Bunch of Libs
18. T H E M E T E O R S TA C K
N O T O N LY F O R R O C K S TA R S
The CLI Tool
The Database
The Server Engine
Bunch of Libs
19. T H E M E T E O R S TA C K
N O T O N LY F O R R O C K S TA R S
The CLI Tool
The Database
The Server Engine
Bunch of Libs
20. 1. I S O M O R P H I S M
2. S Y N C H R O N I C I T Y
3. R E A C T I V I T Y
4. S M A R T C L I E N T S
W H Y I S I T E A S Y T O L E A R N ?
21. D O C U M E N T- B A S E D D ATA B A S E S
M O N G O D B - T H E K E Y T O I S O M O R P H I S M
22. D O C U M E N T- B A S E D D ATA B A S E S
M O N G O D B - T H E K E Y T O I S O M O R P H I S M
A collection
23. D O C U M E N T- B A S E D D ATA B A S E S
M O N G O D B - T H E K E Y T O I S O M O R P H I S M
A collection
A document
Lots of fields
24. DB Server Client
SELECT name
FROM users
WHERE id = 12345
GET
http://server/users/
name/12345
var name =
response.name;
A C C E S S I N G D A TA T H R O U G H O U T T H E S TA C K
25. I S O M O R P H I C A P P L I C AT I O N S
DB Server Client
SELECT name
FROM users
WHERE id = 12345
GET
http://server/users/
name/12345
var name =
response.name;
A C C E S S I N G D A TA T H R O U G H O U T T H E S TA C K
Users.find(
{_id: 12345},
{fields:
{name : 1}
}
)
Users.find(
{_id: 12345},
{fields:
{name : 1}
}
)
Users.find(
{_id: 12345},
{fields:
{name : 1}
}
)
26. E V E N T E D A P P L I C AT I O N S N E E D C A L L B A C K S
N O D E . J S A N D T H E E V E N T L O O P
Event
queue
Event
Event
Event
Event
…
Node.js
Event Loop
Thread
pool
Disk
Network
Process
…
Single threaded
processing
Callback
split off to a
child process
27. C A L L B A C K H E L L
T H E D O W N S I D E O F N O D E J S
DB.connect(options, function(err, connection){
connection.query(something, function(err, document){
ExternalAPI.makeCall(document, function(err, apiResult){
connection.save(apiResult, function(err, saveResult){
request.end(saveResult);
});
});
});
});
28. S Y N C H R O N I C I T Y W I T H M E T E O R
T H E P O W E R O F F I B E R S
DB.connect(options, function (err, con) {
connection = con;
});
connection.query(something, function (err, doc) {
document = doc;
});
ExternalAPI.makeCall(document, function (err, res) {
apiResult = res;
});
connection.save(apiResult, function (err, res) {
saveResult = res;
});
request.end(saveResult);
29. Fiber #1
0 10 20 30 40
milliseconds
By default Meteor
creates one fiber
per client
DB.connect
Wait
(idle CPU time)
Event Loop
connection.query
ExternalAPI.makeCall
connection.save
request.end
S Y N C H R O N I C I T Y W I T H M E T E O R
T H E P O W E R O F F I B E R S
30. N O M O R E E V E N T- S PA G H E T T I S
R E A C T I V I T Y
32. R E A C T I V I T Y
Traditional programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
33. R E A C T I V I T Y
Traditional programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
•a = 5;
console.log(c);
# c is still 7
34. R E A C T I V I T Y
Traditional programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
•a = 5;
console.log(c);
# c is still 7
•c = a + b;
console.log(c);
# c is finally 10
35. R E A C T I V I T Y
Traditional programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
•a = 5;
console.log(c);
# c is still 7
•c = a + b;
console.log(c);
# c is finally 10
Reactive programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
36. R E A C T I V I T Y
Traditional programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
•a = 5;
console.log(c);
# c is still 7
•c = a + b;
console.log(c);
# c is finally 10
Reactive programming
•var a = 2;
var b = 5;
var c = a + b;
console.log(c);
# c is 7
•a = 5;
console.log(c);
# c is magically 10
37. S M A R T C L I E N T S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
38. M E T E O R C O M M U N I C AT E S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
App
Database
Server
Livequery
App
MiniDB
Client
Blaze
Tracker
HTTP
39. M E T E O R C O M M U N I C AT E S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
App
Database
Server
Livequery
App
MiniDB
Client
Blaze
Tracker
HTTP
Static assets
HTML, JS, CSS, JPG, PNG, etc
The initial request and all static resources are transferred via HTTP
40. M E T E O R C O M M U N I C AT E S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
App
Database
Server
Livequery
App
MiniDB
Client
Blaze
Tracker
HTTP
Remote Procedure Calls
Data subscriptions
DDP via WebSocket
Clients call server functions remotely via DDP
and the server returns data as JSON objects
41. M E T E O R C O M M U N I C AT E S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
App
Database
Server
Livequery
App
MiniDB
Client
Blaze
Tracker
HTTP
Remote Procedure Calls
Data subscriptions
DDP via WebSocket
Clients call server functions remotely via DDP
and the server returns data as JSON objects
LiveQuery watches for
changes and pushes
data to all subscribed
clients
42. M E T E O R C O M M U N I C AT E S
R E M O T E A P P S W I T H B I - D I R E C T I O N A L C O M M U N I C A T I O N
App
Database
Server
Livequery
App
MiniDB
Client
Blaze
Tracker
HTTP
Remote Procedure Calls
Data subscriptions
DDP via WebSocket
Clients call server functions remotely via DDP
and the server returns data as JSON objects
LiveQuery watches for
changes and pushes
data to all subscribed
clients
Tracker triggers reactive
updates, e.g. in the UI
powered by Blaze
43. C O D E & PA C K A G E S
E X T E N D I N G M E T E O R
44. C O D E & PA C K A G E S
E X T E N D I N G M E T E O R
Our code
45. C O D E & PA C K A G E S
E X T E N D I N G M E T E O R
Packages
Our code
46. I N S TA L L M E T E O R
L E T ’ S B U I L D
Linux, Mac:
$ curl https://install.meteor.com/ | sh
Windows:
https://www.meteor.com/install
47. TA L K I N G T O T H E T W I T T E R A P I
E X T E N D I N G M E T E O R W I T H O A U T H
External API
Using a
package
48. M U LT I P L E P L AT F O R M S
A S I N G L E C O D E B A S E - M A N Y D E P L O Y M E N T S
49. M U LT I P L E P L AT F O R M S
A S I N G L E C O D E B A S E - M A N Y D E P L O Y M E N T S
Server/
Client
50. M U LT I P L E P L AT F O R M S
A S I N G L E C O D E B A S E - M A N Y D E P L O Y M E N T S
Mobile
Server/
Client