Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine that allows for writing server-side code in JavaScript. It has a single-threaded, event-driven architecture that makes it efficient for data-intensive real-time applications. Some key advantages of Node.js include using JavaScript for both client-side and server-side code, high performance due to event-driven and non-blocking model, and rich ecosystem of third-party modules. Mobile web apps can be built with Node.js by using HTML5 features and JavaScript on the server and client sides.
High Performance/Real-Time Web Applications can suffer from serial program execution, which can greatly decrease user experience, usability, application capabilities and overall performance. The new HTML5 WebWorker JavaScript API allows for multithreading in browser environment, which has removed serial code bottleneck that has always been an issue for processor intensive applications. Specifically at Game Theory Labs we were able to increase the performance of our application by 55% utilizing the techniques discussed. This meetup will show off the variations in the WebWorker API, associated overhead using the API, various WebWorker architectures (Inline vs External, Static vs Dynamic, Nested vs Shared) as well as implementing a 2-Tier Thread Management system that allows for generating child process outside of the main thread thereby increasing performance of handling/merging data between threads and the main application.
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...Corey Clark, Ph.D.
As hardware developer’s push away from creating faster processors in lieu of multicore architectures game developers have to leverage multithreading technologies to capitalize on these new devices. With multicore mobile devices the need for a multithreaded web based game engine is a reality. This talk will discuss design of various multithreaded web engine architectures. Two specific threading implementations will be discussed. First technique shows how to create a static thread that is registered with the engine with the same techniques as other loaded resource. A second technique will focus on using a Thread Controller, which has the ability to create dynamic generic threads that can be passed functions during run time and process them in parallel. This also allows for coupling threaded commands together thereby creating critical sections and other common multithreading techniques utilized in C++ coding.
Focus will also be placed on design consideration and operation performance. An example will be show that demonstrates how the proper coding style and data structures can make or break your design. Also timing and performance standards will be given for various browsers so users can understand the overall overhead and operational considerations that need to be considered when using threads in a browser based environment.
Technology and capability limitations will also be discussed so developers can understand the differences between multithreading in C++ native applications and JavaScript browser-based application. This will also include some tricks on how to design an architecture that allows for some workarounds. Other JavaScript APIs such as WebGL, and WebSockets will also be discussed and demonstrated to help show the full realization of a web based game engine.
Coding samples and architectural layouts will be shown to the audience to help drive home the concepts being discussed during the lecture. A functional HTML5 JavaScript Multithreaded Web Engine will be demonstrated during the lectured to show the overall functionality and performance of the techniques described.
A summary write up of a sample engine architecture is attached in the supplemental documents that gives a brief description and architectural figures. These will be integrated into the lecture to help visualize some of the concepts being discussed.
High Performance/Real-Time Web Applications can suffer from serial program execution, which can greatly decrease user experience, usability, application capabilities and overall performance. The new HTML5 WebWorker JavaScript API allows for multithreading in browser environment, which has removed serial code bottleneck that has always been an issue for processor intensive applications. Specifically at Game Theory Labs we were able to increase the performance of our application by 55% utilizing the techniques discussed. This meetup will show off the variations in the WebWorker API, associated overhead using the API, various WebWorker architectures (Inline vs External, Static vs Dynamic, Nested vs Shared) as well as implementing a 2-Tier Thread Management system that allows for generating child process outside of the main thread thereby increasing performance of handling/merging data between threads and the main application.
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...Corey Clark, Ph.D.
As hardware developer’s push away from creating faster processors in lieu of multicore architectures game developers have to leverage multithreading technologies to capitalize on these new devices. With multicore mobile devices the need for a multithreaded web based game engine is a reality. This talk will discuss design of various multithreaded web engine architectures. Two specific threading implementations will be discussed. First technique shows how to create a static thread that is registered with the engine with the same techniques as other loaded resource. A second technique will focus on using a Thread Controller, which has the ability to create dynamic generic threads that can be passed functions during run time and process them in parallel. This also allows for coupling threaded commands together thereby creating critical sections and other common multithreading techniques utilized in C++ coding.
Focus will also be placed on design consideration and operation performance. An example will be show that demonstrates how the proper coding style and data structures can make or break your design. Also timing and performance standards will be given for various browsers so users can understand the overall overhead and operational considerations that need to be considered when using threads in a browser based environment.
Technology and capability limitations will also be discussed so developers can understand the differences between multithreading in C++ native applications and JavaScript browser-based application. This will also include some tricks on how to design an architecture that allows for some workarounds. Other JavaScript APIs such as WebGL, and WebSockets will also be discussed and demonstrated to help show the full realization of a web based game engine.
Coding samples and architectural layouts will be shown to the audience to help drive home the concepts being discussed during the lecture. A functional HTML5 JavaScript Multithreaded Web Engine will be demonstrated during the lectured to show the overall functionality and performance of the techniques described.
A summary write up of a sample engine architecture is attached in the supplemental documents that gives a brief description and architectural figures. These will be integrated into the lecture to help visualize some of the concepts being discussed.
Developing realtime apps with Drupal and NodeJS drupalcampest
Based on Google's V8 JavaScript engine, NodeJS is a fairly new platform for creating scalable and real-time web applications. I will introduce you to NodeJS internals and ecosystem as well as exaplain why and how you can use Node in your Drupal based projects.
Node.js is a server-side JavaScript environment that uses an asynchronous event-driven model. Here you will find 8 best time-tested Node.js file system tools, which are amply used by Node.js developers. You’ve come to the right place if you are going to streamline routine tasks related to a file system.
In this article, I’d like to tell you about 7 Node JS project ideas that will help you train your skills, build an impressive portfolio, and get hired.
For some time, I’m publishing the lists of projects that you can use to practice the coding skills that you’ve just learned. I was focusing mostly on frontend technologies, but today I decided to jump to the Javascript backend framework called Node JS.
The Dark Side of Single Page ApplicationsDor Kalev
The story of all the pitfalls we had while transferring FTBpro.com from the good old web to a Backbone single page application... and all the great solutions we've came up with
현시대의 자바스크립트가 개발자들에게 주는 피로함은 과연 어디서부터 출발했을까?
2015년 부터 자바스크립트의 피로감은 너무 극에 달했다고 생각했고 그 시작은 과연 어디서부터 왔는지 이 피로감의 끝은 어딜지 지난 과거의 역사와 현시대가 그 욕구를 반영하는 과정에서 자바스크립트 개발자가 알아야 할 이야기들을 자세히 정리해 봤습니다.
발표시간: 40m (80m 이 적당)
#feconf 2017
A quick overview on Node.js to see how Javascript is changing server programming : brief history & motivations, what makes NodeJS so special/popular/difficult, typical use cases, and a few popular tools around the NodeJs world : npm, Grunt, IISNode, Tools for Visual Studio, …
Node.js is an exciting platform that has been increasing in popularity for the past few years. It offers a server side JavaScript programming model ideal for building highly scalable and performant network applications whether on premise or in the cloud. In this talk we will take a look at various options for building and deploying Node applications on Microsoft Azure. This session is how to useAzure SQL Databse and Azure Storage with Node.js
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...Tech in Asia ID
Simon is a JavaScript enthusiast who enjoys React, Node, mobile, web, UI/UX and loves building great product. Founder, traveller, father. Previously at Facebook California. Originally from Kansas City. Currently founder and CTO of KodeFox, a team of passionate developers crafting beautiful software for startups. Simon enjoys meeting awesome people, exploring new tech, visiting exciting places and collaborating on great ideas. Also enjoys watching cartoon space adventures with his 2.5 year old son.
This slide was shared at Tech in Asia Product Development Conference 2017 (PDC'17) on 9-10 August 2017.
Get more insightful updates from TIA by subscribing techin.asia/updateselalu
Troubleshooting Java applications has the reputation of a dark art and is often compared to finding the needle in a haystack. Using tools bundled with the JDK and the OS, a few open source packages and lightweight approaches can help you zero in on a some common scenarios. We will explore working with local and remote JVMs, the myriad of startup flags, analyzing and correlating thread dumps with cpu consumption, system vs application level instrumentation, considerations for multi-tenant JVMs, getting around in an unfamiliar production environment and if we don’t forget, memory games.
If you could use more visibility into your Java application during development and production runs this talk is filled with practical tips, from the high level to the gritty details.
Developing realtime apps with Drupal and NodeJS drupalcampest
Based on Google's V8 JavaScript engine, NodeJS is a fairly new platform for creating scalable and real-time web applications. I will introduce you to NodeJS internals and ecosystem as well as exaplain why and how you can use Node in your Drupal based projects.
Node.js is a server-side JavaScript environment that uses an asynchronous event-driven model. Here you will find 8 best time-tested Node.js file system tools, which are amply used by Node.js developers. You’ve come to the right place if you are going to streamline routine tasks related to a file system.
In this article, I’d like to tell you about 7 Node JS project ideas that will help you train your skills, build an impressive portfolio, and get hired.
For some time, I’m publishing the lists of projects that you can use to practice the coding skills that you’ve just learned. I was focusing mostly on frontend technologies, but today I decided to jump to the Javascript backend framework called Node JS.
The Dark Side of Single Page ApplicationsDor Kalev
The story of all the pitfalls we had while transferring FTBpro.com from the good old web to a Backbone single page application... and all the great solutions we've came up with
현시대의 자바스크립트가 개발자들에게 주는 피로함은 과연 어디서부터 출발했을까?
2015년 부터 자바스크립트의 피로감은 너무 극에 달했다고 생각했고 그 시작은 과연 어디서부터 왔는지 이 피로감의 끝은 어딜지 지난 과거의 역사와 현시대가 그 욕구를 반영하는 과정에서 자바스크립트 개발자가 알아야 할 이야기들을 자세히 정리해 봤습니다.
발표시간: 40m (80m 이 적당)
#feconf 2017
A quick overview on Node.js to see how Javascript is changing server programming : brief history & motivations, what makes NodeJS so special/popular/difficult, typical use cases, and a few popular tools around the NodeJs world : npm, Grunt, IISNode, Tools for Visual Studio, …
Node.js is an exciting platform that has been increasing in popularity for the past few years. It offers a server side JavaScript programming model ideal for building highly scalable and performant network applications whether on premise or in the cloud. In this talk we will take a look at various options for building and deploying Node applications on Microsoft Azure. This session is how to useAzure SQL Databse and Azure Storage with Node.js
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...Tech in Asia ID
Simon is a JavaScript enthusiast who enjoys React, Node, mobile, web, UI/UX and loves building great product. Founder, traveller, father. Previously at Facebook California. Originally from Kansas City. Currently founder and CTO of KodeFox, a team of passionate developers crafting beautiful software for startups. Simon enjoys meeting awesome people, exploring new tech, visiting exciting places and collaborating on great ideas. Also enjoys watching cartoon space adventures with his 2.5 year old son.
This slide was shared at Tech in Asia Product Development Conference 2017 (PDC'17) on 9-10 August 2017.
Get more insightful updates from TIA by subscribing techin.asia/updateselalu
Troubleshooting Java applications has the reputation of a dark art and is often compared to finding the needle in a haystack. Using tools bundled with the JDK and the OS, a few open source packages and lightweight approaches can help you zero in on a some common scenarios. We will explore working with local and remote JVMs, the myriad of startup flags, analyzing and correlating thread dumps with cpu consumption, system vs application level instrumentation, considerations for multi-tenant JVMs, getting around in an unfamiliar production environment and if we don’t forget, memory games.
If you could use more visibility into your Java application during development and production runs this talk is filled with practical tips, from the high level to the gritty details.
The micro-service architecture has changed the game for software
development. It provides the first scalable, effective component model
for software systems. By embracing the organic, dynamic and chaotic
nature of micro-services, you can built fault-tolerant, scalable and
reactive systms.
But there is a dark side. Things can get out of control very quickly.
As the number of micro-services, and messages and interactions between
them grow, how do you keep control? How do you retain understanding of
the system? How can you offer any commitments about its behaviour to
your CEO?
The answer is to embrace the complexity of the system, and recognize
that it has emergent properties. Rather than auditing and tracking
technical behaviour, measure the behaviour you care about, the
business outcomes. This allows you to understand the effects of new
deployments and failures at the right level.
Enterprise software teams are starting to understand and embrace the
power of Node.js. They face a serious challenge: integrating Node.js
into the legacy systems they maintain, and migrating these system over
time into Node.js architectures. This talk is a pathfinder for those
facing this task. As a community we must proactively engage with the
Java and .Net communities, and create a deeper understanding of the
"Node.js Way".
“Node's goal is to provide an easy way to build scalable Network programs”
Asynchronous i/o framework
Core in c++ on top of v8
Rest of it in javascript
Swiss army knife for network Related stuffs
Can handle thousands of Concurrent connections with Minimal overhead (cpu/memory) on a single process
It’s NOT a web framework, and it’s also NOT a language
• Created by Ryan Dahl in 2009
• Development && maintenance sponsored by Joyent
• License MIT
• Last release : 0.10.31
• Based on Google V8 Engine
• +99 000 packages
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularMark Leusink
Slides from my ICON UK 2014 session held on September 13, 2014 at IBM Southbank, London.
The session was an introduction to the MEAN stack (Mongo, Express, Angular and Node).
Presentation slide from Sept 29 2016 Sacramento Web Developer Meetup: High level overview of what is Docker, why it's useful, and how you can use it in your own development workflow. Getting started demonstration with code samples to help you get started in Docker.
Since its first appearance in 2009, NodeJS has come a long way. Many frameworks have been developed on top of it. These all make our task easy and quick. It is us who need to decide which one to choose? So, here is the list of top 10 NodeJS frameworks that will help you build an awesome application.
Using RAG to create your own Podcast conversations.pdfRichard Rodger
The presentation on "Retrieval Augmented Generation for Interactive Podcasts" outlines a method to transform podcast audio into interactive chat interfaces. It covers the design, coding, and practical aspects of using Retrieval Augmented Generation (RAG) to emulate podcast guest responses. The project involves processing a significant volume of podcast data, including episodes, transcripts, and metadata.
The technical discussion focuses on ingesting audio and metadata into an AI system and querying it for conversational responses. Key concepts introduced include vector embedding, which converts text to conceptual vectors using models, and the application of Large Language Models (LLMs) with Transformer architecture for context understanding.
The coding segment details microservice messages for transcript ingestion and chat functionalities, employing transcription services, embedding techniques, and vector storage solutions. Challenges in RAG project deployment are also discussed, highlighting performance, quality, regressions, and managing expectations.
The presentation concludes by contrasting technical complexities with a philosophical vision of AI's potential, inspired by speculative fiction, suggesting a future where AI capabilities vastly exceed human cognitive functions. Further resources and open-source implementations are provided for those interested in the technical development of interactive podcast systems
The presentation addresses the challenges developers face with APIs, such as the diversity in authentication methods, SDKs, and the steep learning curve for each new API. The key proposition is to approach API interactions through an ORM-like abstraction, treating APIs as databases to simplify CRUD operations and action commands.
The core idea revolves around treating everything as a message, leveraging microservices as modular, independent components that communicate through these messages. This approach enables a uniform way to interact with various APIs by encapsulating the complexities behind simple, standardized message formats. The example provided illustrates how updating a GitHub repository's description can be abstracted into a message, streamlining the process.
This methodology promotes a component-based architecture where microservices, defined by their ability to handle specific message patterns, can be composed to achieve more complex functionalities. The presentation outlines how this model can be applied to the GitHub API, transforming traditional API calls into message-driven interactions, thereby achieving a higher level of abstraction and simplicity.
The benefits of this approach include a unified interface for API calls, reduction in the reliance on multiple SDKs, and the facilitation of "pure" business logic that focuses on entity manipulation rather than the intricacies of API communication. The presentation concludes with practical considerations for implementation, such as handling logistics and edge cases, and offers resources for further exploration, emphasizing the philosophy of reducing unnecessary complexity in software design.
This presentation shares the journey of voxgig, a Software-as-a-Service platform for conference exhibitors, and its strategic decision to adopt microservices from the outset. The narrative unfolds with an exploration of how a small, remote team can build a significant platform, detailing a development timeline that spans from initial exploration to platform launch, all structured around microservices.
The architecture of voxgig is dissected to reveal two pivotal tactics: Transport Independence and Pattern Matching, which collectively enable emergent design within the microservices ecosystem. These concepts are expanded to illustrate their role in facilitating service distribution, extension, specialization, and composition, laying the groundwork for a robust microservice architecture.
Despite aspiring to an ideal microservice structure characterized by clean separation between client, application, and core data layers, practical challenges lead to a more organic coding approach, often necessitating later technical debt repayment. The evolution of voxgig's architecture culminates in a diverse ecosystem of 65 Node.js services, enriched by a detailed statistical analysis highlighting service size, age, quality, and the overarching message patterns that constitute the system's backbone.
Key lessons emerge from voxgig's experience, underscoring the complexity of UX design, the importance of adhering to one's methodologies, and the value of investing time in a robust core system. Insights into operational efficiencies, such as service bundling for cost savings and the indispensability of a message REPL, are shared. The presentation concludes by emphasizing the critical role of components within the microservices framework, advocating for system-wide operability in a single process locally and the pragmatic use of synchronous messages for the majority of use cases, all while championing the concept of microservices as fundamental components of a scalable, agile architecture.
This presentation delves into the mathematical principles underpinning microservices, drawing inspiration from historical numeral systems to illustrate the significance of adopting efficient mental models in software architecture. By contrasting the complexities of Roman numerals with the streamlined Indian numerical system, the talk sets the stage for rethinking software design through an algebraic lens, where microservices are seen as algebraic functions transforming inputs to outputs, akin to CRUD operations.
The core idea revolves around conceptualizing microservices as operations on messages, ensuring seamless service integration within complex systems through transport independence and pattern matching. This approach fosters a loosely coupled architecture where services communicate based on message content rather than direct identities, enhancing system flexibility and scalability.
Practical examples, including the development of a Node.js module search engine, demonstrate the application of these concepts, showcasing the ease of system expansion and modification when services are designed to interact through a message-driven paradigm. The presentation concludes by underscoring the benefits of this methodology, such as increased system adaptability, easier management of technical debt, and a more granular approach to system evolution, advocating for a shift towards viewing microservices as integral components of a coherent and scalable system architecture.
In this thought-provoking session at mucon London 2018, the dialogue revolves around the foundational premise that microservices should be embraced from the inception of a project, irrespective of the organization's size, from startups to established enterprises. The discussion opens with a candid acknowledgment of the inherent challenges in software engineering across the board, probing into the reasons behind the perceived complexity of software development, our collective penchant for perfection, and the frequent overemphasis on process over product.
The narrative then shifts to a more philosophical perspective, positioning microservices as the optimal intersection of psychological comfort and engineering pragmatism, conceptualized as units of quality, trust, and business logic encapsulation. This conceptual framework underpins a series of tactical recommendations, advocating for a message-centric approach to system design, where the delineation between monoliths, microservices, and serverless architectures blurs in favor of seamless communication and interoperability.
Practical advice is offered on tackling the 'general case' in system design, encouraging the development of specialized services for outlier scenarios and promoting adaptability to change. However, this approach is not without its trade-offs, sparking a debate on the merits and pitfalls of repository strategies and the double-edged sword that is Kubernetes, juxtaposed against the benefits such as finely segmented technical debt, deferred decision-making, and the capacity to scale rapidly without extensive cross-team coordination.
The session concludes on a reflective note, inviting attendees to explore further resources such as senecajs.org and "The Tao of Microservices", leaving the audience with a nuanced understanding of microservices as not just a technological choice, but a strategic framework for building resilient, adaptable, and business-aligned software ecosystems.
This presentation introduces a systematic approach to designing microservices using a visual language, beginning with the identification of requirements and distillation into messages that dictate service interactions. The methodology is illustrated through the process of developing a user registration system, breaking down the requirements into discrete messages like 'register-user' and 'confirm-email', which in turn inform the design of specific services handling registration and email confirmation.
The discussion extends to the temporal and functional dynamics of microservice interactions, differentiating between synchronous and asynchronous, as well as consumed and observed messages, using a unique visual lexicon where hexagons represent microservices, solid and dashed lines denote synchronous and asynchronous communications, and arrow styles distinguish between message consumption and observation.
The narrative further concretizes these concepts by outlining the design of a Node.js module search engine, showcasing how business requirements translate into a network of microservices handling search, indexing, and module detail presentation. The intricate web of service interactions is depicted through the visual language, demonstrating how services like 'web', 'search', 'npm', and 'github' collaborate through well-defined message patterns.
By the conclusion, attendees are equipped with a versatile framework for microservice design, capable of transforming complex system requirements into clear, manageable service components, as exemplified by the 'nodezoo' search engine project. This methodological approach not only clarifies the architecture of microservices systems but also facilitates their scalability, maintainability, and evolution over time.
This presentation delves into the intricate balance of risks and rewards in adopting microservices architecture, drawing parallels between complex systems failures, like the Three Mile Island nuclear incident, and potential pitfalls in software systems. It underscores the inherent risk in systems composed of multiple dependent components, highlighting how increased component count amplifies failure likelihood, challenging the conventional wisdom that redundancy can safeguard against systemic flaws due to homogeneity in components.
The discourse shifts to pragmatic strategies for managing deployment risks in microservices environments, advocating for frequent, low-impact deployments to mitigate the consequences of inevitable errors, as opposed to infrequent, high-stakes updates. The speaker presents microservices as a solution that simplifies deployments by isolating changes to individual components, thereby enhancing system reliability. The emphasis is placed on monitoring message flow rates as vital indicators of system health, with various microservice patterns like Actor, Subscriber, Chain, and Tree explored to illustrate message distribution dynamics.
The presentation concludes with practical deployment strategies like Canary and Progressive Canary releases, along with the concept of "Bake" deployments to incrementally expose new features, using these methods as risk measurement tools within the continuous delivery pipeline. The talk encourages embracing measured, data-driven approaches and automation to navigate the complexities of microservice deployments effectively, ensuring that technology adheres to the unforgiving principles of reality over theoretical perfection.
Title: Rethinking Service Discovery in Microservices Architecture
Description:
This presentation delves into the microservices architectural pattern, emphasizing the importance of service discovery in a landscape where services operate under the illusion of being solitary entities in the system. The discussion begins with an overview of microservices — small, independent processes that communicate through messages, which collectively contribute to a robust component model facilitating rapid development, continuous delivery, and the mitigation of technical debt.
The core of the talk addresses the complexities and unconventional programming models introduced by microservices, particularly focusing on the challenge of service-to-service discovery. Various strategies for service discovery are explored, including the use of configuration files, intelligent load balancing, service registries, DNS, and the necessity of a message bus. The concept of service discovery is then critically examined, proposing a paradigm shift towards pattern matching, where services interact based on message patterns rather than service identities. This approach advocates for transport independence, blind messaging, and a peer-to-peer model, where services maintain a local worldview, updated dynamically as services fluctuate. The presentation concludes by introducing the SWIM algorithm, an infection-style process group membership protocol designed for scalability and weak consistency, exemplified through a practical implementation in a Twitter clone built with 14 microservices.
Explore the cutting-edge capabilities of Vespa.ai, the open-source search engine pioneered by Yahoo, now a cornerstone for developers and data scientists seeking enhanced search and analytics functionalities. This session delves into the integration of machine learning to elevate search accuracy and user experience, achieving a fine balance between precision and recall. Participants will gain insight into Vespa.ai's evolution towards a cloud-based, analytics-focused platform, offering extensive configurability for Java aficionados and seamless incorporation of database-free text search capabilities.
The presentation further highlights the operational advantages and development efficiencies of Vespa.ai, including its compatibility with major big data technologies, automatic load distribution, and scalable deployment options. Attendees will leave with a comprehensive understanding of leveraging Vespa.ai for sophisticated, personalized search solutions within their own applications or platforms.
This talk is an appeal to server-side JavaScript developers to make
use of this time of change - Node.js is going to become the primary
server-side platform for most developers. We can move forward from
the old way of building web apps as large inter-locking co-dependent
code bases.
The Node.js module system has shown us the way. It's the first
step. Now, we need to use the beauty of Node modules to help us build
robust, scalable apps.
This approach is called the Micro-Services Architecture. It's more
than just having some services with HTTP end-points. It's about taking
this to the extreme. Everything is a service, and no service is larger
than 100 lines of code.
We've been using this approach for most of our projects for the last 18
months and it works really well. We get to drop loads of
project management ceremony. There will be some customer war stories.
Richard rodger technical debt - web summit 2013Richard Rodger
The only way developers can finish projects on-time and under-budget is by taking on Technical Debt. Taking shortcuts, using quick fixes, and writing unmaintainable code builds up a technical debt that get the project delivered today. Tomorrow, there will be a reckoning, as development costs spiral and progress grinds to a halt. This talk helps you embrace the debt, love the cowboys, and gives you a way to make repayments.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
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.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
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/
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
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
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.
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.
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.
Search and Society: Reimagining Information Access for Radical Futures
20120802 timisoara
1. Node.js
&
Mobile Apps
Richard Rodger
@rjrodger
nearform.com
2. •Why should you use Node.js?
•Node.js basics
•Lessons from a real world project
3. nodejs.org
• Code in JavaScript on the server
• Built using Chrome V8 Engine - so it's really fast!
• Everything is event-based; there are no threads
4. Node.js Web Server
var http = require('http');
var server = http.createServer( function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'})
res.end('Hello Worldn')
});
server.listen(80, '127.0.0.1');
console.log('Web server running at http://127.0.0.1:80');
14. Mobile
Hybrid Native
Web
HTML5/JS Gotta learn 'em all*
HTML5/JS
15. Mobile Web Apps
• Web Pages built using HTML5 features:
• Canvas for drawing
• In-built Video and Audio
• Geolocation
• Web Sockets
• Local Storage, Local Caching
• CSS3 transitions (not really HTML5)
• Use JavaScript as main programming language
ft.com business
• Designed for Touch Interfaces
post.ie
• Smart phone or Tablet form factors
• Don’t use Hover effects, instead convey touch affordance using 3D styling
• Dynamic single page apps. Changes are made to the HTML rather than loading
new pages.
18. Node.js and Mobile
nginx Node.js
• nginx
• high performance web server
• serves static resources: test files, images
• proxies requests through to Node.js app server
• Node.js
• high performance server-side JavaScript
• Executes business logic and database queries
19. • Runs high-performance server-side JavaScript
• open source, sponsored by joyent.com
• Uses the Google Chrome V8 engine
• just-in-time compilation to machine code
• generation garbage collection (like the Java JVM)
• creates virtual “classes” to optimise property lookups
• Has a well-designed module system for third party code - very
effective and simple to use
• Your code runs in a single non-blocking JavaScript thread
• That’s OK, most of the time you’re waiting for database or
network events
22. Working with Events
var http = require('http');
var server = http.createServer();
server.on( 'request', function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'})
var echo = ''
req.on('data',function(chunk){
echo += chunk
})
req.on('end', function(){
res.end( echo+'n' )
})
req.on('error', function(err){
res.end( "error: "+err )
})
})
server.listen(80, '127.0.0.1');
console.log('try: curl http://127.0.0.1 -d hello');
23. What does the core API give you?
Q
basics:
file system, ...
9
control:
events, streams, buffers...
g
networking:
sockets, DNS, ...
„
web server:
HTTP handling, ...
24. Node.js modules are so cool
• Easy syntax
• var moduleAPI = require("modulename");
• Central repository
• npmjs.org
• Easy command line install
• npm install modulename
• No version conflicts!
• intelligent dependency management
• Declarative project description
• package.json file goes into project root folder
25. Some important modules
(find them on npmjs.org or github.com)
• connect
• HTTP middleware infrastructure - requests pass through layers
• express
• JSP/ASP style dynamic server-side pages
• underscore
• same as client-side library! provides functional utilities: map, reduce, ...
• socket.io
• HTML5 real-time web sockets that "just work" - includes client-side API
• request
• easy outbound calls to web services
26. Node.js is It doesn't
overhyped matter
• Not a clear winner against • Chrome V8 Engine means
Node.js is "Good Enough"
other event servers on speed
• Asynchronous code is harder • JavaScript means almost all
libraries are asynchronous, unlike
than synchronous code other event servers
• No, you wont re-use much • JavaScript is a local maximum and
code between client and you're stuck with it
server
• Same language on client and
server makes your brain happy
• Memory can still leak
• Compile to JavaScript if you really
• It's not a mature platform hate the language
28. Web
Mobile Cloud
Services
Web Apps Services
API
Mobile & REST &
Database
Tablet Web JSON
Mobile & Horizontal Third Party
Tablet Apps Scale Services
Desktop Cloud
Monitoring
Web Hosted
29. Client-side
Router #! URLs
• Common code-base
• even for hybrid apps!
Models Data, biz logic
• backbone.js
• shims for weak browsers
Views DOM Layout
• browser-targeting: user-
agent & capabilities
• responsive layout
(mostly)
Helpers Shared code
30. Server-side
map /api/ URLs • nginx & Node.js
Router
to functions • Small code volume
API function( req, • Third party modules:
functions res ) { ... } • connect
Shared code
• express
Helpers (some with client) • seneca (my db layer)
Open source
• Deploy with:
Modules heavy-lifting • sudo killall node
32. Third Party Integration
JSON, XML, simple form data, text files, ...
... all easy using JavaScript and Node.js Modules
Analytics Twitter E-Commerce
In-App
Logging Facebook
Purchasing
Email LinkedIn Stock Feed
33. Native Apps
Same code as mobile web versions, ...
... wrapped using PhoneGap to run natively
... plus some native plugins
36. Lesson:
multi-platform client-side JavaScript is really hard
• a framework is a must • code against ECMA, use shims
to support older browsers
• backbone.js • Code/Test/Debug inside Safari
• business logic must be in • phonegap.github.com/weinre
common code for hard to reach places
• browser-specific code • use error capture in production
• virtual .js files • Finally, use a simple static site as
a fallback (also for Googlebot)
• use jshint to keep IE happy
37. Lesson:
multi-platform HTML/CSS is really hard
• "structured" CSS is a must • Clean, semantic HTML is not
optional
• sass or less • graceful degradation may
• Be happy with require radically different CSS
• media queries • 100% "Responsive" design is
tough
• CSS3 transforms • Responsive within browser
subsets has higher reward/
• browser-specific code effort
• virtual .css files
38. Lesson:
the app stores are not web sites
• that bug in version 1... • you can't deploy hot fixes
• will take two weeks to • make everything
fix via an update configurable!
• some users will never • All prices, text, host
update names, urls, ...
• appears after an OS • On launch, app "checks-in"
update for new configuration
• this will save your life
39. Lesson:
Node.js does what it says on the tin
• High performance • callback spaghetti is not a
problem in practice
• High throughput
• Low CPU usage • use functional style
• Constant memory usage • client-side code is far
more difficult
• leaks will kill, but then • Don't do CPU intensive stuff
• < 100ms startup time • ... there's a warning on
• means you may not the tin!
notice!
40. Lesson:
Outsource your database
• Remote MongoDB • Big productivity gain
hosting
• no production tuning
• mongohq.com • no configuration
• No downtime • no cluster set up
• Backups
• Low latency (in Amazon)
• Web-based admin (if lazy)
41. Node.js means Rapid Development
* Bruno Fernandez-Ruiz
http://www.olympum.com/architecture/the-
nodejs-innovation-advantage/
42. My Company
Mobile Apps + Node.js
My Book
richardrodger.com
Richard Rodger
@rjrodger
nearform.com