Ever since we broke apart the front and back-end of our systems, we’ve longed to partially reunite them with a shared language. The benefits of code reuse and shared tooling are compelling but is this nirvana possible? In this session we will explore building both the front (mobile and web) and back-end of an application with a shared Kotlin codebase. You will learn how to setup the build, share code, and deploy the back-end as a serverless app.
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
- HTML5 Canvas allows for dynamic drawing and animating directly in HTML using JavaScript scripting. It can be used to draw shapes, images, text and respond to user input like mouse clicks.
- The canvas element creates a grid that allows positioning images and objects by x and y coordinates. Basic drawing functions include lines, rectangles, curves and filling areas with colors.
- Transformations like translation and rotation can change the orientation of drawings on the canvas. The drawing state can be saved and restored to return to previous settings.
- Images can be drawn and manipulated at the pixel level by accessing image data. Animation is achieved by redrawing the canvas repeatedly with small changes.
- Data from sources like JSON can be
The document summarizes a library of UI components called Prototype UI that provides reusable JavaScript components like windows, carousels, and menus. It is developed by a core team and community contributors. Components are highly customizable, skinnable, and have a consistent API. The document provides examples of creating windows that can be dragged and minimized to a desktop icon.
This document provides an overview of HTML5 and CSS3 features. It discusses the evolution of browsers and web applications. Key HTML5 features covered include client-side storage, offline capabilities, 2D graphics using canvas and SVG, audio/video playback, geolocation, and forms. New CSS3 features and JavaScript APIs related to these HTML5 technologies are also summarized.
The document provides an overview of HTML5 Canvas:
- Canvas is a 2D drawing platform that uses JavaScript and HTML without plugins, originally created by Apple and now developed as a W3C specification.
- Unlike SVG which uses separate DOM objects, Canvas is bitmap-based where everything is drawn as a single flat picture.
- The document outlines how to get started with Canvas including setting dimensions, accessing the 2D rendering context, and using methods to draw basic and complex shapes with paths, text, and images.
- It discusses using Canvas for animation, interactions, and pixel manipulation, and its potential to replace Flash in the future.
The document compares and contrasts the Canvas and SVG elements in HTML. Canvas uses JavaScript to draw graphics via code and is rendered pixel by pixel, while SVG uses XML to draw graphics as scalable vector shapes. Canvas is better for games, charts, and advertising due to its faster rendering, while SVG is better for icons, logos, and charts due to its scalability and support for event handlers. Several common drawing methods like rectangles, circles, paths, and text are demonstrated for both Canvas and SVG.
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
- HTML5 Canvas allows for dynamic drawing and animating directly in HTML using JavaScript scripting. It can be used to draw shapes, images, text and respond to user input like mouse clicks.
- The canvas element creates a grid that allows positioning images and objects by x and y coordinates. Basic drawing functions include lines, rectangles, curves and filling areas with colors.
- Transformations like translation and rotation can change the orientation of drawings on the canvas. The drawing state can be saved and restored to return to previous settings.
- Images can be drawn and manipulated at the pixel level by accessing image data. Animation is achieved by redrawing the canvas repeatedly with small changes.
- Data from sources like JSON can be
The document summarizes a library of UI components called Prototype UI that provides reusable JavaScript components like windows, carousels, and menus. It is developed by a core team and community contributors. Components are highly customizable, skinnable, and have a consistent API. The document provides examples of creating windows that can be dragged and minimized to a desktop icon.
This document provides an overview of HTML5 and CSS3 features. It discusses the evolution of browsers and web applications. Key HTML5 features covered include client-side storage, offline capabilities, 2D graphics using canvas and SVG, audio/video playback, geolocation, and forms. New CSS3 features and JavaScript APIs related to these HTML5 technologies are also summarized.
The document provides an overview of HTML5 Canvas:
- Canvas is a 2D drawing platform that uses JavaScript and HTML without plugins, originally created by Apple and now developed as a W3C specification.
- Unlike SVG which uses separate DOM objects, Canvas is bitmap-based where everything is drawn as a single flat picture.
- The document outlines how to get started with Canvas including setting dimensions, accessing the 2D rendering context, and using methods to draw basic and complex shapes with paths, text, and images.
- It discusses using Canvas for animation, interactions, and pixel manipulation, and its potential to replace Flash in the future.
The document compares and contrasts the Canvas and SVG elements in HTML. Canvas uses JavaScript to draw graphics via code and is rendered pixel by pixel, while SVG uses XML to draw graphics as scalable vector shapes. Canvas is better for games, charts, and advertising due to its faster rendering, while SVG is better for icons, logos, and charts due to its scalability and support for event handlers. Several common drawing methods like rectangles, circles, paths, and text are demonstrated for both Canvas and SVG.
The HTML5 canvas element allows drawing directly onto the page via JavaScript. It provides pixel-level control for creating animations, games, charts, and more. The canvas is drawn upon by using a drawing context object and its methods like fillRect(), stroke(), arc(), and fillText(). Gradients, patterns, and images can also be rendered onto the canvas to create advanced graphics.
The document discusses using XNA for game development on Windows Phone. It covers topics like using 2D and 3D graphics, handling input from touches, sensors and orientation changes, integrating networking, ads and Xbox Live functionality, and optimizing performance. Code examples are provided for common tasks like drawing sprites, handling input and animating objects. Future directions for XNA on other platforms like Silverlight and Windows 8 are also mentioned.
The document discusses HTML5 Canvas. It covers basic usage of the canvas element, how to draw shapes, use images, apply styles and colors, transformations, compositing, and basic animations. It also discusses optimizing the canvas and checking for browser support of the canvas element.
This document provides a short introduction to HTML5, including:
- HTML5 is the 5th version of the HTML standard by the W3C and is still under development but supported by many browsers.
- HTML5 introduces new semantic elements, video and audio tags, 2D/3D graphics using <canvas>, and new JavaScript APIs for features like geolocation, offline web apps, and drag and drop.
- The document provides examples of using new HTML5 features like video playback, semantic elements, geolocation API, and drawing on a canvas with JavaScript.
The document discusses HTML5 and web application development. It covers topics like the future of HTML5, developing web apps, setting up a development environment, and providing code samples for HTML5 features like canvas, audio, video and more. It also shows how to measure performance and includes code for animating elements on a canvas.
This document provides an overview of HTML5 and its capabilities for building interactive web applications. It discusses the history and development of HTML5, including the roles of the WHATWG and W3C. It also summarizes key HTML5 features such as JavaScript, Canvas, WebSockets, storage options, and emerging 3D capabilities. Throughout, it provides examples of how these features can be used to create games, multimedia experiences, and real-time applications on the modern web.
The document discusses reactive data visualizations using Om, a ClojureScript wrapper for React. It describes using D3, Leaflet, and Dimple for visualization libraries. Om allows defining UI as immutable data and uses a virtual DOM for efficient re-rendering. Components follow a lifecycle of mounting, rendering, and updating. Data can be retrieved from APIs using Liberator and passed between components with core.async channels. Charts are built from retrieved electricity consumption data and Last.fm artist playcount data as examples.
The Ring programming language version 1.5.3 book - Part 70 of 184Mahmoud Samir Fayed
The document describes a GraphicsAppBase class that provides functionality for creating graphics applications using the Allegro graphics library. The class initializes Allegro, creates a display, event queue, timer and handles events in a loop. It also defines constants for screen dimensions, keys and mouse handling. Methods are provided for setup, drawing, resource loading/unloading and cleanup.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
2014 yılının sonunda sonlandırılması beklenen HTML standardının 5. sürümü çoktandır tarayıcılar tarafından destekleniyor. HTML5 ile gelen Canvas, Websockets ve diğer özelliklerle nasıl daha canlı, daha Flash uygulamalarına benzer, web uygulamaları geliştirebileceğimizi inceledik.
DroidKnight 2018 State machine by Selaed classMyeongin Woo
The document discusses view state management in Android. It explains that as views become more complex, the number of states increases, making state management difficult. It introduces sealed classes in Kotlin as a way to better organize view states and prevent issues like crashes from invalid states. Adding new states easily without errors is discussed as an advantage of using sealed classes.
The Ring programming language version 1.8 book - Part 65 of 202Mahmoud Samir Fayed
This document contains source code for a 3D tic-tac-toe game written in Ring and using OpenGL. It includes classes for the game logic, background, sound, cubes that make up the game board, and a game over screen. The main class initializes instances of these classes and calls their methods like loadresources, drawScene, and mouse click event handling. It renders 3D textured cubes that can be rotated and contains logic for the game play and detecting a winner.
The canvas element allows drawing graphics on a web page via scripting like JavaScript. It is supported by most modern browsers and uses a <canvas> tag with a script to access a drawing context. Common methods for drawing include beginPath(), moveTo(), lineTo(), and stroke() to draw lines, and the lineWidth and strokeStyle properties control the appearance of lines.
The document provides an overview of using the HTML5 canvas element to draw graphics and animations. It covers topics like rendering contexts, paths, styles, gradients, text, shapes, mouse/touch interaction, animation, and libraries. Code examples demonstrate how to draw basic shapes, handle user input, interpolate lines, add gradients, render to canvas, and more. The document is a tutorial for learning the capabilities of the canvas element.
The document provides instructions and examples for making games using HTML5 canvas and JavaScript. It discusses using canvas to draw basic shapes and images. It introduces the concept of sprites as reusable drawing components and provides an example sprite class. It demonstrates how to create a game loop to continuously update and render sprites to animate them. It also provides an example of making a sprite respond to keyboard input to allow user control. The document serves as a tutorial for building the core components of a simple HTML5 canvas game.
There is introduction of graphics and animation with HTML5 in this knolX session. in this knolX session, we will talk about which tags are introduced in HTML5. we will get to know about validation and regular expression without using JavaScript. We will get to know about how thing work in canvas in HTML5, basic shapes, colouring, animation etc.
Let's take a look at the HTML5 element canvas. See how you can draw shapes and images, manipulate single pixels and even animate it. Given as a lecture in the fh ooe in Hagenberg, Austria in December 2011.
The document provides information about using the canvas API to draw graphics on an HTML5 canvas element. It covers topics such as drawing shapes, paths, images, text, applying styles, transformations, gradients and saving state. Code examples are provided to demonstrate how to use various canvas drawing methods and properties.
This document discusses how big data and analytics can be used by individuals. It notes that while people used to be able to work alone, big data now requires teams of people. It provides examples of how a team of 1 person grew to 4 people and later 10 people to work on an analytics project over 3 months. It also discusses technologies like REST APIs, Java, RequireJS, Mustache templates, and how they were used to develop applications and widgets to work with and visualize different data sources.
bbyopen/App_Code/.DS_Store
bbyopen/App_Code/VBCode/GoogleMapsAPIHelpers.vb
Imports Microsoft.VisualBasic
Imports System.Xml.Linq
Public Class GoogleMapsAPIHelpers
Public Shared Function GetGeocodingSearchResults(ByVal address As String) As XElement
'Use the Google Geocoding service to get information about the user-entered address
'See http://code.google.com/apis/maps/documentation/geocoding/index.html for more info...
Dim url = String.Format("http://maps.google.com/maps/api/geocode/xml?address={0}&sensor=false", HttpContext.Current.Server.UrlEncode(address))
'Load the XML into an XElement object (whee, LINQ to XML!)
Dim results = XElement.Load(url)
'Check the status
Dim status = results.Element("status").Value
If status <> "OK" AndAlso status <> "ZERO_RESULTS" Then
'Whoops, something else was wrong with the request...
Throw New ApplicationException("There was an error with Google's Geocoding Service: " & status)
End If
Return results
End Function
End Class
bbyopen/App_Data/StoreLocations.mdf
bbyopen/App_Data/StoreLocations_log.LDF
bbyopen/Bin/Microsoft.Web.GeneratedImage.dll
bbyopen/Default.aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content runat="server" ID="myHeadContent" ContentPlaceHolderID="head">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
</script>
<script type="text/javascript">
function init_map(map_canvas_id, lat, lng, zoomLevel) {
var myLatLng = new google.maps.LatLng(lat, lng);
var options = {
zoom: zoomLevel,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map_canvas = document.getElementById(map_canvas_id);
var map = new google.maps.Map(map_canvas, options);
var marker=new google.maps.Marker({
position:myLatLng,
});
marker.setMap(map);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<h2>Welcome!</h2>
<p>
This demo shows how to use the <a href="http://code.google.com/apis/maps/">Google Maps API</a> to build a simple store locator
web application.
</p>
<p>
This demo site is powered by the <code>StoreLocations.mdf</code> database in the <code>App_Data</code> folder, which contains a single
table, <code>Stores</code>. This table has one record for each store, specifying the StoreId, address, city, , zip code, phone, hours,
and latitude and longitude coordinates. From the <a href="FindAStore.aspx">Find a Store ...
The HTML5 canvas element allows drawing directly onto the page via JavaScript. It provides pixel-level control for creating animations, games, charts, and more. The canvas is drawn upon by using a drawing context object and its methods like fillRect(), stroke(), arc(), and fillText(). Gradients, patterns, and images can also be rendered onto the canvas to create advanced graphics.
The document discusses using XNA for game development on Windows Phone. It covers topics like using 2D and 3D graphics, handling input from touches, sensors and orientation changes, integrating networking, ads and Xbox Live functionality, and optimizing performance. Code examples are provided for common tasks like drawing sprites, handling input and animating objects. Future directions for XNA on other platforms like Silverlight and Windows 8 are also mentioned.
The document discusses HTML5 Canvas. It covers basic usage of the canvas element, how to draw shapes, use images, apply styles and colors, transformations, compositing, and basic animations. It also discusses optimizing the canvas and checking for browser support of the canvas element.
This document provides a short introduction to HTML5, including:
- HTML5 is the 5th version of the HTML standard by the W3C and is still under development but supported by many browsers.
- HTML5 introduces new semantic elements, video and audio tags, 2D/3D graphics using <canvas>, and new JavaScript APIs for features like geolocation, offline web apps, and drag and drop.
- The document provides examples of using new HTML5 features like video playback, semantic elements, geolocation API, and drawing on a canvas with JavaScript.
The document discusses HTML5 and web application development. It covers topics like the future of HTML5, developing web apps, setting up a development environment, and providing code samples for HTML5 features like canvas, audio, video and more. It also shows how to measure performance and includes code for animating elements on a canvas.
This document provides an overview of HTML5 and its capabilities for building interactive web applications. It discusses the history and development of HTML5, including the roles of the WHATWG and W3C. It also summarizes key HTML5 features such as JavaScript, Canvas, WebSockets, storage options, and emerging 3D capabilities. Throughout, it provides examples of how these features can be used to create games, multimedia experiences, and real-time applications on the modern web.
The document discusses reactive data visualizations using Om, a ClojureScript wrapper for React. It describes using D3, Leaflet, and Dimple for visualization libraries. Om allows defining UI as immutable data and uses a virtual DOM for efficient re-rendering. Components follow a lifecycle of mounting, rendering, and updating. Data can be retrieved from APIs using Liberator and passed between components with core.async channels. Charts are built from retrieved electricity consumption data and Last.fm artist playcount data as examples.
The Ring programming language version 1.5.3 book - Part 70 of 184Mahmoud Samir Fayed
The document describes a GraphicsAppBase class that provides functionality for creating graphics applications using the Allegro graphics library. The class initializes Allegro, creates a display, event queue, timer and handles events in a loop. It also defines constants for screen dimensions, keys and mouse handling. Methods are provided for setup, drawing, resource loading/unloading and cleanup.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
2014 yılının sonunda sonlandırılması beklenen HTML standardının 5. sürümü çoktandır tarayıcılar tarafından destekleniyor. HTML5 ile gelen Canvas, Websockets ve diğer özelliklerle nasıl daha canlı, daha Flash uygulamalarına benzer, web uygulamaları geliştirebileceğimizi inceledik.
DroidKnight 2018 State machine by Selaed classMyeongin Woo
The document discusses view state management in Android. It explains that as views become more complex, the number of states increases, making state management difficult. It introduces sealed classes in Kotlin as a way to better organize view states and prevent issues like crashes from invalid states. Adding new states easily without errors is discussed as an advantage of using sealed classes.
The Ring programming language version 1.8 book - Part 65 of 202Mahmoud Samir Fayed
This document contains source code for a 3D tic-tac-toe game written in Ring and using OpenGL. It includes classes for the game logic, background, sound, cubes that make up the game board, and a game over screen. The main class initializes instances of these classes and calls their methods like loadresources, drawScene, and mouse click event handling. It renders 3D textured cubes that can be rotated and contains logic for the game play and detecting a winner.
The canvas element allows drawing graphics on a web page via scripting like JavaScript. It is supported by most modern browsers and uses a <canvas> tag with a script to access a drawing context. Common methods for drawing include beginPath(), moveTo(), lineTo(), and stroke() to draw lines, and the lineWidth and strokeStyle properties control the appearance of lines.
The document provides an overview of using the HTML5 canvas element to draw graphics and animations. It covers topics like rendering contexts, paths, styles, gradients, text, shapes, mouse/touch interaction, animation, and libraries. Code examples demonstrate how to draw basic shapes, handle user input, interpolate lines, add gradients, render to canvas, and more. The document is a tutorial for learning the capabilities of the canvas element.
The document provides instructions and examples for making games using HTML5 canvas and JavaScript. It discusses using canvas to draw basic shapes and images. It introduces the concept of sprites as reusable drawing components and provides an example sprite class. It demonstrates how to create a game loop to continuously update and render sprites to animate them. It also provides an example of making a sprite respond to keyboard input to allow user control. The document serves as a tutorial for building the core components of a simple HTML5 canvas game.
There is introduction of graphics and animation with HTML5 in this knolX session. in this knolX session, we will talk about which tags are introduced in HTML5. we will get to know about validation and regular expression without using JavaScript. We will get to know about how thing work in canvas in HTML5, basic shapes, colouring, animation etc.
Let's take a look at the HTML5 element canvas. See how you can draw shapes and images, manipulate single pixels and even animate it. Given as a lecture in the fh ooe in Hagenberg, Austria in December 2011.
The document provides information about using the canvas API to draw graphics on an HTML5 canvas element. It covers topics such as drawing shapes, paths, images, text, applying styles, transformations, gradients and saving state. Code examples are provided to demonstrate how to use various canvas drawing methods and properties.
This document discusses how big data and analytics can be used by individuals. It notes that while people used to be able to work alone, big data now requires teams of people. It provides examples of how a team of 1 person grew to 4 people and later 10 people to work on an analytics project over 3 months. It also discusses technologies like REST APIs, Java, RequireJS, Mustache templates, and how they were used to develop applications and widgets to work with and visualize different data sources.
bbyopen/App_Code/.DS_Store
bbyopen/App_Code/VBCode/GoogleMapsAPIHelpers.vb
Imports Microsoft.VisualBasic
Imports System.Xml.Linq
Public Class GoogleMapsAPIHelpers
Public Shared Function GetGeocodingSearchResults(ByVal address As String) As XElement
'Use the Google Geocoding service to get information about the user-entered address
'See http://code.google.com/apis/maps/documentation/geocoding/index.html for more info...
Dim url = String.Format("http://maps.google.com/maps/api/geocode/xml?address={0}&sensor=false", HttpContext.Current.Server.UrlEncode(address))
'Load the XML into an XElement object (whee, LINQ to XML!)
Dim results = XElement.Load(url)
'Check the status
Dim status = results.Element("status").Value
If status <> "OK" AndAlso status <> "ZERO_RESULTS" Then
'Whoops, something else was wrong with the request...
Throw New ApplicationException("There was an error with Google's Geocoding Service: " & status)
End If
Return results
End Function
End Class
bbyopen/App_Data/StoreLocations.mdf
bbyopen/App_Data/StoreLocations_log.LDF
bbyopen/Bin/Microsoft.Web.GeneratedImage.dll
bbyopen/Default.aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content runat="server" ID="myHeadContent" ContentPlaceHolderID="head">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
</script>
<script type="text/javascript">
function init_map(map_canvas_id, lat, lng, zoomLevel) {
var myLatLng = new google.maps.LatLng(lat, lng);
var options = {
zoom: zoomLevel,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map_canvas = document.getElementById(map_canvas_id);
var map = new google.maps.Map(map_canvas, options);
var marker=new google.maps.Marker({
position:myLatLng,
});
marker.setMap(map);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<h2>Welcome!</h2>
<p>
This demo shows how to use the <a href="http://code.google.com/apis/maps/">Google Maps API</a> to build a simple store locator
web application.
</p>
<p>
This demo site is powered by the <code>StoreLocations.mdf</code> database in the <code>App_Data</code> folder, which contains a single
table, <code>Stores</code>. This table has one record for each store, specifying the StoreId, address, city, , zip code, phone, hours,
and latitude and longitude coordinates. From the <a href="FindAStore.aspx">Find a Store ...
Writing videogames with titanium appceleratorAlessio Ricco
Creating a simple videogame is a fun way to start learning the titanium appcelerator APIs.
this talk by alessio ricco was presented at the Mobile Developer Conference WHYMCA in Milan May 20th 20011
MOPCON 2014 - Best software architecture in app developmentanistar sung
Talking about how to build smart design and architecture for app development. Let your app can easy develop and deploy components on your app. And more topic of version control and quality improvement.
The document discusses the mobl programming language for building mobile web applications. Mobl is a statically-typed language that compiles to HTML and JavaScript. It aims to provide features for building reactive user interfaces and uses techniques like continuation-passing style and observables to support asynchronous programming in a synchronous-looking way. The document provides examples of coding common mobile app patterns like data binding, network requests, and user input handling in mobl.
The document provides an overview of new features in Android Honeycomb (3.0) and Ice Cream Sandwich (4.0), including:
1) New UI metaphors like the ActionBar and onscreen adaptive menus.
2) Spec hardware changes like the lack of hard buttons on newer devices.
3) A new "Holographic" look and feel with glows, depth lines, and 3D transitions.
4) New APIs like Fragments, the ActionBar, enhanced widgets/notifications, drag and drop, peer-to-peer networking via NFC Android Beam and WiFi Direct.
With recent advances in wearable technology, it's now possible to create novel fitness experiences without building custom hardware. In this talk we take you through creating a fitness tracker in C# on Android Wear, covering Google Play Services and watch-faces along the way. If this piques your interest, you can build your own Android Wear-based fitness tracker in our code lab!
The document describes MOBL, a programming language for building mobile web applications. MOBL aims to provide a small core language with large and extensible libraries. It includes built-in types, controls, and abstraction mechanisms like screens and functions. The language exposes low-level primitives while providing a native interface to external APIs. MOBL code can be deployed by concatenating, eliminating dead code, and minifying for client-side execution on mobile browsers. The language has been publicly released since January 2011 and sees over 1,000 visitors per day, with ongoing development focused on error handling, data evolution, documentation and libraries.
With Launchers and Choosers in Windows Phone, 3rd party apps integrate more closely into the underlying operating system while allowing end-users to perform common tasks. With Launchers and Choosers you will provide more functionality to your end-users while still maintaining that consistent user experience that will make your app feel like a native app. In this session we’ll cover how to use Windows Phone resources including camera, video and Bing maps. We’ll also cover accessing contacts and calendar as well as sensors (including accelerometer, compass, gyroscope and motion).
[1D6]RE-view of Android L developer PRE-viewNAVER D2
The document discusses key architectural changes and performance improvements in Android L, including:
1. The introduction of a separate UI and render thread to improve responsiveness.
2. A move from just-in-time (JIT) compilation to ahead-of-time (AOT) compilation with the new Android Runtime (ART) to boost performance.
3. Enhancements to the garbage collection model to reduce pause times and fragmentation.
This document provides an overview of working with images in Android, including:
- Displaying images using the ImageView widget and its various scale types
- Representing images as Bitmaps in memory and the Bitmap API for creating, decoding, and transforming Bitmaps
- Techniques for efficiently loading, caching, and displaying Bitmaps to avoid memory issues, such as decoding Bitmaps in sample size and using memory and disk caching
- Common issues like Bitmaps being too large or trying to use recycled Bitmaps and their solutions
The document discusses several new features and APIs in Android 3.0 (Honeycomb) for tablets, including fragments which allow recomposing UI based on factors like screen size, loaders for asynchronously fetching content, an enhanced action bar for navigation and menus, hardware accelerated graphics, and the new holographic UI design. It also questions what some aspects of Android 3.0 may mean for future phone releases and how to detect "tablet-y" systems.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses how D3 works, examples of basic charts like scatter plots and bar charts using D3, and how to incorporate features like mouse interactions, animations, filters and gradients. It also covers using D3 with technologies like Android, PhoneGap, and Google Glass to create mobile visualizations.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1Ihu917.
Jafar Husain shows the Reactive Extensions (Rx) library which allows to treat events as collections, how Netflix uses Rx on the client and the server, allowing to build end-to-end reactive systems. Filmed at qconsf.com.
Jafar Husain developed software for companies like GE, Microsoft, and Netflix. He specializes in building web servers and clients using functional reactive programming, and was the first user of the Reactive Extensions Framework. He's also responsible for "Falkor", a RESTful data access framework that powers most Netflix clients.
This document discusses the key concepts in KnockoutJS including observables, bindings, utilities, data features, and plugins. It provides code examples for creating observables and computed values, using built-in and custom bindings, and leveraging utilities and the mapping plugin. Resources for learning more about KnockoutJS are also listed.
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Codemotion
The way that banner is rendered is really bland. That animation performance is lackluster to say the least. Maybe you're still unsatisfied with grid. CSS has always suffered from a slow-paced evolution but it's probably coming to an end. Houdini is a project that aims to expose the internals of CSS engines to developers, in order to create new and performant ways to extend CSS. We'll see the current state-of-the-art and some neat examples, to conclude with a glance to what the future holds for us.
The document describes an implementation of the Model-View-Intent (MVI) architecture pattern for Android applications. It explains the key components of MVI - the Intent, Model, and View. The Intent interprets user interactions and outputs actions. The Model manages application state from actions and outputs state changes. The View renders state. It then provides code examples of an Android drawing app implemented using MVI, including classes for the Intent, Model, View, and drawing state data.
Nous entendons aujourd’hui parler de Deep Learning un peu partout : reconnaissance d’images, de sons, génération de textes, etc. Suite aux récentes annonces sur Android Neural Network API et TensorFlowLite et à la release du framework CoreML d’Apple, tout nous pousse vers le “on-device intelligence”.
Bien que les techniques et frameworks soient en train de se démocratiser, il reste difficile d’en voir les applications concrètes en entreprise, et encore moins sur des applications mobiles. Nous avons donc décidé de construire un Proof Of Concept pour relever les défis du domaine.
A travers une application mobile à but éducatif, utilisant du Deep Learning pour de la reconnaissance d’objets, nous aborderons les impacts de ce type de modèles sur les smartphones, l’architecture pour l’entraînement et le déploiement de modèles sur un service Cloud, ainsi que la construction de l’application mobile avec les dernières nouveautés annoncées.
Koober is an open-source interactive website that uses machine learning models trained on historical taxi and weather data to visualize past taxi demand and predict future demand. It generates datasets by clustering taxi pickup locations and extracting features from the data, then builds models using techniques like gradient-boosted trees and neural networks. The website integrates these predictions with interactive maps to help the taxi industry optimize operations and better meet customer needs based on past trends.
Machine Learning is all the rage today with many different options and paradigms. This session will walk through the basics of Machine Learning and show how to get started with the open source Spark ML framework. Through Scala code examples you will learn how to build and deploy learning systems like recommendation engines.
Salesforce Campus Tour - Developer IntroJames Ward
This document provides a safe harbor statement for any forward-looking statements made in Salesforce presentations. It notes the risks and uncertainties around forward-looking statements, including risks related to new functionality, products, business model changes, mergers and acquisitions. The document states that investors should make purchase decisions based on currently available features, as unreleased features may be delayed or not delivered. It directs readers to SEC filings and annual reports for additional risks.
Salesforce Campus Tour - Developer AdvancedJames Ward
This document provides an overview and summary of a Salesforce campus tour presentation. It discusses Salesforce being the #1 CRM company and most innovative company. It highlights the Salesforce platform and tools like Salesforce1 that allow customers to connect their business. Examples are given of companies like Virgin America and Trunk Club that use mobile apps and the platform. The document also summarizes Salesforce's academic program, career opportunities, certifications, and campus ambassador program. It demonstrates how to build apps using JavaScript, Apex, and the Visualforce remoting framework in Visualforce pages.
The document provides information about Salesforce's campus tour in 2014, including details about the company, career opportunities, and programs available for students. It promotes Salesforce's position as a leader in customer relationship management and describes how students can get involved through internships, certifications, and the campus ambassador program.
Integrating Clouds & Humans with Wearable AppsJames Ward
The document discusses integrating wearable apps with Salesforce using Salesforce's developer packs. It provides an overview of Salesforce's six open source developer packs for various wearables, including Android Wear. It then focuses on the Android Wear developer pack and provides details about a sample quote discount approval app, including the architecture, Salesforce implementation using Apex triggers, and code highlights for handling push notifications, building wearable notifications, and approving/rejecting requests from the watch.
The document discusses building reactive applications using the Typesafe Reactive Platform. It introduces reactive concepts and principles and covers the Typesafe tools including Typesafe Activator, Play Framework, Akka, and Scala that help enable reactive architectures. It also discusses productivity, performance, testing, deployment, monitoring, and how the reactive approach scales applications.
This document discusses aspect-oriented programming (AOP) and how it can be implemented to modify bytecode and application behavior. It introduces Mixing Loom, an ActionScript library that allows patchers to modify SWF bytecode before and during loading to apply cross-cutting concerns. Sample patchers are provided to demonstrate accessing and modifying constant pools, tags, and classes. AOP is presented as an alternative to monkey patching that can be used to reveal private methods, fix bugs, and implement dependency injection.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Trusted Execution Environment for Decentralized Process MiningLucaBarbaro3
Presentation of the paper "Trusted Execution Environment for Decentralized Process Mining" given during the CAiSE 2024 Conference in Cyprus on June 7, 2024.
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.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
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.
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.
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.
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.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
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.
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
11. Or…. Use Built-in Models
Tensor FlowTraining Data Model
TFLite Model
On-Device
Model
User Data
Results
12. Convert Drawing
● Extract
Bitmap
Setup Labeler
● Create
Firebase
Vision
Image
● Create On-
Device
Labeler
Send Data
● Process
Data
Receive
Results
● onSuccess
callback
receives
results
Get Image Labels
Display
Results
● Show
Labels and
Confidence
13. Get Bitmap Data
fun getBitmap():Bitmap {
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
draw(canvas)
return bitmap
}
15. Get Bitmap Data
fun getBitmap():Bitmap {
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
draw(canvas)
return bitmap
}
16. Get Bitmap Data
fun getBitmap() = createBitmap(width, height).applyCanvas(::draw)
fun getBitmap():Bitmap {
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
draw(canvas)
return bitmap
}
19. Create Interpreter
● Load model
● Create
Interpreter
with model
Get Bitmap
● Get user
data as
bitmap
● Resize to
match
model
Run Interpreter
● Process
data
Process
Results
● Sort results
by
confidence
Get Image Labels
Display
Results
● Show
results and
confidence
20. Get Model as ByteBuffer
val model = loadModelFile()
private fun loadModelFile(): ByteBuffer {
val fileDescriptor = assets.openFd("mnist.tflite")
val inputStream = FileInputStream(fileDescriptor.fileDescriptor)
val fileChannel = inputStream.channel
val startOffset = fileDescriptor.startOffset
val declaredLength = fileDescriptor.declaredLength
return fileChannel.map(FileChannel.MapMode.READ_ONLY,
startOffset, declaredLength)
}
22. Get Results
private fun detectDigit(bitmap: Bitmap,
resultsListener: (List<LabelAnnotation>) -> Unit) {
lateinit var digitSequence: List<Pair<String,Float>>
val resizedImage = Bitmap.createScaledBitmap(bitmap,
inputImageWidth, inputImageHeight, true)
val byteBuffer = convertBitmapToByteBuffer(resizedImage)
val result = Array(1) { FloatArray(10) }
interpreter.run(byteBuffer, result)
// format and display results
}
27. ML in the Cloud
val firebaseImage = FirebaseVisionImage.fromBitmap(bitmap)
val labeler = FirebaseVision.getInstance().onDeviceImageLabeler
labeler.processImage(firebaseImage).addOnSuccessListener { … }
On-Device Labeling
28. ML in the Cloud
val firebaseImage = FirebaseVisionImage.fromBitmap(bitmap)
val labeler = FirebaseVision.getInstance().cloudImageLabeler
labeler.processImage(firebaseImage).addOnSuccessListener { … }
Cloud Labeling
31. Get Results
private fun detectDigit(bitmap: Bitmap,
resultsListener: (List<LabelAnnotation>) -> Unit) {
lateinit var digitSequence: List<Pair<String,Float>>
val resizedImage = Bitmap.createScaledBitmap(bitmap,
inputImageWidth, inputImageHeight, true)
val byteBuffer = convertBitmapToByteBuffer(resizedImage)
val result = Array(1) { FloatArray(10) }
interpreter.run(byteBuffer, result)
// format and display results
}
32. Get Results
private fun detectDigit(bitmap: Bitmap,
resultsListener: (List<LabelAnnotation>) -> Unit) {
lateinit var digitSequence: List<Pair<String,Float>>
val resizedImage = Bitmap.createScaledBitmap(bitmap,
inputImageWidth, inputImageHeight, true)
val byteBuffer = convertBitmapToByteBuffer(resizedImage)
val result = Array(1) { FloatArray(10) }
interpreter.run(byteBuffer, result)
// format and display results
}
33. Get Results
private suspend fun detectDigit(bitmap: Bitmap,
resultsListener: (List<LabelAnnotation>) -> Unit) {
lateinit var digitSequence: List<Pair<String,Float>>
val resizedImage = Bitmap.createScaledBitmap(bitmap,
inputImageWidth, inputImageHeight, true)
val byteBuffer = convertBitmapToByteBuffer(resizedImage)
val result = Array(1) { FloatArray(10) }
withContext(Dispatchers.IO) {
interpreter.run(byteBuffer, result)
}
// format and display results
}
36. Draw
● Capture
Bitmap
Phone ML
● Predict with
Local Model
● Display
Results
REST Service
● Send
Bitmap &
Results to
REST API
Browser
● Poll d' Bus
● Display
Bitmap &
Results
Pub/Sub
● On d' Bus
Browser
Bus
Server
37. Shared Common
Root Gradle Project
Common
ServerAndroid
data class LabelAnnotation(
val description: String,
val score: Float)
data class ImageResult(
val image: ByteArray,
val labelAnnotations: List<LabelAnnotation>)
common/src/commonMain/kotlin/Data.kt
45. Setup DI
class BaseApplication: Application() {
private var ctx: ApplicationContext? = null
override fun onCreate() {
super.onCreate()
val pm = applicationContext.packageManager
val ai = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
val propertySource = AndroidMetadataPropertySource(ai.metaData)
val appCtxBuilder = applicationContext.build(MainActivity::class.java, Environment.ANDROID)
ctx = appCtxBuilder.propertySources(propertySource).start()
registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity?, bundle: Bundle?) {
if (activity != null) ctx?.inject(activity)
}
})
}
android/src/main/kotlin/BaseApplication.kt
46. Config via AndroidManfest.xml
<meta-data android:name="drawurl" android:value="${drawurl}"/>
val drawUrl: String? by project
if (drawUrl != null) {
manifestPlaceholders = mapOf("drawurl" to drawUrl)
}
else {
// 10.0.2.2 is the IP for your machine from the Android emulator
manifestPlaceholders = mapOf("drawurl" to "http://10.0.2.2:8080")
}
android/build.gradle.ktx
android/src/main/AndroidManifest.xml
drawUrl=http://192.168.1.23:8080
gradle.properties
47. Cloud Run, Run
FROM adoptopenjdk/openjdk8 as builder
WORKDIR /app
COPY . /app
RUN ./gradlew --no-daemon --console=plain :server:shadowJar
FROM adoptopenjdk/openjdk8:jre
COPY --from=builder /app/server/build/libs/server.jar /server.jar
RUN apt-get update && apt-get install -y --no-install-recommends fontconfig
CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/server.jar"]
Dockerfile
69. One Project To Kotlin Them All
Root Gradle Project
Common
ServerAndroid Web
build.gradle.kts
common/build.gradle.kts
android/build.gradle.kts
server/build.gradle.kts
web/build.gradle.kts
70. One Project To Rule Them All
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
google()
}
dependencies {
classpath(kotlin("gradle-plugin", "1.3.61"))
classpath("com.android.tools.build:gradle:4.0.0-alpha04")
}
}
build.gradle.kts (Root Gradle Project)
73. Air Draw
● Capture
Sensor Data
REST Service
● Smoooooth
Data
● Render to
Image
Cloud ML
● Send
Bitmap to
Cloud ML
● Send
Bitmap &
results to
Phone
Browser
● Poll d' Bus
● Display
Bitmap &
Results
Pub/Sub
● On d' Bus
75. Sensors & Vision
data class Orientation(val azimuth: Float, val pitch: Float, val timestamp: Long)
SensorManager.getRotationMatrixFromVector(rotationMatrix, e.values)
val m = FloatArray(3)
SensorManager.getOrientation(rotationMatrix, orientationAngles)
val orientation = Orientation(m[0], m[1], e.timestamp)
readings.add(orientation)
common/src/commonMain/kotlin/Data.kt
78. Things get crazy
val xl = KrigingInterpolation1D(t, x)
...
import java.awt.image.BufferedImage
val bi = BufferedImage(canvas.width, canvas.height, BufferedImage.TYPE_INT_ARGB)
...
val imgBytes = ByteString.copyFrom(bytes)
val img = Image.newBuilder().setContent(imgBytes).build()
val feature = Feature.newBuilder().setType(Type.LABEL_DETECTION).build()
val request = AnnotateImageRequest.newBuilder().addFeatures(feature).setImage(img).build()
val r = myImageAnnotatorClient.imageAnnotatorClient.batchAnnotateImages(arrayListOf(request))
server/src/main/kotlin/WebApp.kt
79. Pitfalls
● Gradle Build Plugins
● JSON
● Externalizing the URL
● Math is hard
● ML is hard
● Compose is Young