This presentation introduce the processes involved in developing 2D and 3D games for the full-touch UI on Series 40 phones by using Nokia SDK 2.0 for Java™. Java expert Michael Samarin of Futurice introduces APIs of particular interest to game developers. He focus on development techniques specific to games with no keyboard input and how to use gestures and sensors in your games to increase player engagement. Performance and memory considerations are also covered.
Learn how to make real 3D games for Nokia Series 40 Asha phones using modern implementations of Mobile Java APIs. Presenter Michael Samarin of Futurice will start by introducing the details of the 3D game-making process: planning and building game levels; lighting and degree of realism; modelling tools vs. manual character creation; animations and behaviour of game objects; and balancing memory management against texture detail. You will learn game interface strategies including touch, touch-and-type, and keyboard only. Michael will share tips to optimize the performance of your games across different screen sizes and models of Series 40 phones. He’ll conclude with an overview of Mobile Java 3D performance on the latest range of Nokia Series 40 Asha phones.
As a powerful framework, Qt offers tons of modules and classes for building your applications. This talk highlight few practical cross-platform examples of what Qt can do with a fairly few lines of code, ranging from kinetic scrolling, weather service, OpenStreetMap, parallax effect, flight tracking, WYSIWYG HTML editor, and many more. All examples will be accompanied with corresponding live demos.
Presentation by Ariya Hidayat held during the Maemo Summit 2009 in Amsterdam
CUDA by Example : Constant Memory and Events : NotesSubhajit Sahu
Highlighted notes of:
Chapter 6: Constant Memory and Events
Book:
CUDA by Example
An Introduction to General Purpose GPU Computing
Authors:
Jason Sanders
Edward Kandrot
“This book is required reading for anyone working with accelerator-based computing systems.”
–From the Foreword by Jack Dongarra, University of Tennessee and Oak Ridge National Laboratory
CUDA is a computing architecture designed to facilitate the development of parallel programs. In conjunction with a comprehensive software platform, the CUDA Architecture enables programmers to draw on the immense power of graphics processing units (GPUs) when building high-performance applications. GPUs, of course, have long been available for demanding graphics and game applications. CUDA now brings this valuable resource to programmers working on applications in other domains, including science, engineering, and finance. No knowledge of graphics programming is required–just the ability to program in a modestly extended version of C.
CUDA by Example, written by two senior members of the CUDA software platform team, shows programmers how to employ this new technology. The authors introduce each area of CUDA development through working examples. After a concise introduction to the CUDA platform and architecture, as well as a quick-start guide to CUDA C, the book details the techniques and trade-offs associated with each key CUDA feature. You’ll discover when to use each CUDA C extension and how to write CUDA software that delivers truly outstanding performance.
Table of Contents
Why CUDA? Why Now?
Getting Started
Introduction to CUDA C
Parallel Programming in CUDA C
Thread Cooperation
Constant Memory and Events
Texture Memory
Graphics Interoperability
Atomics
Streams
CUDA C on Multiple GPUs
The Final Countdown
All the CUDA software tools you’ll need are freely available for download from NVIDIA.
Jason Sanders is a senior software engineer in NVIDIA’s CUDA Platform Group, helped develop early releases of CUDA system software and contributed to the OpenCL 1.0 Specification, an industry standard for heterogeneous computing. He has held positions at ATI Technologies, Apple, and Novell.
Edward Kandrot is a senior software engineer on NVIDIA’s CUDA Algorithms team, has more than twenty years of industry experience optimizing code performance for firms including Adobe, Microsoft, Google, and Autodesk.
Learn how to make real 3D games for Nokia Series 40 Asha phones using modern implementations of Mobile Java APIs. Presenter Michael Samarin of Futurice will start by introducing the details of the 3D game-making process: planning and building game levels; lighting and degree of realism; modelling tools vs. manual character creation; animations and behaviour of game objects; and balancing memory management against texture detail. You will learn game interface strategies including touch, touch-and-type, and keyboard only. Michael will share tips to optimize the performance of your games across different screen sizes and models of Series 40 phones. He’ll conclude with an overview of Mobile Java 3D performance on the latest range of Nokia Series 40 Asha phones.
As a powerful framework, Qt offers tons of modules and classes for building your applications. This talk highlight few practical cross-platform examples of what Qt can do with a fairly few lines of code, ranging from kinetic scrolling, weather service, OpenStreetMap, parallax effect, flight tracking, WYSIWYG HTML editor, and many more. All examples will be accompanied with corresponding live demos.
Presentation by Ariya Hidayat held during the Maemo Summit 2009 in Amsterdam
CUDA by Example : Constant Memory and Events : NotesSubhajit Sahu
Highlighted notes of:
Chapter 6: Constant Memory and Events
Book:
CUDA by Example
An Introduction to General Purpose GPU Computing
Authors:
Jason Sanders
Edward Kandrot
“This book is required reading for anyone working with accelerator-based computing systems.”
–From the Foreword by Jack Dongarra, University of Tennessee and Oak Ridge National Laboratory
CUDA is a computing architecture designed to facilitate the development of parallel programs. In conjunction with a comprehensive software platform, the CUDA Architecture enables programmers to draw on the immense power of graphics processing units (GPUs) when building high-performance applications. GPUs, of course, have long been available for demanding graphics and game applications. CUDA now brings this valuable resource to programmers working on applications in other domains, including science, engineering, and finance. No knowledge of graphics programming is required–just the ability to program in a modestly extended version of C.
CUDA by Example, written by two senior members of the CUDA software platform team, shows programmers how to employ this new technology. The authors introduce each area of CUDA development through working examples. After a concise introduction to the CUDA platform and architecture, as well as a quick-start guide to CUDA C, the book details the techniques and trade-offs associated with each key CUDA feature. You’ll discover when to use each CUDA C extension and how to write CUDA software that delivers truly outstanding performance.
Table of Contents
Why CUDA? Why Now?
Getting Started
Introduction to CUDA C
Parallel Programming in CUDA C
Thread Cooperation
Constant Memory and Events
Texture Memory
Graphics Interoperability
Atomics
Streams
CUDA C on Multiple GPUs
The Final Countdown
All the CUDA software tools you’ll need are freely available for download from NVIDIA.
Jason Sanders is a senior software engineer in NVIDIA’s CUDA Platform Group, helped develop early releases of CUDA system software and contributed to the OpenCL 1.0 Specification, an industry standard for heterogeneous computing. He has held positions at ATI Technologies, Apple, and Novell.
Edward Kandrot is a senior software engineer on NVIDIA’s CUDA Algorithms team, has more than twenty years of industry experience optimizing code performance for firms including Adobe, Microsoft, Google, and Autodesk.
Graphics View becomes one of the prominent features of Qt these days, it also serves as the backbone for next-generation user-interface developments. This talk highlights several tips and tricks which you can employ to beautify your Graphics View-based application, in order to have much more exciting and interesting user interactions. In addition, a new addition in Qt 4.6, namely the graphics effect feature, will be introduced and demonstrated.
Presentation by Ariya Hidayat held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
2D Graphics. Description of 2D graphic operations in Qt4. In this Chapter, you can learn how to handle the graphic scenes, views, and items in the Qt program.
Cocos2d is a well known open source software framework on game industry. It is is a 2D game framework built upon the OpenGL ES API’s.
In this session, I will talk about a hierarchical structures of an Cocos2d node and scenes. Also Cocos2d Graphic User Interface, Physical System, Audio, Particle System and Scene Transition technique will be shown. Finally this session will show various branches of Cocos2d open source projects including Cocos2d-x, Cocos2d-Swift, Cocos2d-html5, and Cocos2d-xna.
During this webinar, you’ll learn how to get started with 2D game development for Nokia Series 40 Asha phones, even if you’ve never developed a game. Michael Samarin from Futurice will show you how to use the Game Builder tool to create simple games. All you need is familiarity with Java™ technology, with the NetBeans IDE (for which Game Builder is a plug-in), and with the Nokia SDK for Java™. Using the Game Builder visual tool and studying the code generated are great ways to build game development skills. The webinar also will give you an overview of Java ME classes typically used in game development. Finally, it will introduce you to asset-management techniques and associated platform limitations and capabilities.
Graphics View becomes one of the prominent features of Qt these days, it also serves as the backbone for next-generation user-interface developments. This talk highlights several tips and tricks which you can employ to beautify your Graphics View-based application, in order to have much more exciting and interesting user interactions. In addition, a new addition in Qt 4.6, namely the graphics effect feature, will be introduced and demonstrated.
Presentation by Ariya Hidayat held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
2D Graphics. Description of 2D graphic operations in Qt4. In this Chapter, you can learn how to handle the graphic scenes, views, and items in the Qt program.
Cocos2d is a well known open source software framework on game industry. It is is a 2D game framework built upon the OpenGL ES API’s.
In this session, I will talk about a hierarchical structures of an Cocos2d node and scenes. Also Cocos2d Graphic User Interface, Physical System, Audio, Particle System and Scene Transition technique will be shown. Finally this session will show various branches of Cocos2d open source projects including Cocos2d-x, Cocos2d-Swift, Cocos2d-html5, and Cocos2d-xna.
During this webinar, you’ll learn how to get started with 2D game development for Nokia Series 40 Asha phones, even if you’ve never developed a game. Michael Samarin from Futurice will show you how to use the Game Builder tool to create simple games. All you need is familiarity with Java™ technology, with the NetBeans IDE (for which Game Builder is a plug-in), and with the Nokia SDK for Java™. Using the Game Builder visual tool and studying the code generated are great ways to build game development skills. The webinar also will give you an overview of Java ME classes typically used in game development. Finally, it will introduce you to asset-management techniques and associated platform limitations and capabilities.
Современный мир – это мир конкуренции. И любое преимущество перед другими может сыграть большую роль в бизнесе. Разработчиков в области 3D становится всё больше. Креативные дизайнеры изобретают всё более улётные проекты, и чтобы оставаться в тренде, нужно идти в ногу со временем. Я познакомлю вас с крутыми проектами и научу, как просто сделать 3D на сайте. Может и у вас появятся собственные идеи, как применить новейшие технологии уже сейчас!
Useful Tools for Making Video Games - Irrlicht (2008)Korhan Bircan
In this tutorial (from 2008) I talk about how to set up Irrlicht, displaying 3D models, adding 1st and 3rd person shooter style cameras, loading .bsp maps, creating custom scene nodes, handling keyboard and mouse input, character and scene node animatinos, GUI construction, 2D graphics, particle system basics, and terrain rendering.
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.
Welcome to Nokia X Software Platform 2.0! In this webinar we provide a detailed introduction to the new release of Nokia X platform, show you the first devices built on the new release, and help you to get started developing. In live demonstrations we show how to install and configure your development environment and Nokia tools. You’ll learn similarities and differences of Nokia X compared with other development platforms and learn how easy it is to publish your existing Android app for Nokia X. We demonstrate how to test and port your app and explain the capabilities and specifics of Nokia APIs: Nokia Notification Service, In-App Payment and HERE Maps.
In this webinar you'll learn about the new Lumia SensorCore SDK beta – announced at the Microsoft Build conference in April and now publicly available for all developers. This new SDK takes advantage of a low-powered hardware core in some of our latest devices, like the Lumia 930 and 630, enabling power- and memory-efficient tracking of motion and location data. In combination with what’s already included in Windows Phone 8.1, this SDK allows you to create outstanding quantified-self and self-logging apps, for example. In this webinar we'll show how to get started with the SDK and work with the APIs.
Bring your ideas to life with the APIs and additional memory available for development on the Nokia Asha platform. Join this webinar to learn how much you can do in the area of imaging, with the Image Scaling API and the Image Processing API. You’ll also get detailed guidelines on how to work with the camerainterface and how to create special effects and filters.
Healthcare apps for Nokia X and Nokia Asha phones present a great opportunity to help improve the lives of millions of users around the world. In this webinar, we’ll discuss the fundamentals of mobile healthcare apps and give you an overview of the opportunities and challenges involved in developing such apps for Nokia phones. We’ll open the webinar with an introduction to the fundamentals of mobile healthcare, an overview of opportunities and challenges of developing apps for wellness and mobile health, and the role of mobile platforms in enabling health and healthcare apps. Then we will dig into specific techniques available when developing such apps for Nokia X and Nokia Asha platforms.We’ll demonstrate different approaches available to developers targeting the two platforms by examining a Blood Pressure Diary app, which is implemented for Nokia X and Nokia Asha. As part of that discussion we’ll show how to retrieve heart-rate data from medical devices using Bluetooth technology.
The Nokia Notifications API enables you to implement Push notifications in your Nokia X apps. Nokia Notifications consists of a client API and a server API. If you’re already using Google Cloud Messaging in an Android app, you can port or even add Nokia Notifications to the same code base and APK. In this webinar, we’ll show you how to use Nokia Notifications in your Nokia X apps and walk you through example code provided in the Nokia X SDK.
You want your Nokia Asha apps to deliver superior user experiences and to outperform competing applications. That means this webinar is for you. The session explains how you can improve your applications with simple and easy-to-conduct DIY usability studies, requiring little budget and no previous usability knowledge.
Most Android apps run properly on the Nokia X platform without any modification, but maybe you’d like some help with improving the user experience of your apps as you port them to Nokia X. UX expert Jan Krebber, from OCTO3, has been working with developers porting to Nokia X and has seen patterns of mistakes that are easy to correct. In this webinar, he’ll share his top tips on how to avoid the most common missteps.
With the open source Geo2tag platform, developers can use JSON or XML to manage location references in apps for Nokia X and Nokia Asha phones. In this webinar, we’ll show how to use the Geo2tag API and how to manage a local database of georeferences. We’ll begin the training by introducing the fundamentals of Location Based Services and the REST API of Geo2Tag LBS Platform (www.geo2tag.org). We’ll focus on networking, JSON and web services. Then we will demonstrate several applications developed on top of Geo2Tagand share the newest enhancements to the platform. We’ll end the training with a discussion of integrating Geo2Tag and third-party map widgets.
With HERE Maps, users always know where they are and where they’re going, even when they’re not connected to a mobile network. In this webinar, we’ll show you how to integrate HERE Maps into your new apps for Nokia X and how to port existing apps.
Nokia In-App Payment is designed from the ground up to encourage users to spend more on your digital goods, let you keep more of what your users spend, and reach the broadest possible market around the world. If you’re not yet using Nokia In-App Payment to generate revenue from your Nokia applications, you should be. Join this webinar to find out how to optimise Nokia In-App Payment UI flows before and after payments occur. You’ll learn about tips and tricks to increase conversion rates and to avoid pitfalls and deal-breakers.
Nokia Theme API and Webview API are new additions in Nokia Asha SDK 1.2. The Theme API enables developers to change themes and to access the properties of a current theme. The Webview API is used to display web pages inside a MIDlet, enabling delivery of more-sophisticated Help, About, and other screens to users. In addition, Nokia Asha SDK 1.2 contains updates to the Contact API that allow MIDlets to receive notifications with social contacts in the phonebook are added, deleted, or modified. Pranav Gothadiya, lead developer and product owner for Nokia Asha SDKs, starts this training webinar with an overview of new and updated features in Nokia Asha SDK 1.2 and the new Nokia Asha software platform 1.4. Pranav then demonstrates code examples included in the SDK to illustrate the new Theme and Webview APIs. He also touches on the (Social) Contact API, as well as on SDK features that enable developers to support frame-positioning control and progressive audio recording.
Approximately 75% of Android apps run properly on Nokia X platform without any modification, but maybe you’d like some help improving the UX of your app as you port it to Nokia X. UX expert Jan Krebber will show you how to improve the UX of your Nokia X apps in terms you don’t need to be a UX expert to understand. He’ll focus on the few items most important when it comes to user experience design for Android and Nokia X.He’ll introduce those items and show you how to create a launcher icon for Nokia X.
Some children start using mobile devices at very young ages. Mobile phones can be very powerful tools to support learning and to nurture cognitive capabilities. This webinar addresses UI design considerations for creating games and educational applications for children and teens. Although the webinar focuses on Nokia Asha phones, the findings it examines hold true for mobile devices in general.
In this webinar we'll provide an overview of the Nokia X platform and product offering. Then we'll dig into monetization opportunities offered by Nokia In-app Payment combined with Nokia's extensive operator billing network. We'll show you how you can benefit by bringing your apps to Nokia Store, take advantage of it’s unique monetization capabilities and make your app stand out from the crowd.
The Nokia Imaging SDK 1.1 makes it quicker and easier to create imaging apps for Windows Phone 8, and now also Windows 8.1 – desktop and RT. It helps you efficiently work with images captured and stored by both Windows Phone 8 and Windows 8.1 devices from Nokia. Michael Samarin, MVP from Futurice will open this training webinar with a quick overview of Nokia Imaging SDK 1.1 new features. Then he’ll jump into live coding demonstrations to show you how to use the SDK in applications that make the most of the imaging capabilities of Nokia Lumia products. Throughout the code demos, he’ll highlight new functionality in this SDK release, such as HDREffect, LenseBlurEffects, InteractiveForegroundSegmenter and of course using SDK with Windows Phone 8 and Windows 8.1.
Welcome to Nokia X Software Platform! In this webinar we’ll provide a detailed overview of Nokia X Software Platform and show you how to get started developing for it.In live demonstrations we’ll show how to install and configure your development environment and Nokia tools. You’ll learn similarities and differences of Nokia X compared with other development platforms and learn how easy it is to publish your existing Android app for Nokia X. We’ll show you how to test and port your app and explain the capabilities and specifics of Nokia APIs: Nokia Notification Service, In-App Payment and HERE Maps.
DVLUP members who want help with the design of their Windows Phone 8 app can redeem XP for one-hour online UI clinics delivered by the design pros at Toledo Design. This webinar is open to everyone, whether you're a member of DVLUP or not. Arturo Toledo, mobile design expert and former design evangelist and UX design in the Windows Phone design studio, has already delivered over 50 of these one-on-one consultations to help DVLUP members improve the design, usability, and user reviews of their applications. In this 1 hour webinar, Arturo shares some of the most common design challenges he has seen in these real-world consultations and shows how to fix them.
Microsoft Windows Phone ha un sistema di riconoscimento vocale molto sofisticato. Ci permette di impartire comandi al sistema operativo, leggere e dettare SMS, effettuare chiamate etc. In Windows Phone 8 è stata introdotta, per noi sviluppatori, la possibilità di utilizzare i comandi vocali anche nelle nostre applicazioni. In questa sessione vedremo come implementare il riconoscimento vocale nelle nostre app. / Microsoft Windows Phone has a very sophisticated speech-recognition system. Users can give commands to the operating system, read and dictate text messages, make phone calls, etc. With Windows Phone 8, developers have the ability to use voice commands in applications. In this webinar, you’ll find out how to implement voice recognition in your apps.
Lo sviluppo è sicuramente la parte più divertente nella creazione di un'applicazione, ma senza un meccanismo per venderle e distribuirle rimarrebbe un'attività fine a sé stessa. Nel corso di questo webinar vedremo come funziona il processo di pubblicazione di un'applicazione e impareremo a gestirne il ciclo di vita sullo Store: la certificazione, i report post pubblicazione, il rilascio di aggiornamenti.
Quando ci si trova nella necessità di sviluppare applicazioni per Microsoft Windows Phone più complesse, l'approccio tradizionale mostra qualche limite: non c'è una separazione tra i vari strati dell'applicazione e il codice è più difficile da testare e da mantenere. Questo webinar vi mostrerà le basi del pattern Model-View-ViewModel (MVVM), che offre un approccio più strutturato, in grado di separare la parte di logica dall'interfaccia grafica. / When you need to develop complex applications for Microsoft Windows Phone, the traditional approach shows some limitations. This webinar will show you the basics of Model-View-ViewModel (MVVM), which offers a more structured approach.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Connector Corner: Automate dynamic content and events by pushing a button
Developing games for Series 40 full-touch UI
1. Series 40 Developer Training
Getting Started with Game
Development on Nokia Series 40 Full
Touch Asha Phones
Michael Samarin, Ph.D
Director,
Developer Training and Evangelism
Futurice
+358 40 518 18 09
michael.samarin@futurice.com
@MichaelSamarin
2. Today’s topics
» This presentation is summary and compressed extracts
relevant to game development from previous webinars:
› Overview of full touch Asha Devices
› Overview of graphical APIs for 2D and 3D Game
development Mobile Java
› User input in full touch devices
› Useful in games performance tips on Series 40
3. New Series 40 Full Touch Platform
Asha 305
Asha 306
Asha 311
Retail
70 – 120 $
5. Series 40 Graphics APIs
» 2D Game Development
› Game API, part of the MIDP 2.0 standard, java package:
javax.microedition.lcdui.game
› http://www.developer.nokia.com/Resources/Library/Java/#!deve
lopers-guides/ui-and-graphics/game-api.html
» 3D Game Development
› Mobile 3D Graphics API, optional JSR-184 also known as M3G
› http://www.developer.nokia.com/Resources/Library/Java/#!deve
lopers-guides/ui-and-graphics/mobile-3d-graphics.html
6. › Game API Package (MIDP)
› javax.microedition.lcdui.game
› GameCanvas
› Layer
› LayerManager
› Sprite
› TiledLayer
7. › GameCanvas
› Double buffered
› Convenient for minimizing code of
game loop
› Methods for querying status of keys
8. › GameCanvas
public class MyCanvas extends GameCanvas implements Runnable {
public void run() {
Graphics g = getGraphics();
while(true) {
// update the game state
int k = getKeyStates();
// respond to key events
flushGraphics();
}
}
}
12. › Layer
› Abstract class, any visual game
element
› LayerManager
› Combines layers together,
provides viewport
13. › Sprite
› Animated game object
› TiledLayer
› Game areas, backgrounds
14. › Sprite
› Animated element of the game
(character)
› Define Sequence, Delay
› Flip, Rotate
› Define Reference Point
› Detect Collisions
15. › TiledLayer
› Defines game backgrounds
› Can be animated
› Doesn’t have Sprite methods
16. › Object-Oriented 3D
› Scene Graph based
› Optional MIDP JSR
Mobile 3D Graphics API › Very compact API
JSR-184 or M3G › Very fast development
› Optimized for small
memory and budget CPU
› Excellent implementation
on Series 40
17. Lightweight API, only 30 classes
AnimationController IndexBuffer RayIntersection
AnimationTrack KeyframeSequence SkinnedMesh
Appearance Light Sprite3D
Background Loader Texture2D
Camera Material Transform
CompositingMode Mesh Transformable
Fog MorphingMesh TriangleStripArray
Graphics3D Node VertexArray
Group Object3D VertexBuffer
Image2D PolygonMode World
18. › Immediate mode
› Similar to OpenGL ideology
› Retained mode
M3G Modes › Scene Graph based
› Entire Scene Graph can be
restored from file
› Well defined M3G format
› Can be freely mixed
19. Scene Graph
Background Mesh
Group Morphing Mesh
World Skinned Mesh
Sprite 3D
Group
Sprite 3D User Object
Group Camera
Light
20. › World
› Background
› Morphing and Skinned Mesh
Most Interesting › Animated Geometry Objects
Scene Graph › Mesh
Elements › 3D Geometry of Visible Object
› Sprite 3D
› 2D image in 3D space
21. public class Canvas3D extends Canvas
implements Runnable {
public Canvas3D(){
}
public void paint(Graphics g) {
}
public void run() {
}
}
22. public class Canvas3D extends Canvas
implements Runnable {
private Thread thread;
public Canvas3D(){
private long startTime;
}
private Graphics3D graphics3D;
public void paint(Graphics g) {
private World world;
}
private Camera camera;
public void run() {
private boolean running = false;
}
}
23. setFullScreenMode(true);
thread = new Thread(this);
public class Canvas3D extends Canvas
startTime = System.currentTimeMillis()
implements Runnable {
graphics3D = Graphics3D.getInstance();
public Canvas3D(){
world = new World();
}
camera = new Camera();
public void paint(Graphics g) {
float aspect = (float) getWidth() / (float) getHeight();
}
camera.setPerspective(30.0f, aspect, 1.0f, 1000.0f);
public void run() { world.addChild(camera);
} world.setActiveCamera(camera);
} running = true;
thread.start();
24. public class Canvas3D extends Canvas
implements Runnable {
graphics3D.bindTarget(g);
public Canvas3D(){
world.animate(
}
(int)(System.currentTimeMillis() -
startTime));
public void paint(Graphics g) {
graphics3D.render(world);
}
graphics3D.releaseTarget();
public void run() {
}
}
25. public class Canvas3D extends Canvas
implements Runnable {
public Canvas3D(){ while (running){
} repaint();
public void paint(Graphics g) { Thread.sleep(20);
} }
public void run() {
}
}
26. › User input in full touch Asha devices
› Game keys simulation
› Touch events
› Multipoint-touch
› Gestures
› Sensors
27. Game keys simulation
» No touch handling in Canvas?
› Drag gestures automatically trigger simulated key events
› Up, Down, Left, Right
29. Using Gestures
› Register as gesture listener
public class MainCanvas extends Canvas implements GestureListener {
private int curPinchDistance = -1;
public MainCanvas() {
// Set this as container (gesture source) and listener
GestureRegistrationManager.setListener(this, this);
// Register for pinch events in the whole canvas area
gestureZone = new GestureInteractiveZone(GestureInteractiveZone.GESTURE_PINCH);
GestureRegistrationManager.register(this, gestureZone);
}
› Zone: reacts to 1+ specified gestures
› Whole screen or rectangular area
› Overlap possible
› Received events → GestureListener
30. Using Gestures
› Handling gestures
public void gestureAction(Object container, GestureInteractiveZone gestureInteractiveZone, GestureEvent gestureEvent) {
int eventType = gestureEvent.getType();
switch (eventType) {
case GestureInteractiveZone.GESTURE_PINCH: // Pinch detected
curPinchDistance = gestureEvent.getPinchDistanceCurrent(); break;
case GestureInteractiveZone.GESTURE_RECOGNITION_START: /* ... */ break;
case GestureInteractiveZone.GESTURE_RECOGNITION_END: /* ... */ break;
}
}
› Executed in UI thread
› Lengthy operations (scaling image, etc.) → own thread!
31. › Single touch
› Canvas.pointerPressed() part
of MIDP
› Only tracks 1st touch point
Pointer events › Multipoint Touch
and › Tracks multiple touch points
Multipoint-
Touch › But: use Gesture API if only interested in
pinch
› Each associated with unique ID, x, y
and state
› Call-back for touch changes, but
status available any time
32. Using Multipoint-Touch
› Number of touch points 2 on Nokia 305 / 306
MultipointTouch mpt = MultipointTouch.getInstance(); 5 on Nokia 311
int numTouchPoints = MultipointTouch.getMaxPointers();
› Limited accuracy of simultaneous touch points on a resistive
screen (Nokia 305) → no on-screen joystick & shoot button
› Register: touch point listener
public class MainCanvas extends Canvas implements MultipointTouchListener
{
public MainCanvas() {
// ...
mpt.addMultipointTouchListener(this);
}
33. Using Multipoint-Touch
› Handling touch events
public void pointersChanged(int[] pointerIds) {
for(int i=0; i<pointerIds.length; i++) { // Loop through the changed touch points
{
int pointerId = pointerIds[i]; // Get the touch point ID
int state = MultipointTouch.getState(pointerId); // Get the touch point state
// Get the touch point x and y coordinates
int x = MultipointTouch.getX(pointerId);
int y = MultipointTouch.getY(pointerId);
// Handle the UI update based on the touch point state, ID and coordinates
switch(state) {
case MultipointTouch.POINTER_PRESSED: // A new finger was pressed against the screen
drawTouch(pointerId, x, y); break;
case MultipointTouch.POINTER_DRAGGED: // A pressed finger was dragged over the screen
drawTouch(pointerId, x, y); break;
case MultipointTouch.POINTER_RELEASED: // A pressed finger was lifted from the screen
break;
} } }
34. › JSR 256 Sensor API
› Optional Generic API: designed for
battery, network status, also for
temperature, blood pressure, etc.
Sensors › Usefull in Games
› Acceleration: –2g .. +2g, x / y / z axis
› Double Tap: 1 .. 63, phone sides
› Orientation: 0 .. 6, phone orientation
35. › Synchronous
› Poll sensor
› Example: accelerometer in
game loop
Sensors Modes › Asynchronous
› DataListener callbacks
› Example: phone charger
plugged in
36. Using Multipoint-Touch
› Establish sensor connection
// Find all acceleration sensors, the contextType is left undefined
SensorInfo[] sensorInfos = SensorManager.findSensors("acceleration", null);
// Find an acceleration sensor that returns double values
for (int i = 0; i < sensorInfos.length; i++) {
if (sensorInfos[i].getChannelInfos()[0].getDataType() == ChannelInfo.TYPE_DOUBLE) {
accSensor = (SensorConnection) Connector.open(sensorInfos[i].getUrl());
}
}
› Check data in game loop
// Use 1 as a buffer size to get exactly 1 value for each axis
Data[] data = accSensor.getData(1);
speedX = -data[0].getDoubleValues()[0]; // data[0] => x-axis
speedY = data[1].getDoubleValues()[0]; // data[1] => y-axis
37. Hash Acceleration
» Some iterative algorithms are slow. Proper usage of
collections types of data structures can increase
performance.
» Vector.contains() is very slow, but Hashtable.containsKey() is
very fast. Reconsider your algorithms to use Hashtables.
» Usage can be found in very surprising places. For example,
Font.stringWidth() is slow, but necessary for drawing
multiline text on Canvas. Creating a Hashtable with the
width in each character you have used in the Font can
transform this into a fast operation and increase
Canvas.paint() speed.
38. Synchronized vs. Volatile Variables
» When a variable or Object needs to be accessed from more
than one Thread.
» Marking a variable as volatile is the least restrictive
approach and can have very high performance because no
Thread is blocked.
» Only one Thread may enter the synchronized sections at
any one time.
» Consider atomic operations on two variables. For example, when
updating firstName and lastName from “John Smith” to “Jane
Marceau”, do so within a synchronized block to avoid briefly exposing
the transitional state “Jane Smith” to other threads.
39. Constants
» We can give the compiler and Proguard more opportunities
to optimize the code at the compile step, and this will also
give the ARM processor opportunities for handling these
variables with more efficient byte codes.
private static int loopCount = 10;
private static long startTime = System.currentTimeMillis();
private static boolean enableImages = true;
Should be
private static final int LOOP_COUNT = 10;
private static final long START_TIME = System.currentTimeMillis();
private static final boolean ENABLE_IMAGES = true;
40. Primitives
» Use int instead of short, byte or long.
for (int i = 0; i < 3000000; i++) {
short/int/long a = 123;
short/int/long b = -44;
short/int/long c = 12;
a += c;
b += a;
c *= b;
}
Average times spent in loops on Nokia Asha 305 (obfuscated):
int: 710 (580) ms
short: 900 (850) ms 50% slower
long: 1450 (1150) ms 100% slower
41. Final in methods
for (int i = 0; i < 1000000; i++) {
a = finalMethod(1, 2, 3);
}
for (int i = 0; i < 1000000; i++) {
a = nonFinalMethod(1, 2, 3);
}
public final int finalMethod(final int a, final int b, final int c) {
final float x = 1.23f, y = 0.05f;
final float z = x * y;
final int d = a + b + c;
return d;
}
public int nonFinalMethod(int a, int b, int c) {
float x = 1.23f, y = 0.05f;
float z = x * y;
int d = a + b + c;
return d;
}
42. Final in methods
Average times on a Nokia Asha 305:
finalMethod: 650 ms
nonFinalMethod: 940 ms 45% slower
In this case, the time difference comes from final keyword before
x and y. It is logical because then z value can be precalculated.
The final keywords with parameters a, b, c let us not precalculate
d or anything. And because we don’t use z, it being final does not
help us
43. Static
» Generally static methods and variables should be faster.
Oddly, with some combinations of ARM and JVM, instance
accesses are slightly faster.
for (int i = 0; i < 1000000; i++) {
staticMethod();
Average times spent in loops
} on Nokia Asha 305
for (int i = 0; i < 1000000; i++) {
nonStaticMethod();
(obfuscated):
}
private static void staticMethod() { nonStaticMethod: 570 ms
b++; // static variable
} staticMethod: 680 ms 20%
private void nonStaticMethod() { slower
a++; // instance variable
}
44. String Concatenation
If you are going to concatenate a large number of small Strings,
use:
StringBuffer.append()
instead of the
String +=
operator. String is much slower because every time you
concatenate a string to another with += operator, a new
StringBuffer is created under the hood. Depending on the number
of concatenations, a single explicit StringBuffer can be many times
faster than multiple implicit StringBuffers created by String
addition.
45. Addition vs. Multiplication vs. Division
for (int i = 0; i < 500000; i++) {
a = 1.23f;
b = 1.45f;
c = 0.004523f;
c += a;
a = b + c;
}
for (int i = 0; i < 500000; i++) {
Average times spent in loops
a = 1.23f;
b = 1.45f;
on Nokia Asha 305:
c = 0.004523f;
c *= a; Multiplying: 330 ms
a = b * c;
} Addition: 360 ms 9% slower
for (int i = 0; i < 500000; i++) {
a = 1.23f; Division: 560 ms 70% slower
b = 1.45f;
c = 0.004523f;
c /= a;
a = b / c;
}
46. Switch vs. If
The switch statement in C is implemented as a direct jump which is
extremely fast. In Java on Nokia Series 40 phones, switches are
implemented at the bytecode level as a series of if statements.
Therefore in many cases a switch statement is less efficient than a
manually created series of if..else statements in which the first
positive case is selected as the one which occurs more frequently. If
you prefer to use switch statements for code clarity, then arrange
them so that the most frequent cases appear first.
47. Live Demo Session
» If you are watching these slides on SlideShare, next part is live coding
demonstration with Nokia SDK 2.0 for Java and NetBeans. Full recording of the
live session can be found at Nokia Developer website:
» http://www.developer.nokia.com/Resources/Multimedia/Webinars.xhtml