A journey through the wonderful world of Node.js C++ addons. This talk was given at the September 8, 2015 NodeMN meetup.
Code: https://github.com/cb1kenobi/nodemn
Writing native bindings to node.js in C++nsm.nikhil
The document provides an overview of how to build a C/C++ link to the V8 JavaScript engine and Node.js in order to use C/C++ libraries and functions in Node.js. It discusses topics like initializing V8, handling handles, injecting primitives, defining functions and objects, adding methods, asynchronous I/O, and linking external libraries. Code examples are provided for basic functions, objects, inheritance using ObjectWrap, and asynchronous functions.
node.js and native code extensions by examplePhilipp Fehre
Over the last years node.js has evolved to be a great language to build web applications. The reason for this is not only that it is based on JavaScript which already is established around "the web" but also that it provides excellent facilities for extensions, not only via JavaScript but also integration of native C libraries. Couchbase makes a lot of use of this fact making the Couchbase node.js SDK (Couchnode) a wrapper around the C library providing a node.js like API, but leveraging the power of a native C library underneat. So how is this done? How does such a package look like? Let me show you how integration of C in node.js works and how to "read" a package like Couchnode.
Kenneth Geisshirt gave a presentation on extending Node.js using C++. He covered why to write extensions in C++, demo C++ classes, building extensions, wrapping classes, methods, callbacks, exceptions, and more. The goal was to learn the basics of V8 internals, wrapping C++ classes, and writing an extension.
This document provides an overview of how to write Node.js modules. It discusses writing modules in JavaScript and C/C++, loading modules, publishing modules to the NPM registry, and some advanced topics like handling arguments and creating classes. The key points covered are:
- Modules can be written in JavaScript or C/C++ and exported via module.exports.
- Modules are loaded using require() and can be either core or third-party modules.
- Publishing a module to NPM involves initializing a package, uploading the files to the registry, and adding a main entry point.
- Advanced topics include getting arguments in C/C++ modules, understanding JavaScript types, and creating classes with
The document discusses extending Node.js using C++. It covers wrapping C++ classes for use in JavaScript, including setters, getters, exceptions, and instantiating objects. Examples are provided for wrapping Book and Person classes to be accessible from JavaScript. Building the extension using waf or gyp build systems is also covered. The presenter's background and the agenda are outlined initially.
This document presents an agenda for becoming a "console cowboy" by learning to be more productive using the terminal and bash shell. It covers the basic terminal tools, bash usage and configuration, utilities like grep, sed and awk, scripting with variables, conditionals and loops, and tools for developers like Homebrew, Git, Xcode and xcpretty. The goal is to stop using the mouse and automate work by writing scripts to harness the power of the Unix command line.
This document provides best practices for running Node.js in production including: using tools like istanbul for test coverage and jshint for static code analysis; optimizing for speed by using async patterns and clustering; structuring code with object literals; minimizing modules and headers; using functional programming patterns; leveraging ES6 features; choosing template engines like Nunjucks; naming middlewares; centralizing error handling; using debug tools; logging appropriately; monitoring with New Relic; using promise libraries like Bluebird; managing processes with npm scripts, Forever, or systemd/Upstart services; configuring a reverse proxy like Nginx; and referencing additional resources.
This document discusses implementing a job queue in Golang. It begins by explaining buffered and unbuffered channels, and shows examples of using channels to coordinate goroutines. It then demonstrates how to build a job queue that uses a channel to enqueue jobs and have worker goroutines process jobs from the channel concurrently. It also discusses ways to gracefully shutdown workers using contexts and wait groups. Finally, it covers topics like auto-scaling agents, communicating between servers and agents, and handling job cancellation.
The document discusses using Go language to build a distributed computing architecture with multiple machines. It covers using RabbitMQ and NSQ for queues, building a simple queue mechanism for single machine versions, and rewriting the architecture to address concurrency limits. It also discusses setting up a server-agent system with RPC communication and context cancellation to enable job cancellation.
Droidcon Berlin 2021 - With coroutines being the de facto way of exposing async work and streams of changes for Kotlin on Android, developers are obviously attempting to use the same approaches when moving their code to Multiplatform.
But due to the way the memory model differs between JVM and Kotlin Native, it can be a painful experience.
In this talk, we will take a deep dive into the Coroutine API for Kotlin Multiplatform. You will learn how to expose your API with Coroutines while working with the Kotlin Native memory model instead of against it, and avoid the dragons along the way.
Supercharging reflective libraries with InvokeDynamicIan Robertson
This document discusses using invokeDynamic to generate bytecode at runtime in order to bypass access restrictions when using reflection. It describes how invokeDynamic works, including how bootstrap methods are used to create method handles which are then wrapped in call sites. Examples are provided of bootstrap methods for accessing fields and calling methods via reflection while avoiding the performance penalties of traditional reflection. Overall, invokeDynamic allows generating bytecode that performs equivalently to handwritten code.
JavaScript has evolved significantly since its creation in 1995. It is now a major programming language used widely for both frontend and backend development. ES2015 introduced many new features to the language like let, const, classes, arrow functions and promises. Node.js allows JavaScript to be used for server-side applications and has a large ecosystem of packages. While JavaScript has its quirks, it can be a powerful language when its good parts are utilized and newer standards are adopted.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
An introduction to developing with Node.js and some useful tools to help the development and deployment processes. This talk was given at Asyncjs in Brighton
http://asyncjs.com/intro-nodejs
Csw2016 gong pwn_a_nexus_device_with_a_single_vulnerabilityCanSecWest
The document discusses exploiting an out-of-bounds (OOB) access vulnerability in Chrome's V8 JavaScript engine to install unauthorized apps. It describes triggering OOB memory reads during JSON serialization by modifying the length of an array being serialized. This allows controlling memory and leaking data, enabling arbitrary reads/writes and potentially code execution. It also demonstrates abusing inline hooking and injected scripts to install apps by simulating user interactions despite sandbox protections.
This document discusses best practices for handling errors and callbacks in Node.js applications. It covers techniques like error delegation, exception handling, error-first callbacks, avoiding nested callbacks, and using control flow libraries. It also discusses deployment strategies like using screen, restarting crashed processes, and innovating with platforms like Joyent, Nodejitsu and Heroku.
This document discusses using UniRx (Reactive Extensions for Unity) to make asynchronous network requests in a reactive and error-handling manner. Key points include:
1. Wrapping ObservableWWW requests in an ObservableClient to handle errors, timeouts, and retries in a consistent way across methods.
2. Using LINQ operators like Select, Catch, and Timeout to process the network response and handle errors in a reactive pipeline.
3. Implementing more complex retry logic by publishing and connecting an observable to retry requests automatically.
4. Combining multiple asynchronous requests using WhenAll to run them in parallel.
Node.js is an asynchronous JavaScript runtime that allows for efficient handling of I/O operations. The presentation discusses developing with Node.js by using modules from NPM, debugging with node-inspector, common pitfalls like blocking loops, and best practices like avoiding large heaps and offloading intensive tasks. Key Node.js modules demonstrated include Express for web frameworks and Socket.io for real-time applications.
1. The document discusses Docker containers, Docker machines, and Docker Compose as tools for building Python development environments and deploying backend services.
2. It provides examples of using Docker to run sample Python/Django applications with MySQL and PostgreSQL databases in containers, and load testing the applications.
3. The examples demonstrate performance testing Python REST APIs with different database backends and caching configurations using Docker containers.
Everything you wanted to know about Stack Traces and Heap DumpsAndrei Pangin
Stack traces and heap dumps are not just debugging tools; they open a doorway to the very heart of the Java Virtual Machine. This session is focused on peculiarities of JDK somehow related to heap walking and thread stacks.
• How to create dump in production without side effects?
• What is the performance impact of stack traces?
• How do jmap and jstack work under the hood, and what is special about 'forced' mode?
• Why do all profilers lie, and how to deal with it?
• How to scan heap using JVMTI?
The presentation supported by the live demos will address all these questions. It will also introduce new Java 9 Stack-Walking API (JEP 259) and reveal some useful but little known features of HotSpot JVM.
Hiveminder - Everything but the Secret SauceJesse Vincent
Ten tools and techniques to help you:
Find bugs faster バグの検出をもっと素早く
Build web apps ウェブアプリの構築
Ship software ソフトのリリース
Get input from users ユーザからの入力を受けつける
Own the Inbox 受信箱を用意する
今日の話
TDC2018SP | Trilha Go - Processando analise genetica em background com Gotdc-globalcode
The document discusses using Faktory, an open-source job queue written in Go, to process genetic analysis jobs in the background. It describes setting up Faktory, creating jobs that call the vsa dx command, registering a Go worker to process jobs, and integrating it with an API. This allows asynchronously processing many jobs efficiently using a single lightweight machine.
There is hardly a Senior Java developer who has never heard of sun.misc.Unsafe. Though it has always been a private API intended for JDK internal use only, the popularity of Unsafe has grown too fast, and now it is used in many open-source projects. OK.RU is not an exception: its software also heavily relies on Unsafe APIs.
During this session we'll try to understand what is so attractive about Unsafe. Why do people keep using it regardless the warnings of removal from future JDK releases? Are there any safe alternatives to private API or is it absolutely vital? We will review the typical cases when Java developers prefer to go unsafe and discuss major benefits and the drawbacks of it. The report will be supported by the real examples from OK.RU experience.
The document shows examples of using blocks and closures in Objective-C and C++, including passing blocks as parameters to functions and defining block types. It also demonstrates capturing values from outer scopes within blocks by copying blocks. Various block examples are provided to illustrate block syntax and usage.
This document discusses Behavior Driven Development (BDD) and the Spock testing framework. It provides an overview of BDD principles and the Given-When-Then syntax. It also demonstrates how to write Spock specifications in Java and Groovy, including data-driven tests, mocks, rules, and extensions. Finally, it shows how to use Spock for testing Grails applications in Eclipse.
The document discusses building a web application using Python and MongoDB to allow development team members to explore MongoDB. It describes setting up projects using TurboGears2, SQLAlchemy, and Ming to work with both SQL and MongoDB databases. The application allows tracking expenses and incomes. SQLAlchemy and Ming ORMs provide similar declarative interfaces, with Ming inspired by SQLAlchemy. Sprox and TGAdmin help generate CRUD functionality. Data is stored using either the SQLAlchemy or Ming ORM approaches.
The document provides an overview of new features introduced in C# 6.0, including static using, string interpolation, dictionary initializers, auto-property initializers, nameof expression, await in catch/finally blocks, null conditional operator, expression-bodied members, and extension methods used with static using. Code examples are provided to demonstrate the usage of each new feature.
Node.js is a JavaScript runtime built on Chrome's V8 engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Key features include being asynchronous and event-driven, very fast, single-threaded but highly scalable, and having no buffering. Node.js is well-suited for real-time applications with small chunks of data like chat apps and social networks. Common modules include HTTP, file system, and events. Debugging can be done using console.log or the built-in debugger in Node or Chrome developer tools.
This document provides instructions for setting up Node and npm on different operating systems like Mac OS X, Ubuntu, CentOS, and Windows. It discusses installing Node using tools like Homebrew, package managers, Chocolatey, and nodist. It also covers checking Node versions, using Node Version Managers like nvm and nodist, installing native modules and node-gyp on Windows, using the Node Package Manager (npm), and running Node on system startup with forever.
The document discusses using Go language to build a distributed computing architecture with multiple machines. It covers using RabbitMQ and NSQ for queues, building a simple queue mechanism for single machine versions, and rewriting the architecture to address concurrency limits. It also discusses setting up a server-agent system with RPC communication and context cancellation to enable job cancellation.
Droidcon Berlin 2021 - With coroutines being the de facto way of exposing async work and streams of changes for Kotlin on Android, developers are obviously attempting to use the same approaches when moving their code to Multiplatform.
But due to the way the memory model differs between JVM and Kotlin Native, it can be a painful experience.
In this talk, we will take a deep dive into the Coroutine API for Kotlin Multiplatform. You will learn how to expose your API with Coroutines while working with the Kotlin Native memory model instead of against it, and avoid the dragons along the way.
Supercharging reflective libraries with InvokeDynamicIan Robertson
This document discusses using invokeDynamic to generate bytecode at runtime in order to bypass access restrictions when using reflection. It describes how invokeDynamic works, including how bootstrap methods are used to create method handles which are then wrapped in call sites. Examples are provided of bootstrap methods for accessing fields and calling methods via reflection while avoiding the performance penalties of traditional reflection. Overall, invokeDynamic allows generating bytecode that performs equivalently to handwritten code.
JavaScript has evolved significantly since its creation in 1995. It is now a major programming language used widely for both frontend and backend development. ES2015 introduced many new features to the language like let, const, classes, arrow functions and promises. Node.js allows JavaScript to be used for server-side applications and has a large ecosystem of packages. While JavaScript has its quirks, it can be a powerful language when its good parts are utilized and newer standards are adopted.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
An introduction to developing with Node.js and some useful tools to help the development and deployment processes. This talk was given at Asyncjs in Brighton
http://asyncjs.com/intro-nodejs
Csw2016 gong pwn_a_nexus_device_with_a_single_vulnerabilityCanSecWest
The document discusses exploiting an out-of-bounds (OOB) access vulnerability in Chrome's V8 JavaScript engine to install unauthorized apps. It describes triggering OOB memory reads during JSON serialization by modifying the length of an array being serialized. This allows controlling memory and leaking data, enabling arbitrary reads/writes and potentially code execution. It also demonstrates abusing inline hooking and injected scripts to install apps by simulating user interactions despite sandbox protections.
This document discusses best practices for handling errors and callbacks in Node.js applications. It covers techniques like error delegation, exception handling, error-first callbacks, avoiding nested callbacks, and using control flow libraries. It also discusses deployment strategies like using screen, restarting crashed processes, and innovating with platforms like Joyent, Nodejitsu and Heroku.
This document discusses using UniRx (Reactive Extensions for Unity) to make asynchronous network requests in a reactive and error-handling manner. Key points include:
1. Wrapping ObservableWWW requests in an ObservableClient to handle errors, timeouts, and retries in a consistent way across methods.
2. Using LINQ operators like Select, Catch, and Timeout to process the network response and handle errors in a reactive pipeline.
3. Implementing more complex retry logic by publishing and connecting an observable to retry requests automatically.
4. Combining multiple asynchronous requests using WhenAll to run them in parallel.
Node.js is an asynchronous JavaScript runtime that allows for efficient handling of I/O operations. The presentation discusses developing with Node.js by using modules from NPM, debugging with node-inspector, common pitfalls like blocking loops, and best practices like avoiding large heaps and offloading intensive tasks. Key Node.js modules demonstrated include Express for web frameworks and Socket.io for real-time applications.
1. The document discusses Docker containers, Docker machines, and Docker Compose as tools for building Python development environments and deploying backend services.
2. It provides examples of using Docker to run sample Python/Django applications with MySQL and PostgreSQL databases in containers, and load testing the applications.
3. The examples demonstrate performance testing Python REST APIs with different database backends and caching configurations using Docker containers.
Everything you wanted to know about Stack Traces and Heap DumpsAndrei Pangin
Stack traces and heap dumps are not just debugging tools; they open a doorway to the very heart of the Java Virtual Machine. This session is focused on peculiarities of JDK somehow related to heap walking and thread stacks.
• How to create dump in production without side effects?
• What is the performance impact of stack traces?
• How do jmap and jstack work under the hood, and what is special about 'forced' mode?
• Why do all profilers lie, and how to deal with it?
• How to scan heap using JVMTI?
The presentation supported by the live demos will address all these questions. It will also introduce new Java 9 Stack-Walking API (JEP 259) and reveal some useful but little known features of HotSpot JVM.
Hiveminder - Everything but the Secret SauceJesse Vincent
Ten tools and techniques to help you:
Find bugs faster バグの検出をもっと素早く
Build web apps ウェブアプリの構築
Ship software ソフトのリリース
Get input from users ユーザからの入力を受けつける
Own the Inbox 受信箱を用意する
今日の話
TDC2018SP | Trilha Go - Processando analise genetica em background com Gotdc-globalcode
The document discusses using Faktory, an open-source job queue written in Go, to process genetic analysis jobs in the background. It describes setting up Faktory, creating jobs that call the vsa dx command, registering a Go worker to process jobs, and integrating it with an API. This allows asynchronously processing many jobs efficiently using a single lightweight machine.
There is hardly a Senior Java developer who has never heard of sun.misc.Unsafe. Though it has always been a private API intended for JDK internal use only, the popularity of Unsafe has grown too fast, and now it is used in many open-source projects. OK.RU is not an exception: its software also heavily relies on Unsafe APIs.
During this session we'll try to understand what is so attractive about Unsafe. Why do people keep using it regardless the warnings of removal from future JDK releases? Are there any safe alternatives to private API or is it absolutely vital? We will review the typical cases when Java developers prefer to go unsafe and discuss major benefits and the drawbacks of it. The report will be supported by the real examples from OK.RU experience.
The document shows examples of using blocks and closures in Objective-C and C++, including passing blocks as parameters to functions and defining block types. It also demonstrates capturing values from outer scopes within blocks by copying blocks. Various block examples are provided to illustrate block syntax and usage.
This document discusses Behavior Driven Development (BDD) and the Spock testing framework. It provides an overview of BDD principles and the Given-When-Then syntax. It also demonstrates how to write Spock specifications in Java and Groovy, including data-driven tests, mocks, rules, and extensions. Finally, it shows how to use Spock for testing Grails applications in Eclipse.
The document discusses building a web application using Python and MongoDB to allow development team members to explore MongoDB. It describes setting up projects using TurboGears2, SQLAlchemy, and Ming to work with both SQL and MongoDB databases. The application allows tracking expenses and incomes. SQLAlchemy and Ming ORMs provide similar declarative interfaces, with Ming inspired by SQLAlchemy. Sprox and TGAdmin help generate CRUD functionality. Data is stored using either the SQLAlchemy or Ming ORM approaches.
The document provides an overview of new features introduced in C# 6.0, including static using, string interpolation, dictionary initializers, auto-property initializers, nameof expression, await in catch/finally blocks, null conditional operator, expression-bodied members, and extension methods used with static using. Code examples are provided to demonstrate the usage of each new feature.
Node.js is a JavaScript runtime built on Chrome's V8 engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Key features include being asynchronous and event-driven, very fast, single-threaded but highly scalable, and having no buffering. Node.js is well-suited for real-time applications with small chunks of data like chat apps and social networks. Common modules include HTTP, file system, and events. Debugging can be done using console.log or the built-in debugger in Node or Chrome developer tools.
This document provides instructions for setting up Node and npm on different operating systems like Mac OS X, Ubuntu, CentOS, and Windows. It discusses installing Node using tools like Homebrew, package managers, Chocolatey, and nodist. It also covers checking Node versions, using Node Version Managers like nvm and nodist, installing native modules and node-gyp on Windows, using the Node Package Manager (npm), and running Node on system startup with forever.
1. The document discusses running ASP.NET 5 applications on a Raspberry Pi 2 and using Docker.
2. It provides steps for installing .NET Core, ASP.NET 5, and other prerequisites on the Raspberry Pi, and includes examples of building and running a simple ASP.NET app.
3. It also covers using Docker to build an image for an ASP.NET app, including defining a Dockerfile and building/running the image to host the app in a container.
This document introduces Node.js, a platform for building scalable server-side web applications using JavaScript. It provides a brief history of Node.js, describes its key features like non-blocking I/O and the V8 JavaScript engine. Examples are given for building HTTP servers and clients. Common modules for file system access, child processes and more are demonstrated. The performance of Node.js is highlighted for building real-time applications that handle many concurrent connections with few system resources.
This document introduces Node.js, a platform for building scalable server-side web applications using JavaScript. It provides a brief history of Node.js, describes its key features like non-blocking I/O and the V8 JavaScript engine. Examples are given for building HTTP servers and clients. Common modules for file system access, child processes and more are demonstrated. The performance of Node.js is highlighted for building real-time applications that handle many concurrent connections with few system resources.
This document introduces Node.js, a platform for building scalable server-side web applications using JavaScript. It provides a brief history of Node.js, describes its key features like non-blocking I/O and the V8 JavaScript engine. Examples are given for building HTTP servers and clients. Common modules for file system access, child processes and more are demonstrated. The performance of Node.js is highlighted for building real-time applications that handle many concurrent connections with few system resources.
Node.js is a compelling platform that is quickly spreading from startups to the enterprise. As a .NET developer, why should you learn Node.js and where do you start? You will come away from this talk with the evidence and tools you need to be a productive Node.js developer. We'll walk through creating, debugging, and deploying a Node.js project to Microsoft Azure using the Node.js Tools for Visual Studio. We'll also look at popular frameworks and modules, and other learning resources.
This is a presentation I prepared for a local meetup. The audience is a mix of web designers and developers who have a wide range of development experience.
In this presentation, I'm covering the topics
Node Package Manager (npm)
initializing a node project
dependencies and dev dependencies
Installation, listing and uninstallation of node packages
Importing of modules
Node.js is a platform for building scalable server-side web applications using JavaScript. It uses non-blocking I/O and event-driven architecture to handle thousands of concurrent connections with high throughput and low latency. Some key features include using Google's V8 JavaScript engine, support for CommonJS modules, asynchronous and event-driven programming, and a large ecosystem of open-source modules. Node.js is particularly suited for real-time web applications that require bidirectional communication.
OSDC.no 2015 introduction to node.js workshopleffen
This document provides a short introduction to Node.js, Express, and MQTT for IoT applications. It discusses using Node.js and its non-blocking I/O model on devices like the Raspberry Pi. It then demonstrates setting up a basic Express app, adding static files and templates. Finally, it introduces MQTT as a lightweight protocol for IoT with publish/subscribe messaging and shows a simple example of connecting and publishing with the MQTT Node.js client library.
A story of how we went about packaging perl and all of the dependencies that our project has.
Where we were before, the chosen path, and the end result.
The pitfalls and a view on the pros and cons of the previous state of affairs versus the pros/cons of the end result.
Practical introduction to dev ops with chefLeanDog
The document provides an introduction to DevOps using Chef. It discusses configuration management and deployment automation. It introduces key Chef concepts like nodes, resources, recipes and cookbooks. It demonstrates using Chef recipes to configure a sample Ubuntu application server with Apache, Python, Django and PostgreSQL. The recipes install packages, create a virtualenv, install dependencies and configure the application using Chef resources and Ruby code.
This document provides an introduction and overview of React Native, including what it is, how it works, and how to set it up for both iOS and Android development. It discusses some key differences between React Native and traditional web development, provides code samples and explanations of common React Native components and patterns, and outlines steps for creating a new React Native project. It also addresses common errors and links to additional documentation resources.
This document provides information about CPAN (Comprehensive Perl Archive Network) including what it is, how to use it, popular modules, authors, and tips. Some key points:
- CPAN is a repository for Perl modules with over 12,000 modules and 3,400+ authors. It helps avoid duplicating code.
- Popular ways to install modules include using the CPAN shell, CPANPLUS shell, or cpanminus command line tool.
- Useful modules cover areas like web development, databases, testing, graphics, and more. Top authors contribute many modules.
- Documentation for any module can be found via its perldoc or on search.cpan.org.
This document discusses how Docker and DevOps introduce a new IT culture. It provides an overview of Docker and containers, explaining how Docker allows packaging applications and dependencies into standardized units. It then discusses aspects of the DevOps methodology like configuration management, continuous integration, and maintaining consistent environments across development and production. The document argues that Docker streamlines processes like environment setup, updates, integration testing, and infrastructure changes in a DevOps workflow.
Making your app soar without a container manifestLibbySchulze
This document discusses containerization and continuous integration/continuous delivery (CI/CD) tools. It introduces buildpacks as a way to containerize applications without needing a Dockerfile. Buildpacks inspect source code and create a plan to build and run the app by creating layers. Tekton is introduced as an open source project that aims to improve software delivery through standard CI/CD components based on Kubernetes. It contains reusable tasks, pipelines to assemble tasks, triggers for automating builds, and a catalog. A demo and Q&A session are included on the agenda.
This document discusses several options for remotely powering and controlling devices using IP switches and scripts. It describes the Dataprobe iBoot, which allows power cycling and querying devices connected to a IP-controlled power switch for $179-$235. It also discusses using PHP and Node.js scripts to control the iBoot from a script. Additionally, it mentions the $69 3GStore single-outlet and $99 2-outlet IP switches that can be controlled via CURL commands or a mobile app. Finally, it provides an example of using rsync and scripts to back up files to an external hard drive by turning it on, mounting it, backing up files, unmounting it, and turning it off.
Exploring the Titanium CLI - Codestrong 2012Chris Barber
The document summarizes the new Titanium command line interface (CLI). It describes how the previous Python-based CLI was inconsistent, poorly documented, and difficult to use and maintain. The new CLI is built with Node.js and provides a simpler and more consistent experience for creating and building Titanium projects and apps. It allows users to configure SDKs and plugins, get system information, manage modules, authenticate with Appcelerator accounts, and includes new commands for creating projects and building apps.
Cassandra - Say Goodbye to the Relational Database (5-6-2010)Chris Barber
Cassandra is a highly scalable, distributed, structured key-value store started by Facebook as an open source project. It is written in Java and provides an eventually consistent model with tunable consistency levels. Cassandra can scale to large amounts of data across commodity servers and provides high availability with no single point of failure. The document discusses Cassandra's architecture and operations, provides examples of installing and using Cassandra with PHP clients, and outlines Cassandra's roadmap for future versions.
The document discusses debugging Dojo applications. It begins with an introduction to the author Chris Barber and his background. It then covers various types of bugs that can occur, such as syntax errors and runtime errors. Old school debugging techniques are discussed such as using alerts, writing to textareas, and browser consoles. Newer techniques with try/catch/throw and djConfig.isDebug are also covered. The importance of variable scoping, naming, and JSON formatting are highlighted. Limits of JavaScript engines are briefly mentioned.
Titanium Powered Desktop & Mobile Apps (11/21/2009)Chris Barber
The document discusses Titanium, an open source platform for building desktop and mobile applications using web technologies like HTML, CSS, and JavaScript. It provides an overview of Titanium, how it differs from Adobe AIR, demonstrations of building desktop and mobile applications with Titanium, and resources for learning more. The presentation was given by Chris Barber and covered Titanium's capabilities and APIs for developing cross-platform applications.
Dojo - Javascript's Swiss Army Knife (7/15/2009)Chris Barber
This presentation is discusses the awesome Dojo Javascript Toolkit. It was originally presented 7/15/2009 and the Twin Cities Web Design User Group. Enjoy!
High Availability With DRBD & HeartbeatChris Barber
This document discusses using DRBD (Distributed Replicated Block Device) and Heartbeat to provide high availability for services like MySQL, Apache, Samba and others. It provides an overview of how DRBD works to replicate data in real-time across two nodes, and how Heartbeat is used to monitor the nodes and trigger failover of services if one node fails. The document shares the author's specific configuration and setup using these tools on two Linux servers connected by a crossover cable, and demonstrates DRBD and failover in action.
This document summarizes the 2008 MySQL Conference. It provides information on the dates, location, speakers, and over 2000 attendees. It outlines several new features discussed at the conference, including MySQL 5.1, Workbench, hot backups, memcached integration, and testing tools. It also covers topics like Amazon EC2 storage, Gearman, query caching, backups, InnoDB improvements, and scaling strategies used by companies like Facebook, Flickr, and Wikipedia.
Memcached is a high performance, distributed memory object caching system that stores data and objects in memory for fast access by applications. It uses a simple text-based protocol and handles hashing and serialization of objects. Memcached works by having applications like PHP first check memcached for cached objects, and if not found, retrieve the object from the database and store it in memcached for future requests.
Generative Artificial Intelligence (GenAI) in BusinessDr. Tathagat Varma
My talk for the Indian School of Business (ISB) Emerging Leaders Program Cohort 9. In this talk, I discussed key issues around adoption of GenAI in business - benefits, opportunities and limitations. I also discussed how my research on Theory of Cognitive Chasms helps address some of these issues
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
Book industry standards are evolving rapidly. In the first part of this session, we’ll share an overview of key developments from 2024 and the early months of 2025. Then, BookNet’s resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about what’s next.
Link to recording, presentation slides, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
This is the keynote of the Into the Box conference, highlighting the release of the BoxLang JVM language, its key enhancements, and its vision for the future.
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfSoftware Company
Explore the benefits and features of advanced logistics management software for businesses in Riyadh. This guide delves into the latest technologies, from real-time tracking and route optimization to warehouse management and inventory control, helping businesses streamline their logistics operations and reduce costs. Learn how implementing the right software solution can enhance efficiency, improve customer satisfaction, and provide a competitive edge in the growing logistics sector of Riyadh.
TrsLabs - Fintech Product & Business ConsultingTrs Labs
Hybrid Growth Mandate Model with TrsLabs
Strategic Investments, Inorganic Growth, Business Model Pivoting are critical activities that business don't do/change everyday. In cases like this, it may benefit your business to choose a temporary external consultant.
An unbiased plan driven by clearcut deliverables, market dynamics and without the influence of your internal office equations empower business leaders to make right choices.
Getting things done within a budget within a timeframe is key to Growing Business - No matter whether you are a start-up or a big company
Talk to us & Unlock the competitive advantage
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...SOFTTECHHUB
I started my online journey with several hosting services before stumbling upon Ai EngineHost. At first, the idea of paying one fee and getting lifetime access seemed too good to pass up. The platform is built on reliable US-based servers, ensuring your projects run at high speeds and remain safe. Let me take you step by step through its benefits and features as I explain why this hosting solution is a perfect fit for digital entrepreneurs.
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
AI and Data Privacy in 2025: Global TrendsInData Labs
In this infographic, we explore how businesses can implement effective governance frameworks to address AI data privacy. Understanding it is crucial for developing effective strategies that ensure compliance, safeguard customer trust, and leverage AI responsibly. Equip yourself with insights that can drive informed decision-making and position your organization for success in the future of data privacy.
This infographic contains:
-AI and data privacy: Key findings
-Statistics on AI data privacy in the today’s world
-Tips on how to overcome data privacy challenges
-Benefits of AI data security investments.
Keep up-to-date on how AI is reshaping privacy standards and what this entails for both individuals and organizations.
Quantum Computing Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
2. About Me
• Lead Software Engineer at
Appcelerator
• JavaScript hacker since 2000
• Open source
o Titanium
o Dojo Toolkit
• @cb1kenobi
o https://github.com/cb1kenobi
o https://twitter.com/cb1kenobi
3. My Projects
• node-ios-device
o https://www.npmjs.com/package/node-ios-device
o Talks to Apple’s MobileDevice framework to query iOS devices, install
apps, and tail syslog
• lcdstats
o https://www.npmjs.com/package/lcdstats
o Prints system info to LCD screen using USB
8. Example Addon
• example.cpp
o Your C++ file
• binding.gyp
o GYP file that says what and how your C++ should be compiled
• package.json
o “gypfile”: true
o Tells NPM to run node-gyp
14. GYP
• Generate Your Projects
• https://code.google.com/p/gyp/
• Written in Python (requires 2.7)
• Generates projects:
o Makefiles, Xcode, Visual Studio, etc
• .gyp file
o JSON + comments + double or single quotes + trailing commas
• Features:
o Variables, includes, defaults, targets, dependencies, conditions, actions
• Use to be used for V8 and Chrome
o Now replaced by gn
o V8 still ships a GYP file
29. Build & Run
$ node –v
0.12.7
$ node
> var example2 = require('./build/Release/example2.node')
Error: Module did not self-register.
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at repl:1:16
at REPLServer.defaultEval (repl.js:132:27)
at bound (domain.js:254:14)
at REPLServer.runBound [as eval] (domain.js:267:12)
at REPLServer.<anonymous> (repl.js:279:12)
30. Why?
• example2.node is compiled for Node.js 0.10.40
o API Version 11
• Node.js 0.12 is API Version 14
31. Addon Compatibility
• API Version
• Node.js version
o 0.11 -> 0.12
• Platform (OS X, Linux, Windows)
• Architecture (32 vs 64-bit)
32. Solutions
• Perfect solution?
o Doesn't exist today
• Pre-build binaries in NPM package
o Pros:
• Users always have a compatible addon ready to go
• Users don't have to have C++ toolchain installed
• Redistributable without needed Internet connection
o Cons:
• Continually larger and larger package file size
• Need to publish new binary for every new Node.js/io.js version
• Need to manage version paths yourself
• node-pre-gyp
o Pros:
• Dynamically downloads binary at runtime; fallback to local build
• Users don't have to have C++ toolchain installed unless required version does
not exist
• Small package size; no binaries in NPM
• Automatically manages version paths
o Cons:
• Need to publish new binary for every new Node.js/io.js version
• Users either need an Internet connection or C++ toolchain
33. Only a partial solution
• New Node.js/io.js releases all the time
• Neglected addons
• Some environments possibly untested
• No way to tell NPM what platforms the addon is
targeting
o NPM just tries to build it
35. August 2014
• 90,984 packages
• 66,775 on Github
• 860 are C++ addons
o 1.3% of all NPM packages that are on Github are C++ addons
0.10.30 0.11.13
OS X
Linux
Windows
473 (55%) 126 (14.7%)
417 (48.5%) 129 (15%)
295 (34.3%) 111 (12.9%)
36. September 2015
• 193,225 packages
• 141,953 on Github
• 1,241 are C++ addons
o 0.87% of all NPM packages that are on Github are C++ addons
• ~30% of all NPM packages depend on a C++ addon
o https://medium.com/node-js-javascript/4-0-is-the-new-1-0-386597a3436d
• Note: some C++ addons switched to pure JS impl
0.10.40 0.12.7 4.0.0
OS X
Didn't have time to run tests on Linux & Windows
729 (58.7%) 513 (41.3%) 237 (19.1%)
37. Addon State Summary
August 2014 September 2015 Growth
# packages 90,984 193,225 2.12x
# on Github 66,775 141,953 2.13x
# C++ addons 860 (1.3%) 1,241 (0.87%) 1.44x
August 2014 September 2015
0.10.30 0.11.13 0.10.40 0.12.7 4.0.0
OS X 473 (55%) 126 (14.7%) 729 (58.7%) 513 (41.3%) 237 (19.1%)
Linux 417 (48.5%) 129 (15%) ? ? ?
Windows 295 (34.3%) 111 (12.9%) ? ? ?
43. C++ Addon Public API
• Use an index.js to expose a high-level public API
o Things are generally easier in JavaScript
• C++ addon implements low-level API
o Fancy APIs are a lot of work to build in C++
50. Threading
• Node.js is single threaded
• Your C++ code can block your Node app
• Use libuv for async tasks
• uv_queue_work() makes async easy(ier)
• No V8 access from worker threads
• Threads can have their own event loops
51. C++ ⟷ JavaScript Bridge
#include <nan.h>
#include <node.h>
#include <math.h>
using namespace v8;
NAN_METHOD(crunch) {
double n = floor(133.7 / 3.14159265359);
info.GetReturnValue().Set(Nan::New<Number>(n));
}
NAN_MODULE_INIT(init) {
Nan::Set(target,
Nan::New("crunch").ToLocalChecked(),
Nan::GetFunction(Nan::New<FunctionTemplate>(crunch))
.ToLocalChecked()
);
}
NODE_MODULE(example4, init)
function jsCrunch() {
return Math.floor(133.7 / Math.PI);
}
var start = new Date;
for (var i = 0; i < 1e8; i++) {
jsCrunch();
}
var jsDelta = (new Date) - start;
var nativeCrunch = require(
'./build/Release/example4.node').crunch;
start = new Date;
for (var i = 0; i < 1e8; i++) {
nativeCrunch();
}
var nativeDelta = (new Date) - start;
console.log('JS took ' + jsDelta + 'ms');
console.log('Native took ' + nativeDelta + 'ms');
Borrowed from http://kkaefer.github.io/node-cpp-modules
52. C++ ⟷ JavaScript Bridge
$ node index.js
JS took 48ms
Native took 9397ms
53. JavaScript vs C++
• V8 aggressively JITs JavaScript code
o Profiles and compiles it into native instructions
• V8 is really fast
o Object allocation
• Somethings you just can't do in JavaScript
• Really depends on the use case and developer skill
o Leaving it up to you to decide
o Perform your own benchmarks
55. Summary
• Prefer a pure JavaScript solution over a C++ solution
o Unless A) you have to or B) you need performance
• Use nan
• Highly consider using node-pre-gyp + continuous
build server
• Use a JavaScript wrapper to implement public API
• Don't block the main thread
o Use libuv to perform async operations