OneTeam Media Server is a Flash compliant server written in Erlang. This presentation has been made at Erlang Factory conference in San Francisco - 30 april 2009
This presentation describes progress on ProcessOne new product, OneTeam Media Server. This is a Flash Media Server used to write interactive, collaborative and real time Flash applications.
The presentation given at MSBTE sponsored content updating program on 'Advanced Java Programming' for Diploma Engineering teachers of Maharashtra. Venue: Guru Gobind Singh Polytechnic, Nashik
Date: 22/12/2010
Session: Java Network Programming
This presentation describes progress on ProcessOne new product, OneTeam Media Server. This is a Flash Media Server used to write interactive, collaborative and real time Flash applications.
The presentation given at MSBTE sponsored content updating program on 'Advanced Java Programming' for Diploma Engineering teachers of Maharashtra. Venue: Guru Gobind Singh Polytechnic, Nashik
Date: 22/12/2010
Session: Java Network Programming
Network programming in java - PPT with Easy Programs and examples of Java InetAddress Class and java socket programming example.
Learn more @ http://java2all.com/technology/network-programming
We code a RGB LED light on the Arduino board and a breadboard on which we switch off or on the light by a browser on an android device with our own web server and their COM protocols.
This is all about socket programming in java using TCP and UDP socket and an example of simple Echo Server.
Also includes concepts of the socket, Socket class and methods and use of those.
The Arduino is what is known as a Physical or Embedded Computing platform, which means that it is an interactive system that through the use of hardware, firmware and software can interact with its environment.
Network programming in java - PPT with Easy Programs and examples of Java InetAddress Class and java socket programming example.
Learn more @ http://java2all.com/technology/network-programming
We code a RGB LED light on the Arduino board and a breadboard on which we switch off or on the light by a browser on an android device with our own web server and their COM protocols.
This is all about socket programming in java using TCP and UDP socket and an example of simple Echo Server.
Also includes concepts of the socket, Socket class and methods and use of those.
The Arduino is what is known as a Physical or Embedded Computing platform, which means that it is an interactive system that through the use of hardware, firmware and software can interact with its environment.
Iphone client-server app with Rails backend (v3)Sujee Maniyam
Some of the lessons learned from building a client-server iphone app (DiscountsForMe)
This is version 3 of the talk, presented at SF Ruby Meetup on Feb 17, 2010
Design an Implementation of A Messaging and Resource Sharing Softwarenilabarai
In this article it has been looked how to program using sockets by implementing an echo server along with a client that is used to send and receive string messages. It will start off by giving a quick introduction to TCP/IP fundamentals and then explain how sockets fit into the diagram. Most network application can be divided into two pieces: a client and a server. A client is the side that initiates the communication process, where as the server responds to incoming client requests. There would be contains three types of service from this software, that is Message Transfer service, Voice Transfer service and File Transfer service. All this sorts are the design issue of this software.
Go for Real Time Streaming Architectures - DotGo 2017Mickaël Rémond
Streaming applications are at the core of realtime information system. With microservices streaming components are becoming increasingly important.
With the rise of cloud architecture, it is now easier and more elegant to use Go to write realtime high-performance components for streaming architecture than to use traditional tools.
Mickaël explains what are streaming architectures and demonstrates the benefits of using Go to build such platform.
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Mickaël Rémond
Mickaël Rémond présente l'implementation d'une application de chat simple sur le web à l'aide de Phoenix Presence.
Pour réaliser cette application d'exemple, une migration de Phoenix vers Phoenix 1.2 a été effectuée. Toutes les étapes de la migration sont présentés et peuvent aider les développeurs a effectuer les bonnes étapes pour mettre à jour leur application Phoenix.
Building Scalable Systems: What you can learn from Erlang - DotScale 2016Mickaël Rémond
Here are the slides from my talk at DotScale 2016 conference.
Erlang is a programming language dedicated to building robust and scalable services.
It has matured for many years and finally reached a point where it is one of the secret weapon used by many prominent companies.
To help you understand Erlang, I am going to walk you through old programming concepts that are at the root of Erlang using … A time machine !
Property-based testing of XMPP: generate your tests automatically - ejabberd ...Mickaël Rémond
Thomas Arts, from Quviq AB, introduces property-based testing from his work on ejabberd XMPP server.
The talk explains how Quickcheck testing approach can help find bugs in ejabberd and improved the range (and the creativity) of the test cases
covered.
Quviq is the company being Erlang Quickcheck property-based tool.
The video was recorded at ejabberd Advanced Erlang Workshop in Paris.
You can watch the talk online: https://youtu.be/BYU8sPdg41o
IoT Studio #1: Protocols introduction and connected jukeboxMickaël Rémond
This is the slides ProcessOne IoT Studio session #1.
At the core of the discussion is an introduction to Internet of Things protocols.
Here are the topics / questions that I have been addressing:
- What are the main classes of protocols for the Internet of Things ?
- What are the strengths of XMPP for the Internet of things ?
- What are the main XMPP Extensions for building the Internet of Things ?
- How can I leverage XMPP to build a real device / appliance ?
As such, the session ends with a hands-on demonstration of a Soundcloud connected Jukebox built with:
- Raspberry Pi 2
- Connected to ejabberd
- Client is developed in Go using Go XMPP library Gox
Video of the session is available on Youtube: https://www.youtube.com/watch?v=YtommTbCxCc
Deep Dive Into ejabberd Pubsub ImplementationMickaël Rémond
Christophe Romain goes into the details of ejabberd Pubsub implementation. He explains the Pubsub plugin systems and how to leverage it to optimize ejabberd Pubsub for your own use cases.
This talk will teach you how to get more performance and scalability from your Pubsub implementation.
During this XMPP academy session I talk about Google and Apple Push Notifications, XEP-0357, Websockets, XMPP playground and Message Archiving.
Full session can be seen on Youtube: https://www.youtube.com/watch?v=LToKLTf-N_E
During this XMPP academy session I talk about ejabberd architecture, Data backends, show how to learn XMPP the proper, explains message carbons and MUC limitations.
Full session can be seen on Youtube: https://youtu.be/SbpFgdryyIA
This is the slide deck for ProcessOne first live XMPP Academy.
Here are the questions covered:
1. ejabberd SaaS architecture questions
- What is the best way to archive user messages if we do not want to sync data from user device?
- Why does ejabberd SaaS not use async mechanisms for archiving messages to customer back-end server?
- Mobile XMPP support: Explain standby, push and detached modes.
2. XMPP / ejabberd questions
- How does ejabberd internally store messages which are not yet delivered?
- How are privacy lists managed in ejabberd?
- What is on the ejabberd roadmap ? OAuth !
Archipel Introduction - ejabberd SF MeetupMickaël Rémond
This is slide deck for talk given by Archipel Project Team, with Nicolas Ochem as speaker. It introduces the concept behind Archipel, a solution to manage and supervise virtual machines based on XMPP.
A vision for ejabberd - ejabberd SF MeetupMickaël Rémond
This is Mickaël Rémond presentation from ejabberd San Francisco Bay Area Meetup in march 2015. He presents latest achievements and progress made on ejabberd during the last few months. He then share his vision about the next steps to bring ejabberd XMPP platform to the next level.
This presentation is about the use of XMPP at the heart of internet scale push solutions, from mobile to web notification, including appliance use.
This is also the original announcement of ProcessOne Push Platform (P1PP).
Real time Web Application with XMPP and WaveMickaël Rémond
This is the slide of my talk given at Erlang Factory 2010 in San Francisco. It introduces XMPP, Wave and ProcessOne Wave server implementation, to build realtime web collaborative platform.
Geoff Cant Whitelabel Erlang covers the trials, tribulations and technologies used in building a whitelabel ejabberd hosting service.
The talk explains the rationale behind the choices of web server, templating system, email module, page optimizers and other web framework components. The talk also covers the documented and undocumented DNS query and caching modules in OTP and introduces 'dns' - a convenient new API for using them. Finally, the talk describes some tips and tricks useful for whitelabel hosting solutions that require customer DNS updates.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
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.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
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.
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.
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.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
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
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.
3. ProcessOne: An Erlang company
20 people, most of them Erlang developers
Lots of Erlang Veterans (Two «Erlang User of the Year !»)
Focusing on software development and technology for which Erlang is a
good fit.
World wide customer base: We are spreading Erlang use all around the
world.
Main customers base:
Social networks
Carrier / Telco
5. Software products: ejabberd
Instant messaging platform based on the open XMPP protocol.
Open source software. Lots of example of Erlang code.
Largely used in the world and usefull to convert developers to Erlang and
gain mind share.
About 40% market share of the public XMPP known domains.
Known for its clustering, scalability and hackability (easy to extend, live code
update)
Very large deployment in production
Require some know-how to reach large scale, but strongly supported solution
by ProcessOne
Very large development community
6. Software products: Tsung
Highly scalable benchmark tool: Can easily simulate lots of users on a cluster
(hundreds of thousands)
Many supported protocols:
HTTP/HTTPS
XMPP
Postgres
LDAP
...
Extensible: You can add new protocols.
Strong support by ProcessOne.
8. OneTeam Media Server
This is a Flash server, designed to develop connected Adobe Flash client
applications.
It can supports:
Networked web applications (like text chat system)
Voice
Video playback
Video recording
Video chat
Event distribution with publish and subscribe system
...
Perfect server for rich web real time applications.
9. OneTeam Media Server: Why Erlang ?
For scalability and flexibility
For clustering features
For the ability to integrate the application with other popular Erlang software:
ejabberd
Couchdb
Yaws
Mochiweb
RabbitMQ
All those software are getting mindshare in their area. OMS will both add
value and gain from them.
10. Rich real time web applications in Erlang
OneTeam Media Server gives the opportunity to build Adobe Flash or Adobe
Air connected / real time applications in Erlang
OneTeam Media Server is an application server. It is used as a building brick
for your own applications.
Example applications:
Low latency multiplayer games.
Video voicemail (Seesmic-like features).
Video conferencing system.
Video distribution system.
Event distribution system for financial dashboards.
Push base news distribution systems.
...
11. OneTeam Media Server perspective
OneTeam Media server along with ejabberd can help building the most
versatile web application server platform.
Both components can play a different role but can become a key element in
the real time web.
Can bring new web developers / startup to Erlang.
All in Erlang !
13. Technical overview
Several Adobe protocols are at the core of the platform:
RTMP: Real Time Messaging Protocol (port 1935)
Originally used for Flash persistence.
Now used for Flash RPC, streaming, messaging.
AMF: Action Message Format. Protocol to define the RPC and message
form. This is a binary serialized representation of Flash objects.
Technically RTMP is the main transport protocol, but actually it is AMF over
RTMP.
All other features are build upon those foundations:
Shared objects
Publish and subscribe
Video streaming
14. Technical overview
RTMP exist in various flavour:
RMTP: Standard TCP/IP (port 1935).
RTMPS: Secured RTMP. This is basically RTMP inside TLS.
RMTPT: Tunnelled over HTTP (port 80). Fallback mechanism used to
pass firewalls. It can work over HTTPS as well.
Yes, it works with video streaming as well
Currently OMS implements only RTMP
This is the bigger part
Adding other variations should be straigthforward
15. Flash client point of view
The first thing to do to work with OMS on the Flash client is to connect to
OMS.
This is done with the Flash connection object:
flash.net.NetConnection
Once you have done that you have a bidirectional stream to perform RPC
from client to server or from server to client.
If you want to support media publishing (Voice or Video), you have to use
another Flash object:
flash.net.NetStream
16. OMS application point of view
You need a module to handle the connection from your application.
You do that by creating an adaptor for the Flash NetConnection.
This is an arbitrary module implementing connect/2 method and link to
oms_netconnection object.
If you want to stream video or voice from webcam / microphone you need to
implement specific feature in a netstream module and link it to
oms_netstream object
Example of function to implement: publish/2,closeStream/2
18. Basic application
First basic application will only open the RTMP connection between Flash
client and module.
Client code (Flex)
Server code (Erlang)
19. Basic application: client
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<mx:Application xmlns:mx=quot;http://www.adobe.com/2006/mxmlquot; layout=quot;absolutequot; initialize=quot;init()quot;>
<mx:Script>
<![CDATA[
import flash.net.NetConnection; import flash.net.SharedObject; import mx.controls.Alert
private var myconn:NetConnection;
public function init():void {
myconn = new NetConnection();
myconn.addEventListener(quot;netStatusquot;, onNCStatus);
myconn.connect(quot;rtmp://127.0.0.1/demoquot;);
}
public function onNCStatus(event:NetStatusEvent):void {
if(event.info.code == quot;NetConnection.Connect.Successquot;)
{ Alert.show(quot;Connected to OMSquot;); }
else { Alert.show(quot;Failed to connect to OMS. Reason:quot;+ event.info.code); }
}
]]>
</mx:Script>
</mx:Application>
20. Basic application: Server
-module(mynetconnection).
This is raw data structure,
-export([connect/2]).
but we provide helpers /
wrappers
connect(_CallC,_Msg) ->
io:format(quot;my netconnection received callquot;),
{object,Obj} = lists:nth(1,_Msg),
case dict:find(quot;objectEncodingquot;,Obj) of
{ok,{number,Encoding}} ->
io:format(quot;~nEncoding is :~wquot;,[Encoding]),
{ok,[{result,[{mixed_array,{0,[{quot;objectEncodingquot;,{number,Encoding}},{quot;applicationquot;,{null,0}},{quot;levelquot;,
{string,quot;statusquot;}},{quot;descriptionquot;,{string,quot;Connection succeededquot;}},
{quot;codequot;,{string,quot;NetConnection.Connect.Successquot;}}]}}]}]};
error ->
{ok,[{result,[{object,dict:from_list([{quot;levelquot;,{string,quot;statusquot;}},
{quot;codequot;,{string,quot;NetConnection.Connect.Failedquot;}},
{quot;descriptionquot;,{string,quot;Connection failedquot;}}])}]}]}
end.
21. Application XML configuration
<?xml version=quot;1.0quot; encoding=quot;ISO-8859-1quot;?>
<omsapp>
<display-name>OMS Demo Application</display-name>
<short-name>demo</short-name>
<apppath>server/ebin</apppath>
<adapter obj=quot;oms_netconnectionquot; adapter=quot;mynetconnectionquot; />
</omsapp>
You can have several
adapter objects
22. Chat application
The goal of the chat test application is to show you can do push from the
server side by calling functions that are running on the client.
23. Chat application: Interesting client code
public function post():void {
resp = new Responder(glamresult,glamerror);
myconn.call(quot;postquot;,resp,nick.text,saisie.text);
input.text = quot;quot;;
}
public function newline(s:String):void {
chatarea.text += s + quot;nquot;;
}
24. Chat application: Interesting server code
post(CallC, Msg) ->
{string,From} = lists:nth(2,Msg),
{string,Text} = lists:nth(3,Msg),
gen_server:cast(CallC#callcontext.rtpid,
{clients_call,quot;newlinequot;,[{string,binary_to_list(Text)}],0}),
Arraydata = lists:map( fun(X) -> {string,X} end,[]),
AnsAMF3 = {array,Arraydata},
{ok,[{result,[AnsAMF3]}]}.
clients_call: call on all clients
client_call: use to call on
only one client
26. Video player / recorder: Interesting server code
getlistofavmedia(_CallC,_Msg) ->
io:format(quot;~ngetlistofavmediacalledquot;),
Filelist = filelib:wildcard(quot;../medias/*.flvquot;),
Arraydata = lists:map( fun(X) -> {string,X} end,Filelist),
AnsAMF3 = {array,Arraydata},
{ok,[{result,[AnsAMF3]}]}.
27. Video player / recorder: Interesting client code
public function get_list_of_av_medias():void {
var resp:Responder;
resp = new Responder(glamresult,glamerror);
myconn.call(quot;getlistofavmediaquot;,resp);
}
private function glamresult(result:Array):void {
var length:int = result.length;
var newtab:Array;
newtab = new Array();
for (var i:int=0;i<length;i++) {
var temp:String;
temp = result[i];
var ta:Array;
ta = temp.split(quot;/quot;);
var med:String = ta[ta.length - 1];
newtab[i] = {Name:med};
}
medlist.dataProvider = newtab;
}
28. Video player / recorder: Interesting client code
public var ns1:NetStream;
public function startrecording(e:MouseEvent):void {
bustop.visible = true;
burec.visible = false;
var temp1:String = medrecname.text.replace(quot;/quot;,quot;quot;);
var temp2:String = temp1.replace(quot;..quot;,quot;quot;);
if (ns1 != null) {
ns1.close();
ns1.attachCamera(camera);
ns1.publish(temp2,quot;RECORDquot;);
}
}
32. What’s next ?
Open Source release
When ?
2009, May 15th (in alpha version)
Release from ProcessOne web site
Planned features
Remote shared objects
RTMPT: Adobe connected protocol over HTTP
This is needed in some context to work over firewalls.
Adobe Livecycle publish and subscribe like features
Ability to support push to client over RTMP / RTMPT
BlazeDS (Java exist in open source but does not support more
efficient protocol RTMP).
More example applications