WebAssembly is a new assembly-like format, developer for improve the performances of web applications. “Introduction to WebAssembly” talk is an overview of this new technology, we start from the need of new format for the web, pass trough environment and existent library integration, and we finish with demos and existent applications.
Presented at Jazoon, April 28th, 2017
A revolution is about to begin. WebAssembly (aka wasm) is shipping in all modern browsers, but since it’s (intentionally) very low level, it can be difficult to understand how it will be critical to future web applications–and definitely not just games and C++!
In this talk, Jay will demystify stack assembly languages like WebAssembly, even if you have zero experience with assembly and linear memory.
This presentation gives an introduction and high level overview to web development with WebAssembly (WASM). At the time of this presentation WebAssembly had been recently released in all the major browsers for production. The presentation was given during a Chicago Ruby session for developers.
WebAssembly is a new assembly-like format, developer for improve the performances of web applications. “Introduction to WebAssembly” talk is an overview of this new technology, we start from the need of new format for the web, pass trough environment and existent library integration, and we finish with demos and existent applications.
Presented at Jazoon, April 28th, 2017
A revolution is about to begin. WebAssembly (aka wasm) is shipping in all modern browsers, but since it’s (intentionally) very low level, it can be difficult to understand how it will be critical to future web applications–and definitely not just games and C++!
In this talk, Jay will demystify stack assembly languages like WebAssembly, even if you have zero experience with assembly and linear memory.
This presentation gives an introduction and high level overview to web development with WebAssembly (WASM). At the time of this presentation WebAssembly had been recently released in all the major browsers for production. The presentation was given during a Chicago Ruby session for developers.
WebAssembly, also known as Wasm, is a binary format for representing executable code, designed to be easily embeddable into other projects. It's also a perfect candidate for a user-defined functions (UDFs) back-end due to its ease of integration, performance and popularity. ScyllaDB already supports user-defined functions expressed in WebAssembly in experimental mode, based on an open-source runtime written natively in Rust - Wasmtime.
This talk will cover a few examples of how to create Wasm functions in ScyllaDB, how to combine them into powerful user-defined aggregates and what are the future plans of integrating with Wasmtime and Rust even further.
To watch all of the recordings hosted during Scylla Summit 2022 visit our website here: https://www.scylladb.com/summit.
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
Quarkus - a next-generation Kubernetes Native Java frameworkSVDevOps
For years, the client-server architecture has been the de-facto standard to build applications. But a major shift happened. The one model rules them all age is over. A new range of applications and architectures has emerged and impacts how code is written and how applications are deployed and executed. HTTP microservices, reactive applications, message-driven microservices, and serverless are now central players in modern systems.
Quarkus has been designed with this new world in mind and provides first-class support for these different paradigms. Developers using the Red Hat build of Quarkus can now choose between deploying natively compiled code or JVM-based code depending on an application’s needs. Natively compiled Quarkus applications are extremely fast and memory-efficient, making Quarkus a great choice for serverless and high-density cloud deployments.
Speakers
1) Shanna Chan, Senior Solutions Architect at Red Hat
2) Mark Baker, Senior Solutions Architect at Red Hat
Speaker Bios
Shanna Chan - Shanna is passionate about how open source solutions help others in their journey of application modernization and transformation of their business into cloud infrastructures. Her background includes application developments, DevOps, and architecting solutions for large enterprises. More about Shanna at http://linkedin.com/in/shanna-chan
Mark Baker - Mark’s experiences coalesce around solution /business architecture and leadership bringing together people in both post / pre-sales software projects bridging traditional legacy systems (i.e. Jakarta (JEE) MVC) with Cloud tolerant and Cloud native open source in the journey of modernization and transformation. More about Mark at http://linkedin.com/in/markwbaker-tsl
Distributed Caching in Kubernetes with HazelcastMesut Celik
As Monolith to Microservices migration almost became mainstream, Engineering Teams have to think about how their caching strategies will evolve in cloud-native world. Kubernetes is clear winner in containerized world so caching solutions must be cloud-ready and natural fit for Kubernetes.
Caching is an important piece in high performance microservices and choosing right architectural pattern can be crucial for your deployments. Hazelcast is a well known caching solution in open source community and can handle caching piece in microservices based applications.
In this talk, you will learn
* Distributed Caching With Hazelcast
* Distributed Caching Patterns in Kubernetes
* Kubernetes Deployment Options and Best Practices
* How to Handle Distributed Caching Day 2 Operations
How can we harness AEM6 and Sling to integrate backed layers to the CMS and expose them as a unified framework. creation of these integrations is vital for a coherent, personalize-able and track-able sites.
An intro to React Native using react-native cli, styled components, react-navigation, and an an introduction to the react native ecosystem.
Example repo: https://github.com/ladyleet/fluentConf2
Have questions? Tweet me http://twitter.com/ladyleet
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration Amazon Web Services
Amazon Relational Database Service (Amazon RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. With Amazon RDS, you can deploy multiple editions of Oracle Database 11g in minutes with cost-efficient and re-sizable hardware capacity.
In this webinar, we'll discuss how to get the most out of the service, including techniques for migrating data in and out.
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...Edureka!
This Edureka "Spring Interview Questions and Answers" tutorial will help you to prepare yourself for Spring Framework Interviews. This tutorial is ideal for freshers as well as experienced also. Learn about the most important Spring Framework interview questions and answers and know what will set you apart in the interview process. Below are the topics covered in this tutorial:
1. General Questions
2. Dependency Injection/ IoC
3. Beans
4. Annotations
5. Data Access
6. Aspect Oriented Programming(AOP)
7. MVC
2017/01/23【F2E&RGBA Meetup】所分享的內容
簡介:
PWA (Progressive Web App) 是 Google 在 2015 年所提出的概念,2016 年我們開始看到許多 PWA 應用像是 The Washington Post、Flipkart、Gmail、AliExpress、Wikipedia、Flipboard、Booking 等實務案例,本次分享將介紹 PWA 與 HTML5 Offline API 搭配 Service Worker,讓我們的網站在離線的時候還能夠進行瀏覽,打造出更好的用戶體驗。
活動網址:
http://f2e.kktix.cc/events/f2e6-56d17c-0f9e5b-3997b7-a9203f-d684fd-886f38
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
James Pearce
Head of Open Source with Facebook
Front Dev 1
An Introduction to ReactJS
Find more by James here: https://speakerdeck.com/jamesgpearce
WebAssembly is neither Web nor Assembly. This may sound odd at first, but makes a lot of sense if you look at some of its core features: Fast, efficient, sandboxed. Something we want from container technologies!
In this talk, we look at WASM as an alternative for your everyday container. We develop and deploy applications that run in WASM, not in the browser, but everywhere, including the cloud. Together with accompanying technologies like WASI and the experimental WAGI, we see how WebAssembly can be the future for cloud apps, including serverless.
WebAssembly, also known as Wasm, is a binary format for representing executable code, designed to be easily embeddable into other projects. It's also a perfect candidate for a user-defined functions (UDFs) back-end due to its ease of integration, performance and popularity. ScyllaDB already supports user-defined functions expressed in WebAssembly in experimental mode, based on an open-source runtime written natively in Rust - Wasmtime.
This talk will cover a few examples of how to create Wasm functions in ScyllaDB, how to combine them into powerful user-defined aggregates and what are the future plans of integrating with Wasmtime and Rust even further.
To watch all of the recordings hosted during Scylla Summit 2022 visit our website here: https://www.scylladb.com/summit.
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
Quarkus - a next-generation Kubernetes Native Java frameworkSVDevOps
For years, the client-server architecture has been the de-facto standard to build applications. But a major shift happened. The one model rules them all age is over. A new range of applications and architectures has emerged and impacts how code is written and how applications are deployed and executed. HTTP microservices, reactive applications, message-driven microservices, and serverless are now central players in modern systems.
Quarkus has been designed with this new world in mind and provides first-class support for these different paradigms. Developers using the Red Hat build of Quarkus can now choose between deploying natively compiled code or JVM-based code depending on an application’s needs. Natively compiled Quarkus applications are extremely fast and memory-efficient, making Quarkus a great choice for serverless and high-density cloud deployments.
Speakers
1) Shanna Chan, Senior Solutions Architect at Red Hat
2) Mark Baker, Senior Solutions Architect at Red Hat
Speaker Bios
Shanna Chan - Shanna is passionate about how open source solutions help others in their journey of application modernization and transformation of their business into cloud infrastructures. Her background includes application developments, DevOps, and architecting solutions for large enterprises. More about Shanna at http://linkedin.com/in/shanna-chan
Mark Baker - Mark’s experiences coalesce around solution /business architecture and leadership bringing together people in both post / pre-sales software projects bridging traditional legacy systems (i.e. Jakarta (JEE) MVC) with Cloud tolerant and Cloud native open source in the journey of modernization and transformation. More about Mark at http://linkedin.com/in/markwbaker-tsl
Distributed Caching in Kubernetes with HazelcastMesut Celik
As Monolith to Microservices migration almost became mainstream, Engineering Teams have to think about how their caching strategies will evolve in cloud-native world. Kubernetes is clear winner in containerized world so caching solutions must be cloud-ready and natural fit for Kubernetes.
Caching is an important piece in high performance microservices and choosing right architectural pattern can be crucial for your deployments. Hazelcast is a well known caching solution in open source community and can handle caching piece in microservices based applications.
In this talk, you will learn
* Distributed Caching With Hazelcast
* Distributed Caching Patterns in Kubernetes
* Kubernetes Deployment Options and Best Practices
* How to Handle Distributed Caching Day 2 Operations
How can we harness AEM6 and Sling to integrate backed layers to the CMS and expose them as a unified framework. creation of these integrations is vital for a coherent, personalize-able and track-able sites.
An intro to React Native using react-native cli, styled components, react-navigation, and an an introduction to the react native ecosystem.
Example repo: https://github.com/ladyleet/fluentConf2
Have questions? Tweet me http://twitter.com/ladyleet
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration Amazon Web Services
Amazon Relational Database Service (Amazon RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. With Amazon RDS, you can deploy multiple editions of Oracle Database 11g in minutes with cost-efficient and re-sizable hardware capacity.
In this webinar, we'll discuss how to get the most out of the service, including techniques for migrating data in and out.
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...Edureka!
This Edureka "Spring Interview Questions and Answers" tutorial will help you to prepare yourself for Spring Framework Interviews. This tutorial is ideal for freshers as well as experienced also. Learn about the most important Spring Framework interview questions and answers and know what will set you apart in the interview process. Below are the topics covered in this tutorial:
1. General Questions
2. Dependency Injection/ IoC
3. Beans
4. Annotations
5. Data Access
6. Aspect Oriented Programming(AOP)
7. MVC
2017/01/23【F2E&RGBA Meetup】所分享的內容
簡介:
PWA (Progressive Web App) 是 Google 在 2015 年所提出的概念,2016 年我們開始看到許多 PWA 應用像是 The Washington Post、Flipkart、Gmail、AliExpress、Wikipedia、Flipboard、Booking 等實務案例,本次分享將介紹 PWA 與 HTML5 Offline API 搭配 Service Worker,讓我們的網站在離線的時候還能夠進行瀏覽,打造出更好的用戶體驗。
活動網址:
http://f2e.kktix.cc/events/f2e6-56d17c-0f9e5b-3997b7-a9203f-d684fd-886f38
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
James Pearce
Head of Open Source with Facebook
Front Dev 1
An Introduction to ReactJS
Find more by James here: https://speakerdeck.com/jamesgpearce
WebAssembly is neither Web nor Assembly. This may sound odd at first, but makes a lot of sense if you look at some of its core features: Fast, efficient, sandboxed. Something we want from container technologies!
In this talk, we look at WASM as an alternative for your everyday container. We develop and deploy applications that run in WASM, not in the browser, but everywhere, including the cloud. Together with accompanying technologies like WASI and the experimental WAGI, we see how WebAssembly can be the future for cloud apps, including serverless.
Mi az a Mozilla? Kik állnak mögötte? Kik vesznek részt a projektben és mit csinálnak? Előadásommal Mozilla gyümölcsöskertjének terméseit próbálom bemutatni. A most induló kísérletektől kezdve, a már működő és sok felhasználót vonzó termékekig. Rád is számítunk, csatlakozz Te is önkéntes csapatunkhoz.
Trophy winning-teams Codemotion Milan 2015Adam Onishi
“Players don't win you trophies, teams win trophies”. A team works better when they work together, no matter whether the goal is winning the World Cup or creating amazing websites.
Any development team, whether large or small needs to ensure that it works together as a cohesive unit in order to produce the best possible output. This can mean ensuring there's consistency in the code being written. Ensuring everyone stays up-to-date with the fast-moving pace of the web industry. As well as the ability for any project to be worked on by one or more team members at a time and have the ability to be handed over if a developer takes time off.
Fast Slim Correct: The History and Evolution of JavaScript.John Dalziel
A look back at how JavaScript has evolved over the past 18 years - how it broke out of the browser and can now be found in the most unexpected places. Presented at Worthing Digital, 7th Nov 2013.
Come rendere il proprio prodotto una bomba creandogli una intera community in...Codemotion
Creare una community di sviluppatori ed utilizzatori intorno al proprio progetto è diventato ormai fondamentale. Persone appassionate che utilizzano il tuo prodotto, forniscono feedback, documentazione e casi d'uso, trovano bug, suggeriscono feature e contribuiscono allo sviluppo: tutto questo crea innovazione, attira contributors ed allarga la base di utenti a dismisura. In questo talk spiegherò cosa ho imparato nel creare una community online da zero a 1000 membri: come gestire discussioni aperte, come fare le scelte migliori. Consigli pronti per l'uso, cosa funziona e cosa no.
DevOps in Cloud, dai Container all'approccio Codeless - Gabriele Provinciali,...Codemotion
Un approccio moderno allo sviluppo software dovrebbe sfruttare linguaggi ed ambienti appartenenti a diverse tipologie di innovazione: DevOps per automatizzare continuous integration e continuous delivery, il Cloud per gestire il ciclo di vita del software in qualsiasi momento, i Software Containers per raggiungere livelli di scalabilità adeguati alle dimensioni dell’audience e un approccio Codeless per confezionare applicazioni e cruscotti ad uso dell’utenza business. Il talk sarà articolato intorno a queste quattro aree mostrando principalmente esempi pratici.
Video and slides synchronized, mp3 and slide download available at URL https://bit.ly/2s9T3Vl.
Colin Eberhardt looks at some of the internals of WebAssembly, explores how it works “under the hood”, and looks at how to create a (simple) compiler that targets this runtime. Filmed at qconsf.com.
Colin Eberhardt is the Technology Director at Scott Logic, a UK-based software consultancy where they create complex application for their financial services clients. He is an avid technology enthusiast, spending his evenings contributing to open source projects, writing blog posts and learning as much as he can.
Unbundling the JavaScript module bundler - Codemotion Rome 2018Luciano Mammino
Today we all use Webpack (right?), but I remember a time when you had to manually copy-paste JavaScript files to create a package of libraries you could use in your frontend application. Many years have passed since then and the landscape of module bundlers evolved significantly along with the evolution of JavaScript and Node.js. In this talk, I will try to uncover some JavaScript module history and illustrate how a module bundler actually works, so that the next time you will use Webpack you will be able to understand what's going on behind the scenes.
Today we all use Webpack (right?), but I remember a time when you had to manually copy-paste JavaScript files to create a package of libraries you could use in your frontend application. Many years have passed since then and the landscape of module bundlers evolved significantly along with the evolution of JavaScript and Node.js. In this talk, I will try to uncover some JavaScript module history and illustrate how a module bundler actually works, so that the next time you will use Webpack you will be able to understand what's going on behind the scenes.
For decades, JavaScript developers have relied on a multitude of module systems
to organize and share code. But in 2015, ECMAScript finally introduced built-in
standard semantics for modules, providing a long-awaited solution for the
language. While ECMAScript modules have quickly become a popular format for
writing code, most published code is still compiled to a single bundle or to a
legacy module system.
The TC39 committee, which designs the ECMAScript language, is actively
exploring this design space: are there any missing functionalities compared to
previous systems? Do JavaScript developers need any capabilities that the
language does not currently provide? What problems do ECMAScript modules
currently cause?
This talk will walk you through the answers to those questions and show you
current developments, giving a sneak peek at possible future modules features!
(c) JSHeroes 2023
May 18-19th 2023
Cluj Napoca, Romania
https://jsheroes.io
A small introduction on the C++14 improved static introspection of the IOD library and the C++14 web framework Silicon.
https://github.com/matt-42/silicon
https://github.com/matt-42/iod
Browser exploitation techniques and low-level binary exploitation, this presentation is presented in Stockholm SEC-T cybersecurity conference in September/2019
Building a Serverless company with Node.js, React and the Serverless Framewor...Luciano Mammino
Planet9energy.com is a new electricity company building a sophisticated analytics and energy trading platform for the UK market. Since the earliest draft of the platform, we took the unconventional decision to go serverless and build the product on top of AWS Lambda and the Serverless framework using Node.js. In this talk, I want to discuss why we took this radical decision, what are the pros and cons of this approach and what are the main issues we faced as a tech team in our design and development experience. We will discuss how normal things like testing and deployment need to be re-thought to work on a serverless fashion but also the benefits of (almost) infinite self-scalability and the piece of mind of not having to manage hundreds of servers. Finally, we will underline how Node.js seems to fit naturally in this scenario and how it makes developing serverless applications extremely convenient.
https://github.com/leobenkel/Zparkio
Slides presented during the ScalaSF meetup on Thursday, March 26, 2020.
https://www.meetup.com/SF-Scala/events/268998404/
ZparkIO was on version 0.7.0 at the time, so things might be out of date.
A story about the company I have been working for - Unipension, and how we started a journey from being purely operational organisation into developmental.
In the recent years there have been many changes in the way users interact with web applications. Traditional web applications evolve and we have to be there to adapt these changes. In this talk I will present single-page applications (SPAs) and will show how they affect everyone – from project managers, designers, and developers to end-users. We will see why SPAs attract attention and what has lead to this new web trend. Furthermore, we will go through the ups and downs of single-page applications and will try to get an answer to the question: Is this something for me and my customers?
Single-page applications (SPAs) take user interaction with web applications to a new level. This means that more logic will be moved to the web browser and we have to become more familiar with JavaScript. AngularJS is one of the leading JavaScript frameworks when talking about SPAs. In this workshop I will present AngularJS in terms of problems it addresses and how it does this. Together we will develop a single-page application and we will go through how traditional concepts of web applications (data and state management, authentication) can be solved using the framework. Furthermore, we will dive into typical pitfalls when developing applications using AngularJS and will see how we can avoid them.
The talk I gave at the University of Copenhagen students in the course Software Development and Software Architecture. I showed how we do software architecture in the company I work for - Ebita, along with all the problems we encounter and the decisions we make.
Component-driven development with AngularJSBoyan Mihaylov
A short presentation about how AngularJS can help us approach a real-world scenario. I made the presentation at the Faculty of Mathematics and Informatics, The University of Sofia
# Internet Security: Safeguarding Your Digital World
In the contemporary digital age, the internet is a cornerstone of our daily lives. It connects us to vast amounts of information, provides platforms for communication, enables commerce, and offers endless entertainment. However, with these conveniences come significant security challenges. Internet security is essential to protect our digital identities, sensitive data, and overall online experience. This comprehensive guide explores the multifaceted world of internet security, providing insights into its importance, common threats, and effective strategies to safeguard your digital world.
## Understanding Internet Security
Internet security encompasses the measures and protocols used to protect information, devices, and networks from unauthorized access, attacks, and damage. It involves a wide range of practices designed to safeguard data confidentiality, integrity, and availability. Effective internet security is crucial for individuals, businesses, and governments alike, as cyber threats continue to evolve in complexity and scale.
### Key Components of Internet Security
1. **Confidentiality**: Ensuring that information is accessible only to those authorized to access it.
2. **Integrity**: Protecting information from being altered or tampered with by unauthorized parties.
3. **Availability**: Ensuring that authorized users have reliable access to information and resources when needed.
## Common Internet Security Threats
Cyber threats are numerous and constantly evolving. Understanding these threats is the first step in protecting against them. Some of the most common internet security threats include:
### Malware
Malware, or malicious software, is designed to harm, exploit, or otherwise compromise a device, network, or service. Common types of malware include:
- **Viruses**: Programs that attach themselves to legitimate software and replicate, spreading to other programs and files.
- **Worms**: Standalone malware that replicates itself to spread to other computers.
- **Trojan Horses**: Malicious software disguised as legitimate software.
- **Ransomware**: Malware that encrypts a user's files and demands a ransom for the decryption key.
- **Spyware**: Software that secretly monitors and collects user information.
### Phishing
Phishing is a social engineering attack that aims to steal sensitive information such as usernames, passwords, and credit card details. Attackers often masquerade as trusted entities in email or other communication channels, tricking victims into providing their information.
### Man-in-the-Middle (MitM) Attacks
MitM attacks occur when an attacker intercepts and potentially alters communication between two parties without their knowledge. This can lead to the unauthorized acquisition of sensitive information.
### Denial-of-Service (DoS) and Distributed Denial-of-Service (DDoS) Attacks
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
15. Hello, world
@bmihaylov | Codemotion Milan 2015 15
#include<stdio.h>
int main() {
printf("Welcome to Codemotion");
return 0;
}
function _main() {
var $0 = 0, $vararg_buffer= 0,
label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0;
if ((STACKTOP|0) >= (STACK_MAX|0))
abort();
$vararg_buffer = sp; $0 = 0;
(_printf((8|0),($vararg_buffer|0))|0);
STACKTOP = sp;
return 0;
}
1 KB 372 KB
16. Mozilla and Epic ported Unreal Engine 3 to the Web in 4 days
https://www.youtube.com/watch?v=XsyogXtyU9o
17. Meet asm.js
Started by Mozilla in 2013
A subset of JavaScript to compile very fast
We know the types, rather than infer them on runtime
Enables ahead-of-time (AOT) compilation
@bmihaylov | Codemotion Milan 2015 17
18. asm.js examples
@bmihaylov | Codemotion Milan 2015 18
function Circle(stdlib,foreign, heap) {
"use asm";
var pi = +stdlib.Math.PI;
function area(r) {
r = r | 0;
return +(pi * r * r);
}
return { area: area };
}
// create and initialize the heap (64k)
var heap = new ArrayBuffer(0x10000);
init(heap, START, END);
// produce exports object,
// linked to AOT-compiledcode
var circle = Circle(window, null, heap);
// calculatethe area of a circle
circle.area(31);
20. Issues with asm.js
@bmihaylov | Codemotion Milan 2015` 20
Once VMs optimize for it, the parser becomes the bottleneck
We may want to do some things different than JavaScript allows us
It is backed-up only by Mozilla (so far)
22. What is WebAssembly?
@bmihaylov | Codemotion Milan 2015 22
Improvement to JavaScript and the browser
A new language
Short name is wasm
Compilation target from other languages
24. WebAssembly is not bytecode
@bmihaylov | Codemotion Milan 2015 24
Bytecode is linear and stack-, register-, or SSA-based
WebAssembly is binary representation of an AST
WebAssembly is not versioned
WebAssembly will probably lead to universal VM
26. Text format vs. Binary encoding
View source of a
WebAssembly module
Browser developer tools
(when no source maps exist)
Browsers will NOT parse it
Serialized version of the text
format
The main format used by
browsers
Custom-tailored compression
28. How to produce WebAssembly
@bmihaylov | Codemotion Milan 2015 28
Produce binary output programmatically
Write code manually using the textual representation
Compile it from another language
31. WebAssembly today
@bmihaylov | Codemotion Milan 2015 31
Use emscripten to produce it
Stay as close as possible to asm.js
Uses a polyfill to run in the browser
Is in a prototype phase
33. WebAssembly is a new feature
@bmihaylov | Codemotion Milan 2015 33
WebAssembly JavaScript
Bytecode
Machine code
34. WebAssembly and JavaScript
@bmihaylov | Codemotion Milan 2015 34
WebAssembly JavaScript
Games,
video & image
decoders, etc.
External libraries
(f.x., C/C++)
35. The future of WebAssembly
@bmihaylov | Codemotion Milan 2015 35
Focus on compilation from C/C++
Debug WebAssembly via the source code used to produce it
Mainly low-level computations
Single Instruction, Multiple Data (SIMD)
36. @bmihaylov | Codemotion Milan 2015 36
WebAssembly fills in the gaps that would
be awkward to fill with JavaScript.
Eric Elliott
“
”
photo: www.adafruit.com
37. @bmihaylov | Codemotion Milan 2015 37
We think Swift should be everywhere and
used by everyone.
Craig Federighi
Apple’sWWDC 2015
“
”