This talk discusses the work we did to enable the esy packager manager on Windows to facilitate a one-click install for native ReasonML. In addition, I talk about how we're using these cross-platform tools to build and ship native cross-platform desktop applications built with Revery and ReasonML
This document discusses working as a software engineer at Facebook and some of the key aspects of the role. It covers topics like culture, scale of the platform, technical scope, and fixing bugs. As an example bug, it describes an issue with file descriptor leaks on Android and the steps taken to identify and address the problem, including testing different libraries and approaches to image loading. The engineer provides a potential hybrid solution to improve file descriptor management and memory usage.
Justin Dearing gives an overview of using MongoDB on Windows platforms. He discusses that MongoDB runs as a Windows service and can be used in production environments on Windows. The various language drivers like PHP, .NET, Python generally work well for connecting to MongoDB instances from Windows. Administration tasks like backups and querying can be done similarly to Unix environments using tools like mongo.exe shell and Powershell.
Data Management and Streaming Strategies in Drakensang OnlineAndre Weissflog
One of my older presentations from the Browser Games Forum 2011 about how we're managing data size optimizations and streaming in Drakensang Online. Absolute asset size number are about 3x..4x bigger today, since the game has grown a lot since 2011.
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5David Voyles
The video for this talk can be found here:https://channel9.msdn.com/Blogs/raw-tech/Getting-started-with-Emscripten--Transpiling-C--C-to-JavaScript--HTML5
I cover how to transpile code from C/C++ to HTML5/JS using Emscripten, an open source compiler tool from Mozilla and Alon Zakai.
Improving iteration times through the reloading of code and dataBoyan Spassov
This document discusses improving iteration times through reloading code and data. It covers reloading code in various languages like C/C++ and scripting languages. It also discusses reloading data like materials, models, textures and game logic/settings. The document recommends tools like REPLs and online compilers that allow live editing. It suggests next level techniques like in-engine live editing of UI, levels and object settings. Finally, it mentions other approaches that can help like good APIs, entity component systems and shorter compilation times.
Minko - Build WebGL applications with C++ and asm.jsMinko3D
This document summarizes an HTML5 Meetup about building WebGL applications with C++ and ASM.js. It discusses how C++ is more expressive than JavaScript for complex 3D applications and allows leveraging existing C++ libraries and performance through GPU programming. It outlines using Emscripten to cross-compile C++ to JavaScript, generating optimized ASM.js code. It also discusses tools like Premake for cross-platform building and Vagrant for consistently provisioning the build environment. Examples are given of building a 3D application with C++ and WebGL that runs across desktop, mobile and web with good performance and binary size.
Goodbye Flash, Hello OpenFL: Next Generation Cross-Platform Game Development Jessica Tams
Delivered at Casual Connect Tel Aviv | Haxe is an open source language with syntax similar to Actionscript, with some major improvements. Games written in Haxe can target many environments including Flash Player, HTML5, iOS and Android. OpenFL is an open source library built in Haxe, which provides a Flash-like API. The combination of Haxe and OpenFL is a natural fit for developers looking to move away from Actionscript/Flash. This talk will show you how.
This document discusses working as a software engineer at Facebook and some of the key aspects of the role. It covers topics like culture, scale of the platform, technical scope, and fixing bugs. As an example bug, it describes an issue with file descriptor leaks on Android and the steps taken to identify and address the problem, including testing different libraries and approaches to image loading. The engineer provides a potential hybrid solution to improve file descriptor management and memory usage.
Justin Dearing gives an overview of using MongoDB on Windows platforms. He discusses that MongoDB runs as a Windows service and can be used in production environments on Windows. The various language drivers like PHP, .NET, Python generally work well for connecting to MongoDB instances from Windows. Administration tasks like backups and querying can be done similarly to Unix environments using tools like mongo.exe shell and Powershell.
Data Management and Streaming Strategies in Drakensang OnlineAndre Weissflog
One of my older presentations from the Browser Games Forum 2011 about how we're managing data size optimizations and streaming in Drakensang Online. Absolute asset size number are about 3x..4x bigger today, since the game has grown a lot since 2011.
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5David Voyles
The video for this talk can be found here:https://channel9.msdn.com/Blogs/raw-tech/Getting-started-with-Emscripten--Transpiling-C--C-to-JavaScript--HTML5
I cover how to transpile code from C/C++ to HTML5/JS using Emscripten, an open source compiler tool from Mozilla and Alon Zakai.
Improving iteration times through the reloading of code and dataBoyan Spassov
This document discusses improving iteration times through reloading code and data. It covers reloading code in various languages like C/C++ and scripting languages. It also discusses reloading data like materials, models, textures and game logic/settings. The document recommends tools like REPLs and online compilers that allow live editing. It suggests next level techniques like in-engine live editing of UI, levels and object settings. Finally, it mentions other approaches that can help like good APIs, entity component systems and shorter compilation times.
Minko - Build WebGL applications with C++ and asm.jsMinko3D
This document summarizes an HTML5 Meetup about building WebGL applications with C++ and ASM.js. It discusses how C++ is more expressive than JavaScript for complex 3D applications and allows leveraging existing C++ libraries and performance through GPU programming. It outlines using Emscripten to cross-compile C++ to JavaScript, generating optimized ASM.js code. It also discusses tools like Premake for cross-platform building and Vagrant for consistently provisioning the build environment. Examples are given of building a 3D application with C++ and WebGL that runs across desktop, mobile and web with good performance and binary size.
Goodbye Flash, Hello OpenFL: Next Generation Cross-Platform Game Development Jessica Tams
Delivered at Casual Connect Tel Aviv | Haxe is an open source language with syntax similar to Actionscript, with some major improvements. Games written in Haxe can target many environments including Flash Player, HTML5, iOS and Android. OpenFL is an open source library built in Haxe, which provides a Flash-like API. The combination of Haxe and OpenFL is a natural fit for developers looking to move away from Actionscript/Flash. This talk will show you how.
Creating Your Own Static Website GeneratorSean O'Mahoney
Many people use popular client-side libraries such as React and Angular, although many don't consider server-side rendering like VueJS, nevermind creating their own.
This document provides an overview of Mono, an open source implementation of Microsoft's .NET Framework that allows developers to build and run .NET applications on non-Windows platforms. It discusses what Mono is, the languages and platforms it supports, its class libraries and components, debugging tools, and GUI frameworks. It also covers Mono's support for databases, mobile development using Xamarin, and the project's goals for full .NET Framework compatibility going forward.
Fresco is an image loading library that can greatly improve the performance and memory usage of displaying images in Android apps. It uses techniques like progressive JPEG, focus point cropping, and animations to load images efficiently in the background without blocking the UI. Many large apps like Facebook and Wikipedia use Fresco to display images smoothly while keeping memory usage low. Fresco provides up to a 90% reduction in image loading errors compared to default image loading approaches in Android.
Multiplatform C++ on the Web with EmscriptenChad Austin
IMVU is using Emscripten to bring its multiplatform C++ codebase to web browsers with HTML5 and WebGL. See how Emscripten works, how to use, and what you can expect.
A preview of Feathers 2.2 and the Feathers SDKJosh Tynjala
This document summarizes a presentation about the upcoming Feathers 2.2 release and the new Feathers SDK. Key points include: Feathers 2.2 will include new layouts, transitions, retina desktop themes, and a media player framework. The Feathers SDK will allow using Feathers components in MXML, with features like binding, inline components, and an Application subclass that starts Starling. Some limitations are Flash Builder project generation and IDE support, but future plans include improving this.
The document discusses options for setting up a local development environment for web development. It describes what a local development environment is and explains why developers need one. It then lists and compares popular options for setting up a local dev environment like XAMPP, MAMP, Vagrant, and manually installing tools. It provides instructions for configuring virtual hosts with XAMPP and MAMP on Windows and Mac. Finally, it recommends Vagrant and MAMP as good choices and provides additional setup details for Vagrant.
1) The document discusses the OpenIO Summit '17 which covered topics including ARM hardware, object storage deployment frameworks and APIs, and demonstrations.
2) It describes OpenIO SDS technology as having a very lightweight software stack that is easy to scale across nodes without rebalancing and features load balancing for optimal data placement.
3) ARM boards are presented as a good hardware option for OpenIO SDS due to their low cost, power consumption, and heat, with the potential benefit of one board per disk for failure domain isolation and cost-effective scaling.
4) The OVH IAAS API is highlighted for its ability to deploy OpenIO SDS clusters on ARM nodes through automated builds, installations, and aggregation using REST APIs.
Midwest php 2013 deploying php on paas- why & howdotCloud
Deploying PHP applications to Platform as a Service (PaaS) can provide several benefits over traditional hosting methods. PaaS allows developers to quickly deploy new environments for testing code changes. It also handles tasks like optimizing stacks, upgrading software, and providing comprehensive routing. PaaS aims to make deployment as simple as uploading code and eliminates the need to manually configure servers. While there is an initial learning curve to using PaaS tools and reworking some applications, it can improve the development to production workflow and allow applications to easily scale on demand.
MS Experiences 17 - Xamarin: Future of Mobile DevelopmentJames Montemagno
Xamarin enabled C # developers to become native iOS, Android, and Windows mobile app developers overnight. In this session, learn how to leverage your existing .NET and C # skills to create iOS and Android mobile apps in Visual Studio with Xamarin. In addition to allowing you to write your iOS and Android apps in C #, Xamarin lets you reuse existing .NET libraries and share your business logic across iOS, Android, and Windows apps. During this session we cover the Xamarin platform and how to create native iOS, Android, and Windows apps in C #. See what is new and next for Xamarin development inside of Visual Studio. Moreover, we focus on the code, with several live coding adventures throughout the entire session and showing you the latest and greatest in native cross-platform development.
WebGL games with Minko - Next Game Frontier 2014Minko3D
- Minko is a framework for building 3D applications in C++ that can be deployed to desktops, mobiles, and the web.
- It uses C++ as its core language and Lua for scripting. Applications are compiled to JavaScript using Emscripten to run in HTML5 and WebGL.
- Minko provides 3D graphics and physics engines, file format support, and tools to develop once and deploy everywhere. This allows building complex 3D games and experiences that achieve high performance across platforms.
Jfokus 2015 - Immutable Server generation: the new App DeploymentAxel Fontaine
Slides from my Jfokus 2015 talk
Abstract:
======
App deployment and server setup are complex, error-prone and time-consuming. They require OS installers, package managers, configuration recipes, install scripts, server hardening and more. But... Is this really necessary? What if we could start over and radically simplify all this? What if, within seconds, we could wrap our app into the smallest machine required to run it and transfer this machine unchanged from our laptop to the cloud? How do the various platforms and tools like AWS, Docker and Boxfuse fit into this picture? When should you use them? This talk is for developers and architects wishing to radically improve and simplify how they deploy their applications. It takes Continuous Delivery to a whole new level. Welcome to Immutable Infrastructure. This is the new black.
Is parallel programming hard? And if so, what can you do about it?John Lee
This document summarizes a presentation given by Paul McKenney titled "Is Parallel Programming Hard, And If So, What Can You Do About It?" at the 2011 Android System Developer Forum.
Paul McKenney has been doing parallel programming for over 20 years. He grew up in rural Oregon and has worked at SRI International, Sequent Computer Systems, and IBM, where he is currently a Distinguished Engineer and CTO of the Linux Technology Center.
Historically, parallel programming has been difficult due to parallel systems being rare and expensive, a lack of publicly available parallel code, and technological obstacles like synchronization overhead, deadlock, and data races. However, these challenges have lessened as parallel systems have become much
Cis 1-202-ch9Z Open Source Group PROJECT Mac OS X vs Windows vs Unix Linux.pptxssuser6109f31
This document compares the operating systems Mac OS, Windows, and Linux/Unix. It provides information on the history, developers, source models, and platforms supported for each OS. Key features like price, security, and usability are compared. System requirements for memory, storage, and processor are outlined for MacOS, Windows 10/11, and a typical Linux distro. Pros and cons of each OS are discussed for different user types. In the end, MacOS is recommended for office/school work due to optimized software, Windows is best overall due to wide industry support and gaming, while Linux offers best resource utilization and is open source.
Basics overview of C#. you can refer this link of learning more about C# interview questions
http://skillgun.com/csharp/interview-questions-and-answers
This document provides an introduction to ASP.NET by discussing key concepts such as the .NET framework, Common Language Runtime, and Common Type System which allow for language and platform independence. It also describes how ASP.NET enables web-enabled and distributed applications using technologies like XML, SOAP, and WSDL. The document outlines the architecture and components of the .NET framework including the common language runtime, class libraries, and support for different application types.
Immutable Server generation: The new App DeploymentAxel Fontaine
From JavaZone 2014
Video: https://vimeo.com/105851488
Abstract:
App deployment and server setup are complex, error-prone and time-consuming. They require OS installers, package managers, configuration recipes, install and deployment scripts, server tuning, hardening and more. But... Is this really necessary? Are we trapped in a mindset of doing things this way just because that's how they've always done?
What if we could start over and radically simplify all this? What if, within seconds, and with a single command, we could wrap our application into the bare minimal machine required to run it? What if this machine could then be transported and run unchanged on our laptop and in the cloud? How do the various tools like Docker and Boxfuse fit into this picture? What are their strengths and weaknesses? When should you use them?
This talk is for developers and architects wishing to radically improve and simplify how they deploy their applications. It takes Continuous Delivery to a level far beyond what you've seen today. Welcome to Immutable Server generation. This is the new black.
Software can be categorized into different types:
1. Application programs that users directly interact with like text editors, graphics software, and office programs.
2. System software like operating systems and drivers that enable interaction between hardware and application programs.
3. Programming systems that are used to create new application programs through programming languages and tools like compilers, linkers, and IDEs.
4. Archiving and compression utilities allow users to back up files, reduce file sizes, and transfer files more efficiently through file compression and archives.
- The document discusses Brendan Eich and Brave Software and their work on WebAssembly and improving the web.
- WebAssembly is described as a new standard being developed to define a compact, portable binary format that runs safely at near-native speed, as well as a text format for viewing the source.
- It is positioned as a compiler target for the web, a virtual instruction set, an evolution of asm.js, and not intended to replace JavaScript.
- The document argues that WebAssembly will enhance JavaScript by allowing efficient loading of large compiled libraries and predictable near-native performance.
This document provides an introduction to ASP.NET and discusses key concepts related to .NET programming. It describes .NET as a framework for developing OS-platform-independent and programming-language-independent applications. It explains how .NET achieves this through the use of an intermediate language (MSIL) and a common language runtime (CLR) that allows any .NET compliant language to produce code that runs on any OS with the .NET framework installed. It also discusses how .NET enables web-based and distributed applications through standards like SOAP, UDDI, and WSDL.
This document provides an introduction to ASP.NET and discusses key concepts related to .NET programming. It describes .NET as a framework for developing OS-platform-independent and programming-language-independent applications. It explains how .NET achieves this through the use of an intermediate language (MSIL) and a common language runtime (CLR) that allows any .NET compliant language to produce code that runs on any operating system with the .NET runtime installed. It also discusses how .NET enables web-based and distributed applications through standards like SOAP, UDDI, and WSDL.
Creating Your Own Static Website GeneratorSean O'Mahoney
Many people use popular client-side libraries such as React and Angular, although many don't consider server-side rendering like VueJS, nevermind creating their own.
This document provides an overview of Mono, an open source implementation of Microsoft's .NET Framework that allows developers to build and run .NET applications on non-Windows platforms. It discusses what Mono is, the languages and platforms it supports, its class libraries and components, debugging tools, and GUI frameworks. It also covers Mono's support for databases, mobile development using Xamarin, and the project's goals for full .NET Framework compatibility going forward.
Fresco is an image loading library that can greatly improve the performance and memory usage of displaying images in Android apps. It uses techniques like progressive JPEG, focus point cropping, and animations to load images efficiently in the background without blocking the UI. Many large apps like Facebook and Wikipedia use Fresco to display images smoothly while keeping memory usage low. Fresco provides up to a 90% reduction in image loading errors compared to default image loading approaches in Android.
Multiplatform C++ on the Web with EmscriptenChad Austin
IMVU is using Emscripten to bring its multiplatform C++ codebase to web browsers with HTML5 and WebGL. See how Emscripten works, how to use, and what you can expect.
A preview of Feathers 2.2 and the Feathers SDKJosh Tynjala
This document summarizes a presentation about the upcoming Feathers 2.2 release and the new Feathers SDK. Key points include: Feathers 2.2 will include new layouts, transitions, retina desktop themes, and a media player framework. The Feathers SDK will allow using Feathers components in MXML, with features like binding, inline components, and an Application subclass that starts Starling. Some limitations are Flash Builder project generation and IDE support, but future plans include improving this.
The document discusses options for setting up a local development environment for web development. It describes what a local development environment is and explains why developers need one. It then lists and compares popular options for setting up a local dev environment like XAMPP, MAMP, Vagrant, and manually installing tools. It provides instructions for configuring virtual hosts with XAMPP and MAMP on Windows and Mac. Finally, it recommends Vagrant and MAMP as good choices and provides additional setup details for Vagrant.
1) The document discusses the OpenIO Summit '17 which covered topics including ARM hardware, object storage deployment frameworks and APIs, and demonstrations.
2) It describes OpenIO SDS technology as having a very lightweight software stack that is easy to scale across nodes without rebalancing and features load balancing for optimal data placement.
3) ARM boards are presented as a good hardware option for OpenIO SDS due to their low cost, power consumption, and heat, with the potential benefit of one board per disk for failure domain isolation and cost-effective scaling.
4) The OVH IAAS API is highlighted for its ability to deploy OpenIO SDS clusters on ARM nodes through automated builds, installations, and aggregation using REST APIs.
Midwest php 2013 deploying php on paas- why & howdotCloud
Deploying PHP applications to Platform as a Service (PaaS) can provide several benefits over traditional hosting methods. PaaS allows developers to quickly deploy new environments for testing code changes. It also handles tasks like optimizing stacks, upgrading software, and providing comprehensive routing. PaaS aims to make deployment as simple as uploading code and eliminates the need to manually configure servers. While there is an initial learning curve to using PaaS tools and reworking some applications, it can improve the development to production workflow and allow applications to easily scale on demand.
MS Experiences 17 - Xamarin: Future of Mobile DevelopmentJames Montemagno
Xamarin enabled C # developers to become native iOS, Android, and Windows mobile app developers overnight. In this session, learn how to leverage your existing .NET and C # skills to create iOS and Android mobile apps in Visual Studio with Xamarin. In addition to allowing you to write your iOS and Android apps in C #, Xamarin lets you reuse existing .NET libraries and share your business logic across iOS, Android, and Windows apps. During this session we cover the Xamarin platform and how to create native iOS, Android, and Windows apps in C #. See what is new and next for Xamarin development inside of Visual Studio. Moreover, we focus on the code, with several live coding adventures throughout the entire session and showing you the latest and greatest in native cross-platform development.
WebGL games with Minko - Next Game Frontier 2014Minko3D
- Minko is a framework for building 3D applications in C++ that can be deployed to desktops, mobiles, and the web.
- It uses C++ as its core language and Lua for scripting. Applications are compiled to JavaScript using Emscripten to run in HTML5 and WebGL.
- Minko provides 3D graphics and physics engines, file format support, and tools to develop once and deploy everywhere. This allows building complex 3D games and experiences that achieve high performance across platforms.
Jfokus 2015 - Immutable Server generation: the new App DeploymentAxel Fontaine
Slides from my Jfokus 2015 talk
Abstract:
======
App deployment and server setup are complex, error-prone and time-consuming. They require OS installers, package managers, configuration recipes, install scripts, server hardening and more. But... Is this really necessary? What if we could start over and radically simplify all this? What if, within seconds, we could wrap our app into the smallest machine required to run it and transfer this machine unchanged from our laptop to the cloud? How do the various platforms and tools like AWS, Docker and Boxfuse fit into this picture? When should you use them? This talk is for developers and architects wishing to radically improve and simplify how they deploy their applications. It takes Continuous Delivery to a whole new level. Welcome to Immutable Infrastructure. This is the new black.
Is parallel programming hard? And if so, what can you do about it?John Lee
This document summarizes a presentation given by Paul McKenney titled "Is Parallel Programming Hard, And If So, What Can You Do About It?" at the 2011 Android System Developer Forum.
Paul McKenney has been doing parallel programming for over 20 years. He grew up in rural Oregon and has worked at SRI International, Sequent Computer Systems, and IBM, where he is currently a Distinguished Engineer and CTO of the Linux Technology Center.
Historically, parallel programming has been difficult due to parallel systems being rare and expensive, a lack of publicly available parallel code, and technological obstacles like synchronization overhead, deadlock, and data races. However, these challenges have lessened as parallel systems have become much
Cis 1-202-ch9Z Open Source Group PROJECT Mac OS X vs Windows vs Unix Linux.pptxssuser6109f31
This document compares the operating systems Mac OS, Windows, and Linux/Unix. It provides information on the history, developers, source models, and platforms supported for each OS. Key features like price, security, and usability are compared. System requirements for memory, storage, and processor are outlined for MacOS, Windows 10/11, and a typical Linux distro. Pros and cons of each OS are discussed for different user types. In the end, MacOS is recommended for office/school work due to optimized software, Windows is best overall due to wide industry support and gaming, while Linux offers best resource utilization and is open source.
Basics overview of C#. you can refer this link of learning more about C# interview questions
http://skillgun.com/csharp/interview-questions-and-answers
This document provides an introduction to ASP.NET by discussing key concepts such as the .NET framework, Common Language Runtime, and Common Type System which allow for language and platform independence. It also describes how ASP.NET enables web-enabled and distributed applications using technologies like XML, SOAP, and WSDL. The document outlines the architecture and components of the .NET framework including the common language runtime, class libraries, and support for different application types.
Immutable Server generation: The new App DeploymentAxel Fontaine
From JavaZone 2014
Video: https://vimeo.com/105851488
Abstract:
App deployment and server setup are complex, error-prone and time-consuming. They require OS installers, package managers, configuration recipes, install and deployment scripts, server tuning, hardening and more. But... Is this really necessary? Are we trapped in a mindset of doing things this way just because that's how they've always done?
What if we could start over and radically simplify all this? What if, within seconds, and with a single command, we could wrap our application into the bare minimal machine required to run it? What if this machine could then be transported and run unchanged on our laptop and in the cloud? How do the various tools like Docker and Boxfuse fit into this picture? What are their strengths and weaknesses? When should you use them?
This talk is for developers and architects wishing to radically improve and simplify how they deploy their applications. It takes Continuous Delivery to a level far beyond what you've seen today. Welcome to Immutable Server generation. This is the new black.
Software can be categorized into different types:
1. Application programs that users directly interact with like text editors, graphics software, and office programs.
2. System software like operating systems and drivers that enable interaction between hardware and application programs.
3. Programming systems that are used to create new application programs through programming languages and tools like compilers, linkers, and IDEs.
4. Archiving and compression utilities allow users to back up files, reduce file sizes, and transfer files more efficiently through file compression and archives.
- The document discusses Brendan Eich and Brave Software and their work on WebAssembly and improving the web.
- WebAssembly is described as a new standard being developed to define a compact, portable binary format that runs safely at near-native speed, as well as a text format for viewing the source.
- It is positioned as a compiler target for the web, a virtual instruction set, an evolution of asm.js, and not intended to replace JavaScript.
- The document argues that WebAssembly will enhance JavaScript by allowing efficient loading of large compiled libraries and predictable near-native performance.
This document provides an introduction to ASP.NET and discusses key concepts related to .NET programming. It describes .NET as a framework for developing OS-platform-independent and programming-language-independent applications. It explains how .NET achieves this through the use of an intermediate language (MSIL) and a common language runtime (CLR) that allows any .NET compliant language to produce code that runs on any OS with the .NET framework installed. It also discusses how .NET enables web-based and distributed applications through standards like SOAP, UDDI, and WSDL.
This document provides an introduction to ASP.NET and discusses key concepts related to .NET programming. It describes .NET as a framework for developing OS-platform-independent and programming-language-independent applications. It explains how .NET achieves this through the use of an intermediate language (MSIL) and a common language runtime (CLR) that allows any .NET compliant language to produce code that runs on any operating system with the .NET runtime installed. It also discusses how .NET enables web-based and distributed applications through standards like SOAP, UDDI, and WSDL.
Here I am sharing a ppt for .net framework which is very useful for understanding the framework of Microsoft dot net.
Here i mentioning one link which is very useful for preparing interviews in c# as fresher
http://skillgun.com/csharp/interview-questions-and-answers
This document summarizes the Minko 3D graphics engine. Minko 3 will allow scripting 3D apps with Lua and C++ across platforms like Windows, Mac, Linux, Android, iOS, HTML5 and Flash. Key points include:
- Minko 3 is being developed to target new platforms while maintaining a "design once, deploy everywhere" workflow and improving performance.
- It will use C++11 as the core framework with plugins and Lua for scripting 3D apps, allowing development once and deployment across platforms.
- Lua was chosen over ActionScript for its better performance, operators overloading, and support for coroutines which allow non-blocking functions.
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. It allows JavaScript to be run on the server-side and uses asynchronous and event-driven programming. Node.js uses non-blocking I/O to make it efficient for data-intensive real-time applications that run across distributed devices. It has a large community and ecosystem of open source libraries. While single-threaded, it allows for high concurrency through asynchronous and event-driven programming without threads.
The document discusses computer programming concepts including what a computer is, what a program and programming are, different types of programs, compilation and linking of code, intermediate languages to achieve OS independence, and .NET framework which provides a common language infrastructure for developing distributed applications. It also discusses technologies like XML, SOAP, and WSDL that enable a common language for the internet.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/temporal-event-neural-networks-a-more-efficient-alternative-to-the-transformer-a-presentation-from-brainchip/
Chris Jones, Director of Product Management at BrainChip , presents the “Temporal Event Neural Networks: A More Efficient Alternative to the Transformer” tutorial at the May 2024 Embedded Vision Summit.
The expansion of AI services necessitates enhanced computational capabilities on edge devices. Temporal Event Neural Networks (TENNs), developed by BrainChip, represent a novel and highly efficient state-space network. TENNs demonstrate exceptional proficiency in handling multi-dimensional streaming data, facilitating advancements in object detection, action recognition, speech enhancement and language model/sequence generation. Through the utilization of polynomial-based continuous convolutions, TENNs streamline models, expedite training processes and significantly diminish memory requirements, achieving notable reductions of up to 50x in parameters and 5,000x in energy consumption compared to prevailing methodologies like transformers.
Integration with BrainChip’s Akida neuromorphic hardware IP further enhances TENNs’ capabilities, enabling the realization of highly capable, portable and passively cooled edge devices. This presentation delves into the technical innovations underlying TENNs, presents real-world benchmarks, and elucidates how this cutting-edge approach is positioned to revolutionize edge AI across diverse applications.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
5. Why Native Reason?
Is performance still an issue in this era of cheap 486
computers and super-fast Pentium computers? You
bet. How many programs that you use really run so
fast that you wouldn't be happier if they ran faster?
We're so used to slow software that when a compile-
and-link sequence that took two minutes on a PC
takes just ten seconds on a 486 computer, we're
ecstatic—when in truth we should be settling for
nothing less than instantaneous response.
- Michael Abrash’s Graphics Programming Black Book, 1997
17. Esy
• Source package manager
• Built in Reason / OCaml
• Uses OPAM:
• Codebase
• Protocol
• Other sources:
• NPM
• Github
• Local links
• Like NPM, but for native code.
@andreypop
p
30. Esy on Windows: CRLF
• Carriage Return: Horizontal
• Line Feed: Vertical
• Multics -> Unix: LF
• DOS -> Windows: CRLF
• Commodore, Apple II: CR
Line Endings
Line Feed (LF)
Carriage Return
(CR)
31. Esy on Windows: Path Differences
Start Path:
“C:UsersBryanmy-projectpackage.json”
…save it to a file… and read it…
Result:
"C:UsersBryanmy-projectpackage.json"
43. Revery: Next Steps
Component Model
Simplification
Skia
<Canvas />
Custom Layout
Native Integration
Developer
Experience
Improvements
Mobile Support
Hey ReasonConf!
My name’s Bryan Phelps, and I’m so excited to be here.
My talk is titled - Making Windows Reasonable - but there’s a few things I want to talk to you about today.
First a quick intro for those who don’t know me - I’m founder of a company called outrun labs, and native reason is what I hope is our secret sauce.
Previously, I worked at Microsoft, which might explain why making things work on Windows is important to me. Even though it might not look like it from my Macbook… I’m primarily a Windows developer.
You can find me on twitter, github, discord as Bryphe.
First, I want to share with you why I’m excited about Reason - and especially native Reason.
Second, I want to talk about making esy work on Windows - and some of the hurdles and challenges we faced.
Finally, I want to share with you the way we’re using this native Reason tech to build and ship cross-platform applications.
So let’s dive in to ‘Why Native Reason’?
For that - I’d like to share a quote.
And this quote is from a famous graphics programmer, Michael Abrash - it’s from a book he wrote called the Graphics Programming Black Book. it’s now freely available on GitHub: https://github.com/jagregory/abrash-black-book/blob/master/src/chapter-01.md
I highly recommend it - even if you’re not interested in graphics, it’s a fun read and has generally applicable lessons.
-Here’s the quote -
What blows me away is that this quote is from over 20 years ago. In that time, processors have gotten 100s of times faster, our memory and disks have gotten faster with SSDs and flash drives - and yet we’re still struggling with this same exact challenge. I would argue that my PC doesn’t feel any faster than it did 10 years ago - in fact, it feels slower - its normal for apps to take 5, 10, even 20 seconds to startup.
And when we think about performance - it’s worth looking at how we build our applications.
The most popular tool today for building a cross-platform desktop application is Electron. And it’s popular for good reason - it’s never been easier for a small team to build and ship a cross-platform application. Its strength is that it allows you to develop cross-platform with confidence - what I mean by that is you can write your code, test it one platform, and be like 99% sure it’s going to work and look consistent everywhere. That’s really powerful!
Not only that - you can bring to bear the full web development ecosystem - and tools like React mean it has never been easier to build UI!
If you’re not familiar with Electron, it’s essentially bundling up Chromium and Node into a package that runs a JavaScript app.
Of course - those aren’t the only ingredients - there’s always going to be some platform APIs underneath, some low-level libraries for things like text rendering or OpenGL, Vulkan, Metal, etc
Above Node and Chromium, you have all your NPM modules - and if you’re using React, ReactJS would be one of those dependencies. It’s not uncommon to have thousands of these dependencies.
Then, finally, you get your application code on top
It’s a lot of layers. And we do get something for it - in the sense that Electron has made it easier than ever to build apps.,
But these layers and abstractions come at a cost. And part of that is a performance cost - a build time cost - and sometimes a complexity cost. Not only do you have to be aware of your application layer, but ultimately you’re responsible for everything below it as well.
The fact is there just isn’t a great alternative today - especially not if you want to develop your application in a functional React, style.
But what if we could streamline it?
Remove the JavaScript, Node, and Chromium - and replace it with a compile-to-native react implementation.
Replace our NPM modules with a smaller, more streamlined set of compile-to-native dependencies.
What would that look like?
This is where we could get our performance back!
It’s kind of like going back in time - except we’re applying all the great learnings from React back.
With Reason - it’s like we have a language purpose built for expressing this idea of React - a functional UI - your UI expressed as a pure function of state. It’s paradigm has been battle-tested in the fierce, ever evolving arena of web frameworks - and now we have a language that feels like it was built for React.
Oh, and it compiles to native code.
And when you compare ReasonML to TypeScript - this is the key strength, the differentiator in my mind - the ability to not only work on the web - but the ability to compile to streamlined, high-performance, native code. And I think there is still so much untapped potential here.
On top of that, it’s not like native Reason is happening from scratch. We’re leveraging all the great investments companies like OCamlLabs and Janestreet are pouring into OCaml - continual compiler improvements and optimizations, flambda, multicore.
It’s a cool hybrid of academia exploring new ideas, and then having them applied in real-world, intense environments like Jane Street.
In a sense we’re benefitting from all that sweat and hard work - and really just repackaging for developers coming from JavaScript and React.
So now I want to dive more into building cross-platform with confidence, and how that’s happening -let’s talk about esy on windows.
A natural question to start with might be - why windows?
Can I see a show of hands - how many people are primarily windows developers? Like 2 out of 100 :)
So it really makes sense to ask why?
Well #1 - Windows is a huge market of developers. And obviously an underrepresented set of users in our conference and community.
And it’s sort of a chicken-and-the-egg kind of problem - if we don’t have the tooling, or seamless experience in place - how are we going to get more Windows developers to help us improve the tooling and get a better experience?
To be able to work cross-platform, you need something that can help you install dependencies, build, and run everywhere. And esy is designed for that. We want to be also be able to leverage all the great work happening in the OCaml ecosystem, from the package manager - because there is so much high quality code there.
Esy is a source packmanager, which means it builds from source code. This is desirable, because you can audit the sources your building instead of getting black-box libraries. But it also adds a lot of complexity - figuring out when a recompilation is needed, sometimes the environment can affect the build output.
There are several sources esy can work with - the ocaml package repository, the node package repository, github, it can pull sources locally.
Really I think the ‘esy-est’ way to think about is like NPM, but for native code. Another way you can look at it though, from the architecture, is that it’s really like react-the-idea - expressed as a package manager. Your build output as a pure function of your source code and your dependencies.
@andreypopp is the primary developer and has done the vast majority of work on it.
I just want to show a quick demo of how this works on Windows. This is using the `hello-reason` project on GitHub - the simplest starter project for Reason.
https://github.com/esy-ocaml/hello-reason
This is windows powershell, and I’m in the hello-reason starter project (https://github.com/esy-ocaml/hello-reason). I’m going to install the dependencies, build, and run.
Using it is a lot like NPM - I say ‘esy install’ and ‘esy build’
Now the first you build - it isn’t going to be this fast - all your dependencies have to be built. But subsequent builds are fast.
Here’s the `package.json` for this project - what’s cool is it shows us using sort of the full-extent of the capabilities.
It’s picking up `dune`, `merlin`, and `odoc` from the ocaml package manager repo as well as several NPM dependencies. It can also get dependencies from github, or locally - which is great when we you need to test a fix across several packages!
—
There’s another cool feature that esy provides called Sandboxes - which let you have mini-environments in a project. This is great for testing & benchmarking. Here’s a demo of that in action.
It wasn’t always this “easy” - there were really two classes of challenges we had in getting esy to work on Windows.
The first were ecosystem challenges - challenges that are specific to the OCaml or OPAM ecosystem. And this is primarily that a lot of packages depend on ‘bashisms’ bash or POSIX utilities like grep and awk.
The core OCaml compiler builds and runs great on Windows. That’s a testament to a lot of work from OCaml Labs and other contributors like Jane Street.
And there’s a build tool for native Reason and OCaml called dune that’s quickly becoming the standard - and it also works great cross-platform, and often helps us sidestep needing these bash utilities. So things are getting better! But there are still a lot of packages and dependencies that need help to run on Windows.
It turns out some older, but still core, OCaml packages depend on having POSIX utilities - sometimes as part of their build step, or they need make to install native code, they do some string replacement with awk - all kinds of random things that are just expected to work.
Now dune - the basically-standard build system for OCaml - is actually making this a lot better. But there are still a lot of libraries that haven’t been upgraded to use Dune, yet. So how we do fix this?
The first solution we looked at, that seemed like a perfect fit, was to use this feature of Windows - called the windows subsystem for Linux (or WSL short).
This is a new feature where you can essentially host a Linux distro on Windows.
It sounds perfect; but as we investigated, at least at the time, there was no one-click install - meaning we wouldn’t be able to have that simple flow of install esy, esy install, esy build. We’d need to have manual steps for users to not only enable WSL, but pick out a distro and set that up, and then install dependencies specific to that distribution. So we felt that was too much of a hurdle
The other option we looked at was Cygwin. Cygwin has been around for a long-time and is pretty mature.
Today, if you want to use OCaml packages on Windows - Cygwin is the happy path. It’s the blessed way to get the ocaml package manager working on Windows.
It provides a POSIX environment, with all the utilities we need - and the MingW cross-compilers to output windows-native binaries.
And importantly for esy, to make setup ‘easy’ - we could deliver it in a silent, unattended install.
I want to reiterate that binaries we produce are native windows executables - the executables that come as output have no dependency on Cygwin at all.
To facilitate that, we created this NPM package called `esy-bash`. Which is really a thin wrapper around Cygwin and around bash that is bundled with Cygwin. It works from the CLI or via an API - and you can send it commands pretending to be in a POSIX environment. I’ll show you a quick demo of what that looks like.
I’ll show you a demo of what I mean about `esy-bash` used as a CLI application. I’m going over to a Windows Powershell environment, where I’ve already npm installed esy-bash.
Esy-bash can be used as a CLI application, or as a JavaScript API. I’ll show you the CLI version - it’s pretty simple, it just takes a command to run in bash as an argument.
You can access to all the POSIX utilities necessary, like make, or ls - we can even ls the root and see what the Cygwin sandbox root looks like.
This gives us a layer of abstraction - so that esy can forward commands to this esy-bash sandbox, and have them just work.
Line endings cross-platform are a mess. And this is to blame.
This is a teletype machine - it’s 60s era hardware, and its kind of how we computed before had these nice retina displays. Instead of a screen, there’d actually be a physical printout. Can you imagine?
And going to the next line was actually a two-part manuever. There was the carriage return, which was a horizontal motion of the print head - moving the print head back to the far left of the sheet. Then there was the line feed, which moving the sheet up vertically. Pressing the enter key meant doing both - advancing the sheet, and moving the carriage back to the start of the line.
On Multics, and Unix and beyond inherited this - they decided to simplify. It didn’t make sense to have just a line feed - so if you meant that, the driver just helped you out and assumed you meant both.
On Dos, and Windows, there was no such assistance - you had to send both, and that lives on to this day.
On some other machines, like Commodore, Apple II - they were different expected a CR. So we have all these standards.
The problem though is Windows decided to handle this at the software level - there are two ways to read a binary stream in C - as a text mode which does automatic conversion, or a binary mode which doesn’t. And on other platforms - this is a no-op - and that makes it easy to pick the wrong one by default.
Windows uses the backslash as its path separator. This also happens to be the escape character.
So if you’re not careful - you can get this sort of unexpected escaping popping up!
There were a few other bonus challenges - like path length limits, environment size limits, issues with symlinks - but esy works on Windows now.
With esy - we have a one-click install, and the ability to setup and run projects on all platforms. This is really powerful, because it is the first step to developing cross-platform with confidence - like we do with Node, Electron, and NPM.
Esy + rely + ci
Having that tooling is really the beginning of the story, not the end - I want to share with you a few projects myself and collaborators are working on
The first project is Revery
Bullet points
Platform-agnostic UI is a trade-off. It means that we render the same UI the same everywhere. This is great for that idea of cross-platform with confidence, because you know it will look the same everywhere. But - sometimes that’s not the right trade-off, and if you’re looking for something like Revery that uses Platform widgets - check out Brisk.
The team that built Brisk created brisk-reconciler - which is our ‘native React’
This is the simplest, smallest Revery app - simply opens a Window, and renders an empty view.
The `App.start` is the entry point, and takes a function that gets passed an app instance.
And with that app instance - you can create a window, and with that window, you can create a UI.
`UI.start` is a lot like `ReactDOM.render` just a native rendition
Courtesy of a project called brisk-reconciler, we actually have native, type-safe hooks as part of our library.
And this concept of type-safe hooks really showcases the power of the Reason and OCaml type-system. Before I learned about Reason, coming from a C, C#, TypeScript background - I kind of thought all type systems were more less the same.
But this idea of type-safe hooks is something that you can’t model in those sorts of type systems. So it was kind of a gateway drug for me to learn more about the type system.
We would like to reduce this boilerplate, and still get the same compile-time benefits, so that’s an active area of exploration.
I’ll show a quick demo of the native example app
Just like before - we can use esy to install and build the project.
I’ll show a quick demo of the native example app
So I switched gears, I wanted to show a few demos on Mac to show that things actually work cross-platform.
Revery isn’t done - there’s a lot we need to do! This is just a mental model of the next steps I see for Revery - there’s no dates or promises in terms of any of these deliverables. Just ideas.
Component Model Simplification - pax’s to streamline component creation and usage of hooks. Less boilerplate!
2) Integrate Skia - a battle-tested, high-performance vector graphics library. Used by Sublime Text, Flutter, Chrome.
3) Custom Layout - today our only primitive is ‘flex’ - but we’d like to be able model other layout systems too, and let the user of the framework determine the layout strategy.
4) Native Integration - text input, accessibility
5) DX - performance traces, debugging, REPL support, live-reloading and time-travel
6) Mobile support - compile to iOS and Android
Kind of a fun with Revery is that we get the opportunity to revisit our assumptions - we’re not shackled to the DOM or the performance characteristics of it.
Revery was built from the ground-up for Onivim 2.
I built a code editor with Electron. The goal was to be a hybrid of Vim and modern code editors like Visual Studio Code, Atom, Sublime Text.
We got pretty far with it - it was downloaded ~150k times, and there was a clear niche that wanted this hybrid of best-of-both-worlds, works-out-of-the-box. However, we ran into several performance issues - and around the time I was figuring out what to do next, I learned about Reason - and realized Reason-Native would be the perfect technology platform to build a v2 and really deliver on that vision.
So we got a new cool logo and went to work. We rearchitected - we decided to build our front-end in native Reason.
We wanted to leverage all the great work that is happening in the VSCode ecosystem - things like language support of course, but also things like themes, source control integration, tasks, even debugging. So we are using the VSCode extension host as our ‘backend’. That work is in development right now.
This is the latest build of Onivim 2. It’s definitely pre-alpha quality - we have so much work to do in terms of basic functionality - not to mention fit-and-finish and design. But we’re moving along and making progress.
A major win for us is startup performance - startup is essentially instant. I’m going to start it up a couple times. With this Reason native tech stack - we’ve been able to deliver on performance for startup. Our v1 started in about 5s, whereas our v2 starts in less than half a second - 10x improvement. Memory usage is another major win. What’s crazy is that there is still a lot of headroom, we haven't even integrated the ocaml optimizing compiler.
We're still missing a lot - but there's some non-trivial UI that demonstrates what we can do with Revery.
Even though there is still a lot of work ahead - features to implement and bugs to fix- I think the foundation we have is really promising. We can build and ship a reason native application, and we’ve already seen tremendous benefit in our performance with this new stack. Now it’s all about delivering the features and functionality and stabilizing on top of it.
We’re building Onivim 2 in the open - and we’re taking pre-orders. So if you’re interested in helping to support us building the editor, or supporting projects like Revery, you can do that by pre-order.
—-
We plan on raising the price as we go - as we stabilize and add features and meet our milestones. We’re also experimenting with a ‘time delay’ license - we’re building the app in the open, under a proprietary license, but 18 months after a commit hits master, we dual-license as MIT. So in reality, this funding model is helping us build better open source than we’d otherwise be able to. And it keeps a fire under us - if we’re not implementing new features or fixes - why not just the MIT licensed one?
I hope it’s successful, my hope is that more people could use a functional language like this to build applications.
Everything I’ve been building is standing on the shoulders of others - there is so much great work happening in the OCaml ecosystem, the Reason ecosystem, and I’ve been tremendously appreciative of all the help and support community and from the Reason association.
I actually had trouble making this slide just because there were so many people, and so much tech, that has helped us get to where are now. So I’m really sorry if I missed anyone!
It’s tough being an early adopter - but we’re all pioneers together, exploring this wild west, this new frontier.
That’s all I have - thanks for listening! If you want more info on what I’m building - check out outrunlabs.com or onivim.io. Feel free to reach out to me on twitter or Discord
Thank you!