Linux commonly connotes with open-source zealots and a small PC market
share, not blockbuster video games. However, the arrival of Steam on
the platform might change the outlook quite dramatically, and Linux
support may soon become a must-have feature for your game. Setting the
open-source ideology aside, this lecture is an overview of the
technical challenges a game developer may face while porting their
game to this platform, along with solutions.
One Year of Porting - Post-mortem of two Linux/SteamOS launchesLeszek Godlewski
2013 was the year in which Linux finally got the attention of game developers; it was also the year in which my first two Linux/SteamOS ports were released. This talk will cover the learnings of one year of porting work from a programmer's point of view: DOs and DON'Ts and issues both expected and unexpected.
Presenter notes: https://www.dropbox.com/s/lq6oxuw1s3bhoun/Advanced%20Linux%20Game%20Programming%20%E2%80%93%20Presenter%20Notes.pdf
Ever since the advent of SteamOS, interest in game development for Linux has seen an increase. This lecture aims to address some more advanced issues encountered by programmers on this platform, beyond the very basic Linux setup, and drawing from over a year and two and a half games of experience in the subject. The areas discussed will be:
• Executable build improvements
• Crash handling and reporting
• Memory debugging
• OpenGL instrumentation and debugging
• Various caveats, tips and tricks.
Part of the WGK 2014 conference proceedings: http://wgk.gd/eng/
The lecture contained some live demos which are missing from this slide deck for obvious reasons.
An overview of practical techniques for debugging OpenGL rendering applications, focusing on the vendor- and version-independent debug extensions rather than IHV-supplied tools.
Part of the proceedings of Code Mesh 2014: http://www.codemesh.io/
Source ODP file (includes videos and presenter notes): https://www.dropbox.com/s/720qkkn27uaz43u/ggd.odp?dl=0
Video games are complex and non-deterministic systems. So complex, in fact, that some days the everyday breakpoint just doesn't cut it when you're looking for that next bug. Drawing from the experience of deploying three large titles to four platforms, this talk will discuss the different approaches and borderline magical tricks to debugging different parts of a game: noise filtering when our breakpoint is hit way too often, memory stomping, time-dependent bugs, rendering glitches… Story of a game programmer's life.
One Year of Porting - Post-mortem of two Linux/SteamOS launchesLeszek Godlewski
2013 was the year in which Linux finally got the attention of game developers; it was also the year in which my first two Linux/SteamOS ports were released. This talk will cover the learnings of one year of porting work from a programmer's point of view: DOs and DON'Ts and issues both expected and unexpected.
Presenter notes: https://www.dropbox.com/s/lq6oxuw1s3bhoun/Advanced%20Linux%20Game%20Programming%20%E2%80%93%20Presenter%20Notes.pdf
Ever since the advent of SteamOS, interest in game development for Linux has seen an increase. This lecture aims to address some more advanced issues encountered by programmers on this platform, beyond the very basic Linux setup, and drawing from over a year and two and a half games of experience in the subject. The areas discussed will be:
• Executable build improvements
• Crash handling and reporting
• Memory debugging
• OpenGL instrumentation and debugging
• Various caveats, tips and tricks.
Part of the WGK 2014 conference proceedings: http://wgk.gd/eng/
The lecture contained some live demos which are missing from this slide deck for obvious reasons.
An overview of practical techniques for debugging OpenGL rendering applications, focusing on the vendor- and version-independent debug extensions rather than IHV-supplied tools.
Part of the proceedings of Code Mesh 2014: http://www.codemesh.io/
Source ODP file (includes videos and presenter notes): https://www.dropbox.com/s/720qkkn27uaz43u/ggd.odp?dl=0
Video games are complex and non-deterministic systems. So complex, in fact, that some days the everyday breakpoint just doesn't cut it when you're looking for that next bug. Drawing from the experience of deploying three large titles to four platforms, this talk will discuss the different approaches and borderline magical tricks to debugging different parts of a game: noise filtering when our breakpoint is hit way too often, memory stomping, time-dependent bugs, rendering glitches… Story of a game programmer's life.
Using Erlang in an Embedded and Cross-Compiled WorldFrank Hunleth
This presentation gives an overview of turning Erlang/OTP releases into Flash images that are ready to copy to an SDCard and run on a BeagleBone Black. It was presented at the ErlangDC conference on 12/7/2013.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
In a nutshell, an Arduino is an open hardware development board that can be used by tinkerers, hobbyists, and makers to design and build devices that interact with the real world. While Arduino refers to a specific type of board design, it can also be used to refer to a company which manufactures a specific implementation of these boards, and is typically also used to describe the community around compatible boards made by other people or companies which function in a similar way.
Valerio Di Giampietro - Introduction To IoT Reverse Engineering with an examp...linuxlab_conf
Introduction to firmware reverse engineering process of IoT devices. The process, described with an example on a home router, is based on Information Gathering of hardware and software, Building of an Emulation Environment to run binaries, and Techniques to analyze, hack and modify the firmware.
The introduction to firmware reverse engineering process is described with a real example, done by the author, on a recent home router with the target to load a modified firmware overcoming the router protection that doesn’t allow loading of unsigned firmware (ref: https://github.com/digiampietro/adbtools2 )
The process described is based on:
Information Gathering hw: identify main device components (CPU, Flash, SDRAM, main components) hw: locate UART and JTAG interfaces hw tools: Bus Pirate, OpenOCD, Jtagulator sw: get os image file or firmware file sw tools: strings, file, binwalk, dd, jefferson, uncramfs etc. identification of CPU, Flash, RAM, kernel version, C library, toolchain used etc. identification of Original Manufacturer and Original Firmware Manufacturer Emulation Environment using QEMU select a QEMU machine and CPU reasonably similar to the IoT device (same CPU, similar kernel version, similar modules and libraries) select a tool to build the kernel and the root file system (brief description of Yocto Project, Buildroot and OpenWRT build system). Buildroot will be used in the example and described in more detail Buildroot and kernel configuration, generation of root file system with binaries and libraries with debugging information Overcoming obstacles created by the firmware manufacturer Running interesting binaries in the emulated environment Use tools like strace, ltrace, gdb to reverse engineer the most interesting binaries Analyze how the device works the firmware upgrade process CLI and Web interface analisys main processes analisys finding vulnerabilities hacking into the system hack the firmware upgrade process replace the original firmware Create a Firmware Modification Kit to simplify the firmware modification process.
All about the Linux boot process. Presented at linux.conf.au on January 25, 2018. Video at https://archive.org/details/lca2018-Linux_the_first_second . Associated blog posting at https://opensource.com/article/18/1/analyzing-linux-boot-process
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...linuxlab_conf
The development of device drivers usually requires hardware availability. We will try to address this issue by simulating our “missing” device thanks to a QEMU ARM machine. The fake device will be tested and debugged using bare-metal software, again running in QEMU. Finally, we will write a Linux device driver from scratch that will interact with the device and expose it to the userspace.
The training assumes some basic knowledge of the C programming language and using Linux as a development platform. During the training, we will show how to build the Linux kernel and write a simple yet complete device driver, how to use QEMU as a development platform and a few notions of bare-metal and kernel code debugging.
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
"Session ID: BUD17-104
Session Name: Scripting Languages in IoT: Challenges and Approaches - BUD17-104
Speaker: Paul Sokolovsky,
Track: LITE
★ Session Summary ★
Scripting languages is hot emerging topic in IoT. They allow easy learnability and rapid prototyping and further benefits (like production use) as they evolve. This session compares approaches of MicroPython and JerryScript/Zephyr.js projects and gives status update on their Zephyr RTOS ports.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-104/
Presentation: https://www.slideshare.net/linaroorg/bud17104-scripting-languages-in-iot-challenges-and-approaches
Video: https://youtu.be/lIO8QL2SRuU
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: IoT, scripting languages, Zephyr, LITE, Paul Sokolovsky,
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Andrea Righi - Spying on the Linux kernel for fun and profitlinuxlab_conf
Do you ever wonder what the kernel is doing while your code is running? This talk will explore some methodologies and techniques (eBPF, ftrace, etc.) to look under the hood of the Linux kernel and understand what it’s actually doing behind the scenes.
This talk explores methodologies that allow to take a look “live” at kernel internal operations, from a network perspective, to I/O paths, CPU usage, memory allocations, etc., using in-kernel technologies, like eBPF and ftrace. Understanding such kernel internals can be really helpful to track down performance bottlenecks, debug system failures and it can be also a very effective way to approach to kernel development.
Using Erlang in an Embedded and Cross-Compiled WorldFrank Hunleth
This presentation gives an overview of turning Erlang/OTP releases into Flash images that are ready to copy to an SDCard and run on a BeagleBone Black. It was presented at the ErlangDC conference on 12/7/2013.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
In a nutshell, an Arduino is an open hardware development board that can be used by tinkerers, hobbyists, and makers to design and build devices that interact with the real world. While Arduino refers to a specific type of board design, it can also be used to refer to a company which manufactures a specific implementation of these boards, and is typically also used to describe the community around compatible boards made by other people or companies which function in a similar way.
Valerio Di Giampietro - Introduction To IoT Reverse Engineering with an examp...linuxlab_conf
Introduction to firmware reverse engineering process of IoT devices. The process, described with an example on a home router, is based on Information Gathering of hardware and software, Building of an Emulation Environment to run binaries, and Techniques to analyze, hack and modify the firmware.
The introduction to firmware reverse engineering process is described with a real example, done by the author, on a recent home router with the target to load a modified firmware overcoming the router protection that doesn’t allow loading of unsigned firmware (ref: https://github.com/digiampietro/adbtools2 )
The process described is based on:
Information Gathering hw: identify main device components (CPU, Flash, SDRAM, main components) hw: locate UART and JTAG interfaces hw tools: Bus Pirate, OpenOCD, Jtagulator sw: get os image file or firmware file sw tools: strings, file, binwalk, dd, jefferson, uncramfs etc. identification of CPU, Flash, RAM, kernel version, C library, toolchain used etc. identification of Original Manufacturer and Original Firmware Manufacturer Emulation Environment using QEMU select a QEMU machine and CPU reasonably similar to the IoT device (same CPU, similar kernel version, similar modules and libraries) select a tool to build the kernel and the root file system (brief description of Yocto Project, Buildroot and OpenWRT build system). Buildroot will be used in the example and described in more detail Buildroot and kernel configuration, generation of root file system with binaries and libraries with debugging information Overcoming obstacles created by the firmware manufacturer Running interesting binaries in the emulated environment Use tools like strace, ltrace, gdb to reverse engineer the most interesting binaries Analyze how the device works the firmware upgrade process CLI and Web interface analisys main processes analisys finding vulnerabilities hacking into the system hack the firmware upgrade process replace the original firmware Create a Firmware Modification Kit to simplify the firmware modification process.
All about the Linux boot process. Presented at linux.conf.au on January 25, 2018. Video at https://archive.org/details/lca2018-Linux_the_first_second . Associated blog posting at https://opensource.com/article/18/1/analyzing-linux-boot-process
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...linuxlab_conf
The development of device drivers usually requires hardware availability. We will try to address this issue by simulating our “missing” device thanks to a QEMU ARM machine. The fake device will be tested and debugged using bare-metal software, again running in QEMU. Finally, we will write a Linux device driver from scratch that will interact with the device and expose it to the userspace.
The training assumes some basic knowledge of the C programming language and using Linux as a development platform. During the training, we will show how to build the Linux kernel and write a simple yet complete device driver, how to use QEMU as a development platform and a few notions of bare-metal and kernel code debugging.
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
"Session ID: BUD17-104
Session Name: Scripting Languages in IoT: Challenges and Approaches - BUD17-104
Speaker: Paul Sokolovsky,
Track: LITE
★ Session Summary ★
Scripting languages is hot emerging topic in IoT. They allow easy learnability and rapid prototyping and further benefits (like production use) as they evolve. This session compares approaches of MicroPython and JerryScript/Zephyr.js projects and gives status update on their Zephyr RTOS ports.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-104/
Presentation: https://www.slideshare.net/linaroorg/bud17104-scripting-languages-in-iot-challenges-and-approaches
Video: https://youtu.be/lIO8QL2SRuU
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: IoT, scripting languages, Zephyr, LITE, Paul Sokolovsky,
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Andrea Righi - Spying on the Linux kernel for fun and profitlinuxlab_conf
Do you ever wonder what the kernel is doing while your code is running? This talk will explore some methodologies and techniques (eBPF, ftrace, etc.) to look under the hood of the Linux kernel and understand what it’s actually doing behind the scenes.
This talk explores methodologies that allow to take a look “live” at kernel internal operations, from a network perspective, to I/O paths, CPU usage, memory allocations, etc., using in-kernel technologies, like eBPF and ftrace. Understanding such kernel internals can be really helpful to track down performance bottlenecks, debug system failures and it can be also a very effective way to approach to kernel development.
Disclaimer: the slide deck does not contain all the content, this was a mostly spoken/hands-on talk.
Code used in the talk: http://github.com/inequation/ggd
Video games are highly complex and indeterministic systems working closely to hardware. This means that sometimes the regular troubleshooting measure of setting up breakpoints just doesn't cut it.
How to filter out noise, when our breakpoint is hit dozens of thousands of times per second? Or if our bug, despite perfect reproduction rate, manifests itself in a different way each time? How to find the culprit overwriting our precious data?
This talk will present some interesting cases from the life of a game programmer along with tips and tricks to have up your sleeve when fighting them.
Social Media For Busy Entrepreneurs and Small Businesses Fikriyyah George
At this Super Harbor meeting marketing consultant James White and I walked a room full of small business owners through the basics of how to use social media for your entrepreneurial goals.
Cross-platform game engine development with SDL 2.0Leszek Godlewski
Lecture from the WGK 2013 game development conference
The SDL library (Simple DirectMedia Layer) - known as "the open source response to DirectX" - lets you forget about all the boilerplate in game development on platforms ranging from Windows, through Linux and Mac OS X, to iOS and Android. While still in active development, version 2.0 of SDL provides new and improved functionality, including touch input and force feedback support. It also ships with the Steam Linux Library. This lecture provides an overview of the library's capabilities and some useful tricks.
Docker on a local machine and Docker in production — are two big differences. It's easy to play with technology but it's hard to do something real for many customers.
Half a year ago inside of Alpha Laboratory (division of Alfa-Bank) we've started building new microservices architecture for one of our pilot projects. We've almost completely changed a stack of the used technologies on a frontend and significantly changed it on a middle layer. For package and distribution we have choosen Docker. Two months ago we've deployed project to production and have opened service for clients.
In the report the following topics will be covered:
- reasons of a choice Docker;
- why Docker without other tools is not enough for a production;
- what stack of technologies we used in our solution;
- what advantages we've got;
- what problems have been faced and how we've solved them.
There is a problem of finding the correct operating services In a distributed systems with dynamic configuration. Currently, there are designed one and more solutions for the ever-changing storage configuration. It should be mentioned at least Netflix Eureka, Consul, etcd or good old Zookeeper. Spring Cloud project allows to integrate some of these solutions to your project and provides powerful solutions for typical problems. However, on the way to unicorns not the most obvious subtleties of implementation and associated problems of use in real projects wait for a developer.
This talk will review the internal structure SpringCloud, implementation of Client-Side Service Discovery pattern, and specific details of concrete implementations on the example of the official libraries and the author's own library.
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...Yandex
Lightweight virtualization", also called "OS-level virtualization", is not new. On Linux it evolved from VServer to OpenVZ, and, more recently, to Linux Containers (LXC). It is not Linux-specific; on FreeBSD it's called "Jails", while on Solaris it’s "Zones". Some of those have been available for a decade and are widely used to provide VPS (Virtual Private Servers), cheaper alternatives to virtual machines or physical servers. But containers have other purposes and are increasingly popular as the core components of public and private Platform-as-a-Service (PAAS), among others.
Just like a virtual machine, a Linux Container can run (almost) anywhere. But containers have many advantages over VMs: they are lightweight and easier to manage. After operating a large-scale PAAS for a few years, dotCloud realized that with those advantages, containers could become the perfect format for software delivery, since that is how dotCloud delivers from their build system to their hosts. To make it happen everywhere, dotCloud open-sourced Docker, the next generation of the containers engine powering its PAAS. Docker has been extremely successful so far, being adopted by many projects in various fields: PAAS, of course, but also continuous integration, testing, and more.
PiFlash: Linux utility to flash SD cards for Raspberry Pi computersIan Kluft
Presentation by Ian Kluft at Silicon Valley Perl (SVPerl) on Feb 7, 2019 on "PiFlash: Linux utility to flash SD cards for Raspberry Pi computers". This tool is for use on Linux systems in place of manual procedures to write SD cards to boot a Raspberry Pi board. Safety features for newcomers include checking the destination device and refusing to erase any device that isn't an SD card. Handy automation for experience users includes automatically extracting the OS image from a tar/zip archive and uncompressing it to the SD card in one step.
Você usou o Windows a vida inteira? Confuso com todas as terminologias usadas com software livre? Você gostaria de aprender, mas não sabe por onde começar? Maddog abordará os aspectos do software livre com a exploração de algumas aplicações disponíveis. Ele irá mostrar-lhe como fazer uma distribuição fora da rede em um CD ,ou em um pen drive de tamanho adequado, que você pode carregar no seu computador sem danificar o seu sistema Windows.
Palestrante: Jon Maddog
Atualmente, Maddog é diretor executivo da Linux International, uma organização sem fins lucrativos dedicada quase que exclusivamente à promoção de aplicações em código aberto. Figura carismática e de extrema importância para o software livre, é autor de vários artigos e apresentações, além de ter lançado um livro sobre a plataforma Linux, o “Linux for Dummies”. Ele também escreve para a editora Linux New Media, que traduz a revista Linux Pro e a exporta para mais de 100 países.
Kernel Recipes 2016 - Upstream Kernel Graphics is (Finally) WinningAnne Nicolas
About 5 years ago I was at a big conference on the topic of what’s needed for upstream graphics. I spent a lot of time apologizing for and ranting about the various horror shows in the DRM graphics subsystems. And eventually some engineer from a hardware vendor asked:
“If this all such crap, why should we bother with upstream graphics?“
Now I can finally and honestly answer this, because upstream supports everything, has helpers for all possible and impossible display standards, is supported by ever Linux-based OS out there and every vendor has a driver. In this talk I will present about how we got there, and especially what’s been going on recently.
Daniel Vetter
Castle Game Engine and the joy of making and using a custom game engineMichalis Kamburelis
Presentation about Castle Game Engine ( https://castle-engine.io/ ) at GIC 2022 conference. We briefly show Castle Game Engine features then talk about important reasons and things you should take into account if you want to be as crazy as me -- and develop your custom engine :)
Introduction to Docker (as presented at December 2013 Global Hackathon)Jérôme Petazzoni
Not on board of the Docker ship yet? This presentation will get you up to speed, and explain everything you want to know about Linux Containers and Docker, including the new features of the latest 0.7 version (which brings support for all Linux distros and kernels).
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.
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.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
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
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
How world-class product teams are winning in the AI era by CEO and Founder, P...
Linux as a gaming platform, ideology aside
1. Linux as a gaming platform
Ideology aside
Digital Dragons · 19-04-2013
Leszek Godlewski
Programmer
leszek.godlewski@thefarm51.com
www.thefarm51.com
2. 2
What is this talk about?
www.thefarm51.com
It's NOT about:
● Free software
● Ideology
● Business
It is about:
● Linux 101
● Development
● Deployment
2
3. 3
Who is this guy?
www.thefarm51.com
Cross-platform work
(→ de facto – Linux)
● github.com/inequation
● Toy projects, personal utilities,
university stuff
● Games as well!
● AC-130
● Crystal Space
● idTech 3-based games
● Painkiller Hell & Damnation
● Linux as preferred OS for 7+ years
● Former open-source evangelist
● Not anymore – lost interest
3
4. 4
Who is this guy?
www.thefarm51.com4
WHAT IF I TOLD YOU
WE PREACHED FREE SOFTWARE
10. 10
Kernel and the distros
www.thefarm51.com10
Linux distro
(Ubuntu, Debian, Fedora...)
Linux distro
(Ubuntu, Debian, Fedora...)
Linux
kernel
Linux
kernel
Free
software
Free
software
Proprietary
software
Proprietary
software
27+ supported CPU architectures!
http://en.wikipedia.org/wiki/List_of_Linux_supported_architectures
We usually mean i386/amd64
11. 11
Who and why uses Linux?
www.thefarm51.com11
Who:
● Scientists (TOP500)
● IT companies
● Hackers and
power users
Why:
● It's free (well, duh...)
● It's robust
● It's customizable
● Long, intrinsic traditions of free software
● No established channels of proprietary
software distribution
● But Steam can become a gamechanger!
12. 12
Standards
www.thefarm51.com
● Linux adheres to ISO/IEC standards, such
as POSIX and Single Unix Specification...
● System API – file system access, threading,
access control, IPC etc.
● Command-line shell utilities
● ...which also happen to be supported by
MacOS X, Android, iOS (yes, really!) and
a handful of other OSes
12
13. 13
Standards
www.thefarm51.com
● Linux has OpenGL (ES) for 3D graphics
rendering
● Linux has OpenAL for 3D audio with DSP
● Linux has BSD sockets for networking
● Linux has lots of other portable libraries
● And all of these things are also available
on other platforms – Android, MacOS X,
iOS, Windows!
13
14. 14
What does that mean?
www.thefarm51.com14
MacOS X
Linux Mobile
*
* not to scale; actual
overlap is greater
15. 15
There are issues, too
www.thefarm51.com
● Open source legacy → unstable ABIs
● Why need a stable one when you can just
recompile the source?
● This is why NVIDIA distributes glue code with
their drivers
● Extreme heterogeneity
● Package managers (software distribution
mechanisms)
● Patches applied to upstream code → potential
differences in functionality
● Highly customized system configurations
15
16. 16
There are issues, too
www.thefarm51.com
● Proprietary vs free GPU drivers
● Rule of thumb: free drivers perform more
poorly than proprietary ones
● Intel only has free, but the hardware is bad anyway ☺
● Legacy AMD/ATI GPUs only have free, and it's quite
good actually
● NVIDIA drivers are equally good as the
Windows ones
● AMD/ATI drivers are a bit worse than the
Windows ones ☹
16
17. 17
Solution?
www.thefarm51.com17
Assume Ubuntu.
● For development and testing alike
● Probably the most popular desktop
distro*
● This is what Valve does
- Bonus points: Steam compatiblity!
● Power users will get your game running
on others anyway
* there are claims it's Linux Mint now, but it's still based on Ubuntu
19. 19
Getting started
www.thefarm51.com
● Virtual machine
● Fair enough for building
● No such luck with testing
(unless you can virtualise your GPU)
● Native installation
● Painless dual boot
● Which disc image to download?
● Get whatever Valve recommends for
Steam
(the Most recent LTS release is a good bet)
19
20. 20
Tools
www.thefarm51.com
● Tons and tons of IDEs, mostly average
- Code::Blocks, Codelite are OK
- There's also Eclipse if you can stand it
● Tried & tested native code toolchains
- GCC, LLVM (clang)
- gold – the new multithreaded linker by Google
- GNU binutils – objcopy, objdump etc.
● VM toolchains
- Mono, OpenJDK/Oracle JDK
● Build tools
- GNU make, Cmake, SCons, GNU autotools
20
22. 22
SDL – the cross-platform “DirectX”
www.thefarm51.com
● Provides:
- API in C with mappings to other languages
- Timers and threads
- Input – mouse, keyboard, joysticks/pads (incl.
Unicode characters)
- Window management (incl. GL context)
- Audio (very barebone)
- 2D graphics (hardware blitting)
● Be sure to use 2.0 for new projects!
- Support for OpenGL 3+
- Support for multi-viewport apps
22
23. 23
SDL – the cross-platform “DirectX”
www.thefarm51.com
● SDL hides away most platform-specific code
- That's right, no need to even use POSIX!
23
int main (int argc, char *argv[])
{
// initialize SDL
if (SDL_Init(SDL_INIT_VIDEO
| SDL_INIT_TIMER) < 0)
return 1;
// set window caption
SDL_WM_SetCaption("My SDL Game",
"MySDLGame");
// hide mouse, grab input
SDL_ShowCursor(0);
SDL_WM_GrabInput(SDL_GRAB_ON);
// make SDL clean up on exit
atexit(SDL_Quit);
// main game loop
while (1) {
// dispatch events
while (SDL_PollEvent(&ev)){
switch (event.type) {
// ...
}
}
}
SDL_ShowCursor(1);
SDL_WM_GrabInput(SDL_GRAB_OFF);
return 0;
}
24. 24
What if SDL doesn't cut it?
www.thefarm51.com
Despite its awesomeness, SDL has its
shortcomings
● No explicit GLX/WGL context data sharing
and no direct context access
→ no threaded rendering ☹
(hit this corner while porting Painkiller HD)
● No 3D positioning or DSP support in the
stock SDL audio subsystem
- Partially remedied by SDL_mixer
But we need those! Now what?!
24
25. 25
Just DIY – POSIX API
www.thefarm51.com
● Most WinAPI features map to POSIX
- Threading (pthreads)
- Advanced file I/O, incl. memory-mapped
- Advanced memory allocation, incl. paging
- IP sockets
25
#if defined(WIN32) || defined(__WIN32__)
Emitter->InternalPtr = VirtualAlloc(NULL,
Size, MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE);
// ...
#else // It's a UNIX system! I know this!
Emitter->InternalPtr = mmap(NULL, Size,
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
// ...
#endif
26. 26
POSIX API
www.thefarm51.com
There is an extensive, centralised reference
manual in the manpages-dev package
● Type in a shell to access:
man <section number> <subject>
● Section number cheat sheet
1. General console commands
2. System calls
3. C standard library calls
4. Special files (/dev/*) and drivers
5. File formats and conventions
26
27. 27
X11 client API
www.thefarm51.com
● Windows graphical mode maps to X11
- Xlib is a popular client library for the X(11) Window
System server
- XCB is a more modern replacement (often a back-
end for Xlib)
- Raw event pump, window management
- OpenGL interoperability via the GLX extension
27
// event loop
XEvent Event;
while (XPending(GX11Display)) {
XNextEvent(GX11Display, &Event);
switch (Event.type) {
// ...
}
}
28. 28
Joystick/gamepad API
www.thefarm51.com
● Not part of X11 input event framework
● Kernel block devices
- Created as /dev/input/js*
- Hotplug events via libudev (also in Steam
Linux Runtime)
- Handled via open() and ioctl()
- Detailed documentation in the kernel
http://kernel.org/doc/Documentation/input/joystick-api.txt
28
30. 30
Porting a D3D renderer to OpenGL
www.thefarm51.com30
Porting Source To Linux:
Valve's Lessons Learned
Valve & NVIDIA, GTC 2013
Video: http://goo.gl/jMX9A
Slides: http://goo.gl/FtA5k
31. 31
How to deal with heterogeneity?
www.thefarm51.com
● As mentioned earlier, library ABIs tend to
be unstable
- Glibc tags its symbols with version → multiple
versions for backwards compatibility
- Compile with newest version → binary might not
run on older versions
● The ELF format is constant; but even then:
- Dynamic libraries' “sonames” (including version
numbers) are baked in at link time → binary might
not run if system provides a different version
31
32. 32
How to deal with heterogeneity?
www.thefarm51.com32
How?
Static linking
+ will work forever
- binary bloat
Distribute with libs
+ will work forever
- redundant to other
games (also a form of
bloat)
- potential licensing
issues
33. 33
How to deal with heterogeneity?
www.thefarm51.com33
Or use the Steam Linux Runtime
https://github.com/ValveSoftware/steam-runtime
● Collection of essential packages “ripped”
from Ubuntu repos + patches
- freetype, glew, gtk+2.0, libgsm, libogg, libopenal1, libsdl1.2,
libsdl2, libvorbis, libtheora, libx11, libxcb, pulseaudio...
- Release and debug versions of all libs
● Ready-to-use GCC-based toolchains for
i386 and amd64
● Ships with Steam, so every (non-orthodox)
Linux gamer has it
34. 34
Steam Runtime for non-Steam games
www.thefarm51.com
● Start-up shell scripts are common practice
- Search for an installed Steam Runtime
instance
- If not found, install your private copy
- Only when the SLR is available, run the
actual binary
34
35. 35
Steam Runtime for non-Steam games
www.thefarm51.com35
#!/bin/sh
if [ -z $STEAM_RUNTIME ]; then
STEAM_RUNTIME=$HOME/.steam/steam/ubuntu12_32/steam-runtime
fi
if [ ! -d $STEAM_RUNTIME ]; then
# install private copy of Steam Runtime
fi
export LD_LIBRARY_PATH="$STEAM_RUNTIME/i386/lib/i386-linux-gnu:"
"$STEAM_RUNTIME/i386/lib:"
"$STEAM_RUNTIME/i386/usr/lib/i386-linux-gnu:"
"$STEAM_RUNTIME/i386/usr/lib:"
"$STEAM_RUNTIME/amd64/lib/x86_64-linux-gnu:"
"$STEAM_RUNTIME/amd64/lib:"
"$STEAM_RUNTIME/amd64/usr/lib/x86_64-linux-gnu:"
"$STEAM_RUNTIME/amd64/usr/lib:"
"$LD_LIBRARY_PATH"
# launch the actual game here
36. 36
Locales
www.thefarm51.com
● The C standard defines locales for language
and regional settings (see man setlocale)
● They affect *printf()/*scanf() and more
● Xlib can modify locale categories for GUI
apps (see man XSetLocaleModifiers)
● Example POSIX locales: pl_PL.UTF8,
en_GB.ISO-8859-1, ru_RU.KOI8-R
● The Linux manual might make it seem like
retrieving current locale is as easy as calling
char *locale = setlocale(LC_ALL, NULL);
36
37. 37
Locales
www.thefarm51.com
No such luck!
// backup the original application locale
char *Locale = setlocale(LC_ALL, NULL);
char *OriginalLocale = NULL;
if (Locale && *Locale)
OriginalLocale = strdup(Locale);
// reset locale to system (user) default
setlocale(LC_ALL, "");
// retrieve the default locale
Locale = setlocale(LC_ALL, NULL);
// process locale here
// restore original locale
if (OriginalLocale)
{
setlocale(LC_ALL, OrigLocale);
free(OriginalLocale);
}
37
38. 38
Extracting debugging symbols
www.thefarm51.com
● We often want to keep symbols for
shipping binaries
● On Windows – keep the .pdb files
● On Linux
objcopy --only-keep-debug
"${tostripfile}"
"${debugdir}/${debugfile}"
strip --strip-debug --strip-unneeded
"${tostripfile}"
objcopy --add-gnu-debuglink=
"${debugdir}/${debugfile}"
"${tostripfile}"
38
39. 39
Crash handler
www.thefarm51.com
● On POSIX this is called a signal handler
● Signals are a primitive IPC mechanism used
not only for crashes
- Debugger traps, floating point exceptions, terminal
hangup, exit requests... See the output of kill -l
● You can take a shortcut by using:
- libSegFault – part of glibc, try:
$ LD_PRELOAD=/lib/libSegFault.so
/lib/libSegFault.so
- Andrew Tridgell's segv_handler
http://www.samba.org/junkcode/#segv_handler
39
40. 40
A word on licensing
www.thefarm51.com
Whenever you use a library, check its
licensing terms!
● GPL is restrictive
- Requires derivative works to use GPL
→ sharing the source code
● LGPL is restrictive with linking exception
- Allows linking to an LGPL library without
sharing the source code
● MIT, BSD and Zlib licenses are generally
permissive, some might require advertising
40
42. 42
Where do I put the files?
www.thefarm51.com
● Windows
- Game data and binaries: C:Program Files
- User data: %APPDATA%, Documents...
- AoS-like organization
● Linux (conventional)
- Game binaries: /usr/bin/, /usr/games/
- Game data: /usr/share/games/
- User data: $HOME/.config/
($XDG_CONFIG_HOME environment variable)
- SoA-like organization
- Filesystem Hierarchy Standard
42
43. 43
Where do I put the files?
www.thefarm51.com
● FHS mainly concerns distro packages
● Proprietary software often installs into
/opt/<package name>/
(“Add-on application software packages”)
● Proprietary software also often installs
“wherever”
● Steam games live in
~/.steam/steam/SteamApps/
● Just put game data and binaries in one
place, and save user data to ~/.config/
43
44. 44
Creating installation bundles
www.thefarm51.com
● Not relevant for Steam games (duh)
● Simple .tar.gz archives
$ tar czvf <archive name>
<input files...>
● Distro packages (.rpm, .deb...)
● Self-extracting command-line installers as
shell scripts
https://coderwall.com/p/y3upqw
● MojoSetup
http://icculus.org/mojosetup/
44
46. 46
Summary
www.thefarm51.com
● Engineering costs of a Linux port for an
already multiplatfrom game engine are low
- “It's just an API”™
● SDL covers a lot of boilerplate for you
● Overcoming heterogeneity is essential
- Steam Linux Runtime is helping to fix it
● Watch out for those licenses!
● When in doubt:
- Use Ubuntu
- Do whatever Valve does
46
48. 48
Special thanks
www.thefarm51.com
Ryan “Icculus” Gordon
Inspiration & software contributions
Michał Wielgus
Critical review & free software comrade
Reinhard Pollice
Getting stuff done for me on the PKHD port
48
49. 49
Thank you!
Like us on Facebook!
http://www.facebook.com/farm51
http://www.facebook.com/deadfalladventures
http://www.facebook.com/PainkillerGame
leszek.godlewski@thefarm51.com
www.thefarm51.com