This document provides instructions for installing and configuring OpenGL and graphics programming environments like Visual Studio, Xcode, and Eclipse on Windows and Mac operating systems. It discusses installing OpenGL libraries, configuring include paths and libraries, and creating and building basic OpenGL projects. It also provides an overview of the OpenGL rendering pipeline and GLUT for window management and callbacks in OpenGL programs. Examples are given to demonstrate basic GLUT and OpenGL code.
Level Up Your Android Build -Droidcon Berlin 2015Friedger Müffke
A journey of a young entrepreneur through the Android Gradle build system. It explains the groovy and gradle details that are need during the development process of an Android app.
On stage with Volker Leck
Lightweight Developer Provisioning with GradleQAware GmbH
Gradle Summit 2016, Palo Alto, CA: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware):
Abstract: Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
Lightweight Developer Provisioning with Gradle and SEU-as-codeMario-Leander Reimer
Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
This session will first demonstrate the setup of a full featured development environment from scratch in under 15 minutes. It will then outline and explain the main features in more detail and show how custom functionality and scripts can be integrated easily to automate recurring development tasks. We will briefly cover the Gradle plugins and conventions that perform the heavy lifting and we will also show how to quickly build your own software packages using Gradle.
Level Up Your Android Build -Droidcon Berlin 2015Friedger Müffke
A journey of a young entrepreneur through the Android Gradle build system. It explains the groovy and gradle details that are need during the development process of an Android app.
On stage with Volker Leck
Lightweight Developer Provisioning with GradleQAware GmbH
Gradle Summit 2016, Palo Alto, CA: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware):
Abstract: Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
Lightweight Developer Provisioning with Gradle and SEU-as-codeMario-Leander Reimer
Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
This session will first demonstrate the setup of a full featured development environment from scratch in under 15 minutes. It will then outline and explain the main features in more detail and show how custom functionality and scripts can be integrated easily to automate recurring development tasks. We will briefly cover the Gradle plugins and conventions that perform the heavy lifting and we will also show how to quickly build your own software packages using Gradle.
Kubernetes Deployments: A "Hands-off" ApproachRodrigo Reis
Rodrigo Reis describes Zalando's Kubernetes Deployments using their self-made CDP (Continuous Delivery Platform), a CI/CD solution to automate all of it, so developers can focus more on the software they're building, and less on how to build / deploy.
Slides that were presented during the webrtc Qt Cmake tutorial at IIT-RTC in October 2017 in Chicago. The slides are not yet complete, and will be updated later.
For decades, JavaScript developers have relied on a multitude of module systems
to organize and share code. But in 2015, ECMAScript finally introduced built-in
standard semantics for modules, providing a long-awaited solution for the
language. While ECMAScript modules have quickly become a popular format for
writing code, most published code is still compiled to a single bundle or to a
legacy module system.
The TC39 committee, which designs the ECMAScript language, is actively
exploring this design space: are there any missing functionalities compared to
previous systems? Do JavaScript developers need any capabilities that the
language does not currently provide? What problems do ECMAScript modules
currently cause?
This talk will walk you through the answers to those questions and show you
current developments, giving a sneak peek at possible future modules features!
(c) JSHeroes 2023
May 18-19th 2023
Cluj Napoca, Romania
https://jsheroes.io
These are the slides for a talk/workshop delivered to the Cloud Native Wales user group (@CloudNativeWal) on 2019-01-10.
In these slides, we go over some principles of gitops and a hands on session to apply these to manage a microservice.
You can find out more about GitOps online https://www.weave.works/technologies/gitops/
Cut your Grails application to pieces - build feature pluginsGR8Conf
Reuse has been taught in CS classes since the very beginning. But how should you practically do to reuse functionality from one Grails application in other applications? The plugin subsystem in Grails is an awesome machinery that makes it easy to separate functionality into distinct plugins. Plugins that can be used in many applications with similar functionality. Yet have unique features without creating a maintenance hell.
In this session you will learn how to think "feature plugins" when you're designing and developing your Grails applications. We will cover topics like inter-plugin communication using application events and how to support different look and feel for each application using "theme plugins". You will also learn how each plugin can be tested and documented separately from the application.
After this session "grails create-plugin" will be your best friend.
BCON22: oneAPI backend - Blender Cycles on Intel GPUsXavier Hallade
In this session, we shared experiences on how Intel GPUs are supported through oneAPI and detailed how the implementation was done in Cycles.
https://conference.blender.org/2022/presentations/1704/
Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.
Kubernetes Deployments: A "Hands-off" ApproachRodrigo Reis
Rodrigo Reis describes Zalando's Kubernetes Deployments using their self-made CDP (Continuous Delivery Platform), a CI/CD solution to automate all of it, so developers can focus more on the software they're building, and less on how to build / deploy.
Slides that were presented during the webrtc Qt Cmake tutorial at IIT-RTC in October 2017 in Chicago. The slides are not yet complete, and will be updated later.
For decades, JavaScript developers have relied on a multitude of module systems
to organize and share code. But in 2015, ECMAScript finally introduced built-in
standard semantics for modules, providing a long-awaited solution for the
language. While ECMAScript modules have quickly become a popular format for
writing code, most published code is still compiled to a single bundle or to a
legacy module system.
The TC39 committee, which designs the ECMAScript language, is actively
exploring this design space: are there any missing functionalities compared to
previous systems? Do JavaScript developers need any capabilities that the
language does not currently provide? What problems do ECMAScript modules
currently cause?
This talk will walk you through the answers to those questions and show you
current developments, giving a sneak peek at possible future modules features!
(c) JSHeroes 2023
May 18-19th 2023
Cluj Napoca, Romania
https://jsheroes.io
These are the slides for a talk/workshop delivered to the Cloud Native Wales user group (@CloudNativeWal) on 2019-01-10.
In these slides, we go over some principles of gitops and a hands on session to apply these to manage a microservice.
You can find out more about GitOps online https://www.weave.works/technologies/gitops/
Cut your Grails application to pieces - build feature pluginsGR8Conf
Reuse has been taught in CS classes since the very beginning. But how should you practically do to reuse functionality from one Grails application in other applications? The plugin subsystem in Grails is an awesome machinery that makes it easy to separate functionality into distinct plugins. Plugins that can be used in many applications with similar functionality. Yet have unique features without creating a maintenance hell.
In this session you will learn how to think "feature plugins" when you're designing and developing your Grails applications. We will cover topics like inter-plugin communication using application events and how to support different look and feel for each application using "theme plugins". You will also learn how each plugin can be tested and documented separately from the application.
After this session "grails create-plugin" will be your best friend.
BCON22: oneAPI backend - Blender Cycles on Intel GPUsXavier Hallade
In this session, we shared experiences on how Intel GPUs are supported through oneAPI and detailed how the implementation was done in Cycles.
https://conference.blender.org/2022/presentations/1704/
Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
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
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
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.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
1. SER332
Introduction to Graphics and
Game Development
Lecture 03:
OpenGL Overview
Javier Gonzalez-Sanchez
javiergs@asu.edu
PERALTA 230U
Office Hours: By appointment
14. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 14
Remove Precompiled Headers
1. Right click in the project name and select “Properties”.
2. Select “Not Using Precompiled Headers”
29. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 29
Verification
§ OpenGL and GLUT come with the OS and Xcode
installations.
§ To verify, check for:
/System/Library/Frameworks/GLUT.framework
/System/Library/Frameworks/OpenGL.framework
30. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 30
Create a new Project in Xcode
§ Select "File→New→New Project".
§ Choose a template for your new project under Mac OS X (not
iOS):"Application→Command Line Tool" and click "Next"
§ For the sample code, specify "Product Name" as "sampleapp",
"Company Identifier" as "sample", select "Type" "C++", and click
"Next”.
§ A window pops up to prompt you where you want to put the
new project folder.
§ Uncheck "Create local git repository for this project” Then click
"Create”.
31. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 31
Add Libraries
§ In the middle pane, click the "Build Phases" tab, open the "Link
Binary With Libraries" list, and click the '+' sign at the bottom left
corner of the list.
§ A list of frameworks should pop up. Scroll down the list to
"OpenGL.framework" and click "Add". Repeat for
"GLUT.framework".
§ To suppress "Deprecations" warnings for GLUT, in the middle
pane, click the "Build Settings" tab. On the second menu of
the panel, click on "All". Scroll down (or search for) "Apple
LLVM 5.1 - Custom Compiler Flags". Click to the right of "Other
C Flags" and type in "-Wno-deprecated".
32. Eclipse Oxygen 2 (release 4.7.2)
macOS High Sierra
Install and Configure
33. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 33
Install
• Download Eclipse IDE for C/C++ Developers
34. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 34
Configure
§ Create File àNew à Project…
§ Choose C/C++ àC Project
§ Give a name to the project
§ Select Project type àHello World ANSI C ProjectàMacOSX
GCC
35. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 35
Configure
§ In order to set-up them in Eclipse, open the project properties
and go in: “C/C++ Build->Settings->MacOSX C++ Linker-
>Miscellaneous” and write this in the Linker flags text box:
-framework GLUT -framework openGL -framework Cocoa
36. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 36
Configure
§ Add gl.h and glut.h in the directory
§ Go to project propertiesà C/C++ general àPath and Symbols à
Include(tab)à GNU C add 2 include directories
/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers
/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
38. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 38
OpenGL
§ OpenGL basic library – most commands
§ OpenGL Utility (GLU) – some high level commands
e.g. generating complex objects, cylinder, sphere
§ OpenGL Utility Toolkit (GLUT)
windowing commands
38
39. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 39
What Is OpenGL?
§ Software interface to graphics hardware
§ Competitors: DirectX, Java2D and Java3D,…
§ Communicate between CPU and GPU via drivers
§ A client and server execution model
41. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 41
OpenGL as a State Machine
§ Maintain pipeline states: current color, viewing and
projection transformation, polygon drawing modes,
etc.
§ Hierarchical state maintenance
glPushAttrib(), glPushMatrix(), glPopAttrib(), glPopMatrix(), …
glColor3f(1.0f, 0.0f, 0.0f); // <- alter current state
// Draw a cube
//What color is the cube?
glColor3f(0.0, 1.0f, 0.0f); // <- alter current state
// Draw a sphere.
// What color is the sphere?
42. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 42
OpenGL Libraries
OpenGL core library (GL)
§ #include <GL/gl.h>
§ OpenGL32 on Windows
§ GL on most UNIX / LINUX systems (libGL.a)
OpenGL Utility Library (GLU)
§ #include <GL/glu.h>
§ Provides functionality in OpenGL core but avoids having to rewrite
code
OpenGL Utility Toolkit (GLUT)
§ #include <GL/glut.h>
§ Provides functionality common to all window systems
o Open a window
o Get input from mouse and keyboard
o Menus
o Event-driven
§ Code is portable but GLUT lacks the functionality of a good toolkit for
a specific platform
43. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 43
OpenGL and Related APIs
GLUT
GLU
GL
GLX, AGL
or WGL
X, Win32, Mac O/S
software and/or hardware
application program
OpenGL Motif
widget or similar
44. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 44
OpenGL Syntax
§ functions have prefix gl and initial capital letters for each word
glClearColor(), glEnable(), glPushMatrix() …
§ glu for GLU functions
gluLookAt(), gluPerspective() …
§ constants begin with GL_, use all capital letters
GL_COLOR_BUFFER_BIT,
GL_PROJECTION,
GL_MODELVIEW …
§ Extra letters in some commands indicate the number and
type of variables
glColor3f(), glVertex3f() …
§ OpenGL data types
GLfloat, GLdouble, GLint, GLenum, …
46. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 46
GLUT: OpenGL Utility Toolkit
§ A simplified window system toolkit
o Create windows
o Initialize display context
o Handle basic application events: screen refreshing, timer, resize…
o Handle user inputs
§ A higher level geometric toolkit
o glutSolidSphere, glutSolidCube,…
§ Application Structure
o Configure and open window
o Initialize OpenGL state
o Register input callback functions
• render
• resize
• input: keyboard, mouse, etc.
o Enter event processing loop
47. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 47
Installation (Windows)
§ glut.h – in your include path
gl.h and glu.h are included by glut.h
§ glut32.lib in your library path
§ glut32.dll in “windowssystem” path
48. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 48
GLUT Window Management
§ glutInit (&argc, argv); //Glut initialization
§ glutCreateWindow ("Example"); //Create a window
§ glutDisplayFunc (myDisplay) //callback function
§ glutMainLoop() // activate the display window
§ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | …)
// set initial options
§ glutInitWindowPosition (x, y); // integer
§ glutInitWindowSize (width, height ); // integer
53. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 53
Double Buffering
§ Double buffering is necessary for almost all OpenGL applications:
§ Render into back buffer
§ Swap buffers when finished rendering a frame: The old back
buffer becomes the front buffer that is displayed. The old front
buffer becomes the back buffer that is rendered into.
§ What happens when you do not use double buffering?
§ flickering artifacts, tearing artifacts
§ Commands:
§ glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
§ glutSwapBuffers(); //instead of glFlush()
55. SER332 Introduction to Graphics
Javier Gonzalez-Sanchez
javiergs@asu.edu
Spring 2018
Disclaimer. These slides can only be used as study material for the class SER332 at ASU. They cannot be distributed or used for another purpose.