Although the "Modules" system has been around since the early 1990ties it has yet to find widespread adoption outside of the scientific computing and HPC community. Most FOSS developers rely on a wide range of tools to abstract and manage their Linux and UN!X environments for different scripting languages, compiler toolchains and applications. This problem has been long solved in the world of High Performance Computing where optimization of applications, toolchains and libraries is paramount. Environment Modules are a wonderful tool that will save time, help ease of development processes, reproducibility, and management of your development environment. This talk will give insight into how Modules work, which implementations are out there and how to use Modules instead of language bound tools as well as a comparison with common tools that the community uses to develop on Python and Ruby (for example) projects.
I intend to give a 20 min overview of the "Environment Modules" system as deployed on many scientific and HPC sites to FOSS developers, students and linux enthusiasts.
This will include a comparison of different Modules implementations their history and typical use cases in HPC and development environments and how Modules can be of help to FOSS developers and systems administrators. As a developer and systems engineer, I am familiar with a lot of different systems to manage multiple installations of e.g. script languages their environments and libraries. I'll give a short overview and comparison of those and compare these systems with Modules and show how developers and engineers alike can save time and effort in managing their environment for all applications, toolchains and script languages.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
Kernel Recipes 2013 - ARM support in the Linux kernelAnne Nicolas
Over the past two years, the support of the platforms based on ARM processor in the Linux kernel has evolved considerably. Between the use of the Device Tree, moving drivers in many features like clock management or multiplexing of pines, the platform mechanism, the changes have been numerous.
Through the experience of the speaker about the addition to the core support for ARM Marvell Armada 370/XP processors, this intervention will provide an overview of these changes in order to better understand the new organization of the code for ARM architecture in the kernel.
This talk is intended to be useful both for developers who want to add support for a new ARM processor in the kernel, but also to those wishing to understand the ARM code for porting Linux to a new card, or just the curious one.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
Kernel Recipes 2013 - ARM support in the Linux kernelAnne Nicolas
Over the past two years, the support of the platforms based on ARM processor in the Linux kernel has evolved considerably. Between the use of the Device Tree, moving drivers in many features like clock management or multiplexing of pines, the platform mechanism, the changes have been numerous.
Through the experience of the speaker about the addition to the core support for ARM Marvell Armada 370/XP processors, this intervention will provide an overview of these changes in order to better understand the new organization of the code for ARM architecture in the kernel.
This talk is intended to be useful both for developers who want to add support for a new ARM processor in the kernel, but also to those wishing to understand the ARM code for porting Linux to a new card, or just the curious one.
Talk I gave at The Yocto Project Summit Oct 29-30 2020 entitled: Yocto Project Kernel Lab Hands-On. The Yocto Project Summit was a 2-day summit at the tail end of the Embedded Linux Conference Europe (ELCE) 2020. This class was delivered virtually to an audience of roughly 60 attendees.
The talk discusses using The Yocto Project tooling to facilitate common Linux kernel tasks such as configuration, BSP creation, kernel modification, Linux kernel config fragments, and more.
The conversion of the ARM Linux kernel over to the Device Tree as the mechanism to describe the hardware has been a significant change for ARM kernel developers. Nowadays, all developers porting the Linux kernel on new ARM platforms, either new SOCs or new boards, have to work with the Device Tree. Based on practical examples, this talk intends to provide a ""getting started guide"" for newcomers in the Device Tree world: what is the Device Tree? How is it written and compiled? How do the bootloader and kernel interact? How are Device Tree bindings written and documented? What are the best practices for writing Device Trees and their bindings?
Video available at https://www.youtube.com/watch?v=m_NyYEBxfn8.
Over the years Linux is being used as operating system in many intelligent and smart electronic devices starting from mobile phone, refrigerator to cow milking devices apart from desktops and server computers. Though Linux is open source, its often difficult for a beginner to get started. In this presentation embedded system and embedded Linux have been introduced through examples, animation and short explanation. This presentation is targeted to the absolute beginner or embedded software engineer who wants to be part of exciting world of Linux and the enthusiast or even manager who just wants to get idea about embedded Linux.
don't waste your time ,save life
,we should not allow the trees to be cut down , child labour is another very sensitive matter around us . i have created this slide so that we should open oyur eyes and look around what damage we have done...
This presentation is concerned with the business environment which is very dynamic in nature. It tells the factors which directly or/and indirectly influence a business concern.I Hope it will do for you
Thanks
what are the warning signs of a heart attack and what to do when encounter the warning signs. What equipments to prepare at home could be a life and death choise in some circumstances.
Talk I gave at The Yocto Project Summit Oct 29-30 2020 entitled: Yocto Project Kernel Lab Hands-On. The Yocto Project Summit was a 2-day summit at the tail end of the Embedded Linux Conference Europe (ELCE) 2020. This class was delivered virtually to an audience of roughly 60 attendees.
The talk discusses using The Yocto Project tooling to facilitate common Linux kernel tasks such as configuration, BSP creation, kernel modification, Linux kernel config fragments, and more.
The conversion of the ARM Linux kernel over to the Device Tree as the mechanism to describe the hardware has been a significant change for ARM kernel developers. Nowadays, all developers porting the Linux kernel on new ARM platforms, either new SOCs or new boards, have to work with the Device Tree. Based on practical examples, this talk intends to provide a ""getting started guide"" for newcomers in the Device Tree world: what is the Device Tree? How is it written and compiled? How do the bootloader and kernel interact? How are Device Tree bindings written and documented? What are the best practices for writing Device Trees and their bindings?
Video available at https://www.youtube.com/watch?v=m_NyYEBxfn8.
Over the years Linux is being used as operating system in many intelligent and smart electronic devices starting from mobile phone, refrigerator to cow milking devices apart from desktops and server computers. Though Linux is open source, its often difficult for a beginner to get started. In this presentation embedded system and embedded Linux have been introduced through examples, animation and short explanation. This presentation is targeted to the absolute beginner or embedded software engineer who wants to be part of exciting world of Linux and the enthusiast or even manager who just wants to get idea about embedded Linux.
don't waste your time ,save life
,we should not allow the trees to be cut down , child labour is another very sensitive matter around us . i have created this slide so that we should open oyur eyes and look around what damage we have done...
This presentation is concerned with the business environment which is very dynamic in nature. It tells the factors which directly or/and indirectly influence a business concern.I Hope it will do for you
Thanks
what are the warning signs of a heart attack and what to do when encounter the warning signs. What equipments to prepare at home could be a life and death choise in some circumstances.
How to Become a Thought Leader in Your NicheLeslie Samuel
Are bloggers thought leaders? Here are some tips on how you can become one. Provide great value, put awesome content out there on a regular basis, and help others.
In this deck from the 2016 HPC Advisory Council Switzerland Conference, Kenneth Hoste from the University Ghent presents an introduction to EasyBuild, an open-source framework for (automatically) getting scientific software installed on HPC systems.
Watch the video presentation: http://wp.me/p3RLHQ-f8J
Learn more: https://github.com/hpcugent/easybuild
See more talks from the Switzerland HPC Conference:
http://insidehpc.com/2016-swiss-hpc-conference/
Sign up for our insideHPC Newsletter: http://insidehpc.com/newsletter
This is a short introduction to some basic concepts about device drivers on Linux, and does not get into the nuts and bolts of it; uses a serial driver as an example, and how does it fit within the TTY layer. Includes code walk-through.
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteTushar B Kute
Recent And Future Trends In Os
Linux Kernel Module Programming, Embedded Operating Systems: Characteristics of Embedded Systems, Embedded Linux, and Application specific OS. Basic services of NACH Operating System.
Introduction to Service Oriented Operating System (SOOS), Introduction to Ubuntu EDGE OS.
Designed By : Tushar B Kute (http://tusharkute.com)
Kernel Recipes 2013 - Easy rootfs using BuildrootAnne Nicolas
The Linux kernel is an exciting world. But if you want to get a working system, it is still essential to provide our kernel a root filesystem. The kernel developers often struggle to find a simple rootfs, adapted to their architecture, together with the tools that fits properly.
We will present how Buildroot, a tool for building embedded Linux systems, can meet the needs of kernel developers in the build of minimal rootfs for their developments.
In dieser Session werfen wir einen Blick auf die Android Platform jenseits der Dalvik VM. Wir entdecken den Android Source Code und erklären wo sich interessante Beispiele und Referenzen für App-Entwickler sowie nützliche Tools verbergen. Ein High-Level Überblick über die Platform-Architektur und das Platform-Build-System runden die Session ab.
Shared Object images in Docker: What you need is what you want.Workhorse Computing
Docker images require appropriate shared object files (".so") to run. Rather than assume Ubuntu has the correct lib's, use ldd to get a list and install the ones you know you need. This can reduce the underlying images from GB to a few MB.
Because "use urandom" isn't everything: a deep dive into CSPRNGs in Operating...Aaron Zauner
Over the past year multiple people have been engaging language maintainers and designers to change their use of CSPRNGs (mainly relying on user-land RNGs like the one from OpenSSL, and sometimes suggesting "adding entropy" by various means from user-land daemons like haveged). In this short presentation we'll survey the struggle of cryptographers, developers and security engineers to change the path various high-profile languages have taken to provide randomness to their userbase. Affected languages include but are not limited to: Ruby, node.js and Erlang. We outline better approaches for language maintainers and implementers as well as coming changes within the Linux kernel crypto subsystem (i.e. /dev/random and /dev/urandom) w.r.t. security and performance. Recently these changes were merged into mainline Linux (4), problems with languages implementations however remain. We'll also discuss operating system provided randomness testing, attacks/mitigation in embedded and virtualized environments.
[BlackHat USA 2016] Nonce-Disrespecting Adversaries: Practical Forgery Attack...Aaron Zauner
https://eprint.iacr.org/2016/475
We investigate nonce-reuse issues with the Galois/Counter Mode (GCM) algorithm as used in TLS. Nonce reuse in GCM allows an attacker to recover the authentication key and forge messages as described by Joux. With an Internet-wide scan we identified over 70,000 HTTPS servers that are at risk of nonce reuse. We also identified 184 HTTPS servers repeating nonces directly in a short connection. Affected servers include large corporations, financial institutions, and a credit card company. We implement a proof of concept attack allowing us to violate the authenticity of affected HTTPS connections and inject content.
No need for Black Chambers: Testing TLS in the E-Mail Ecosystem at Large (hac...Aaron Zauner
Presented at hack.lu 2015.
Abstract—TLS is the most widely used cryptographic protocol on the Internet. While many recent studies focused on its use in HTTPS, none so far analyzed TLS usage in e-mail related protocols, which often carry highly sensitive information. Since end-to-end encryption mechanisms like PGP are seldomly used, today confidentiality in the e-mail ecosystem is mainly based on the encryption of the transport layer. A well-positioned attacker may be able to intercept plaintext passively and at global scale.
We collected and scanned a massive data-set of 20 million IP/port combinations of all related protocols (SMTP, POP3, IMAP) and legacy ports. Over a time span of approx. three months we conducted more than 10 billion TLS handshakes. Additionally, we show that securing server-to-server communication using e.g. SMTP is inherently more difficult than securing client-to- server communication. Lastly, we analyze the volatility of TLS certificates and trust anchors in the e-mail ecosystem and argue that while the overall trend points in the right direction, there are still many steps needed towards secure e-mail.
[TALK WAS HELD IN GERMAN DUE TO AUDIENCE]
The BetterCrypto Project started out in the fall of 2013 as a collaborative community effort by systems engineers, security engineers, developers and cryptographers to build up a sound set of recommendations for strong cryptography and privacy enhancing technologies catered towards the operations community in the face of overarching wiretapping and data-mining by nation-state actors. The project has since evolved with a lot of positive feedback from the open source and operations community in general with input from various browser vendors, linux distribution security teams and researchers. This talk will give a concise guide on how to properly deploy networked services in a secure fashion that is applicable today. We will also give an update on the project as well as new development on the front of cryptography, attacks and TLS protocol standardization.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
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.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
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/
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.
1. How to save the
environment
..and get rid of virtualenv, rvm, pythonbrew, rbenv, pythonz (...)
FOSDEM 2014 - Brussels, Belgium, Old World
Earth, Orion–Cygnus Arm, Milky Way
Aaron Zauner
azet@azet.org
@a_z_e_t
2. `whoami`
Self-employed engineer
currently involved in
IT-Infrastructure, HPC
and security stuff
primarily working for
biology institutes of
the austrian academy
of sciences
Used to do
Web/Mail and Datacenter
Operations
Front/Backend Dev.
Security auditing
FOSS/Community (BSD)
[…]
5. Environment Modules
In use ever since in High Performance and Scientific
Computing
Ease of administration
Ease of use
6. Environment Modules
by most just refered to as “Modules”
originally intended to enable multiple users to have software in different versions
available
traditionally most HPC environments do not use system packages
special compilers, toolchains, math libraries, optimisation, interconnect-specifics […]
and often scientific software is not to be found in $distro repo (because it’s crap ||
not used outside the sci. community)
somewhat like Gentoo or Arch - but a lot more cumbersome for sysadmins and
users
a system to manage multiple versions of the same software with different toolchains
is needed that is easy to maintain
and easy for users (developers and scientists, usually) to learn and use
7. Environment Modules
“modulefiles” dynamically set an environment specific to a software
may load/unload other modulefiles if there is a dependency present
examples include but are not limited to
PATH
MANPATH
LD_LIBRARY_PATH
LD_PRELOAD
8. Environment Modules
(with Lmod - more on that later)
!
!
whatis("Git is a free and open source distributed version
control system designed to handle everything from small to
very large projects with speed and efficiency. - Homepage:
http://git-scm.com/“)
!
conflict("git")
!
prepend_path(“LD_LIBRARY_PATH","/software/git/1.8.2/lib")
prepend_path("LD_LIBRARY_PATH","/software/git/1.8.2/lib64")
prepend_path(“MANPATH","/software/git/1.8.2/share/man")
!
[…]
10. Environment Modules: Implementations
“Classical Modules” (Furlani et. al.): C/Tcl
still in use at arguably most HPC sites
modules.sourceforge.net
!
modules-tcl (Kent Mein of UMN): Tcl
http://sourceforge.net/p/modules/modules-tcl
Cmod (Per Cederqvist et. al.): C
http://www.lysator.liu.se/cmod/
Lmod (Robert McLay of TACC): Lua
https://www.tacc.utexas.edu/tacc-projects/lmod
similar systems:
!
SoftEnv (by and in use at Argonne
National Lab): Csh
http://www.mcs.anl.gov/hs/software/systems/
softenv/softenv-admin.html
dotkit (by and in use at Lawrence
Livermore National Lab): *Shell
https://computing.llnl.gov/?
set=jobs&page=dotkit
11. Environment Modules: Implementations
“Classical Modules” (Furlani et. al.): C/Tcl
still in use at arguably most HPC sites
modules.sourceforge.net
!
modules-tcl (Kent Mein of UMN): Tcl
http://sourceforge.net/p/modules/modules-tcl
Cmod (Per Cederqvist et. al.): C
http://www.lysator.liu.se/cmod/
Lmod (Robert McLay of TACC): Lua
https://www.tacc.utexas.edu/tacc-projects/lmod
similar systems:
!
SoftEnv (by and in use at Argonne
National Lab): Csh
http://www.mcs.anl.gov/hs/software/systems/
softenv/softenv-admin.html
dotkit (by and in use at Lawrence
Livermore National Lab): *Shell
https://computing.llnl.gov/?
set=jobs&page=dotkit
12. Modules in the 21st century: Lmod
I’ll focus on Lmod from now on, though most things will work with other systems as well
Very actively maintained by one of the most awesome maintainers we’ve seen in an open-source
project
Active community
Cool new features:
automatic swapping of modules, if applicable
conflict detection (i.e. two compilers loaded at the same time)
loading of modules with “atleast”, “between” and “latest” w.r.t software versions
Spider (searching) and Keywords
Caching
13. Modules in the 21st century: Lmod
I’ll focus on Lmod from now on, though most things will work with other systems as well
Very actively maintained by one of the most awesome maintainers we’ve seen in an open-source
project
Active community
Cool new features:
Hooks (e.g. function call every time a module is loaded)
tcl2lua wrapper for conversion of old module files
shell script/environment to Lua wrapper
GPU and Xeon Phi specifics (colors :D)
[…]
14. Environment Modules: In Action
module avail
----------------- /net/gmi.oeaw.ac.at/software/mendel/intel-x86_64-sandybridge-avx/modules/devel -----------------Autoconf/2.69-goolf-1.4.10
SCons/2.3.0-ictce-5.3.0-Python-2.7.3
(D)
Automake/1.13.1-goolf-1.4.10
SWIG/2.0.4-goolf-1.4.10-Python-2.7.3
Boost/1.51.0-goolf-1.4.10-Python-2.7.3
ZeroMQ/2.2.0-goolf-1.4.10
Boost/1.51.0-goolf-1.4.10
(D)
ant/1.8.4-Java-1.7.0_10
CMake/2.8.4-goolf-1.4.10
gperf/3.0.4-goolf-1.4.10
CMake/2.8.11-goolf-1.4.10
guile/1.8.8-goolf-1.4.10
CMake/2.8.12-GCC-4.7.2
(D)
ncurses/5.9-GCC-4.7.2
Greenlet/0.4.1-goolf-1.4.10-Python-2.7.3
ncurses/5.9-goalf-1.1.0-no-OFED
JUnit/4.10-Java-1.7.0_10
ncurses/5.9-goolf-1.4.10
LZO/2.06-goolf-1.4.10
ncurses/5.9-ictce-5.2.0
LZO/2.06-ictce-5.3.0
(D)
ncurses/5.9-ictce-5.3.0
(D)
M4/1.4.16-goolf-1.4.10
pkg-config/0.27.1-goolf-1.4.10
PCRE/8.12-goolf-1.4.10
setuptools/0.6c11-goolf-1.4.10-Python-2.7.3
PCRE/8.12-ictce-5.3.0
(D)
setuptools/0.7.8-goolf-1.4.10-Python-2.7.3
PyZMQ/2.2.0.1-goolf-1.4.10-Python-2.7.3-zmq2
setuptools/2.0.1-goolf-1.4.10-Python-2.7.3
(D)
SCons/2.3.0-goolf-1.4.10-Python-2.7.3
!
(only a small subset of the modules at this site)
19. Environment Modules: In Action
module display
!
aaron.zauner@login0 [~]> module display GCC/4.7.2
--------------------------------------------------------------------------------------------------------------/net/gmi.oeaw.ac.at/software/mendel/intel-x86_64-sandybridge-avx/modules/compiler/GCC/4.7.2:
--------------------------------------------------------------------------------------------------------------whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran,
Java, and Ada, as well
as libraries for these languages (libstdc++, libgcj,...). - Homepage: http://gcc.gnu.org/")
conflict("GCC")
prepend_path("CPATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/include")
prepend_path("LD_LIBRARY_PATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/lib")
prepend_path("LD_LIBRARY_PATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/lib64")
prepend_path("LD_LIBRARY_PATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/lib/gcc/x86_64unknown-linux-gnu/4.7.2")
prepend_path("MANPATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/share/man")
prepend_path("PATH","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/bin")
setenv("EBROOTGCC","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2")
setenv("EBVERSIONGCC","4.7.2")
setenv("EBDEVELGCC","/net/gmi.oeaw.ac.at/software/mendel/29_04_2013/software/GCC/4.7.2/easybuild/GCC-4.7.2easybuild-devel")
help([[
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran,
Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...). - Homepage: http://gcc.gnu.org/
!
]])
!
!
21. Modules for FOSS Devs.
Still largely unkown and unused in the FOSS community
Could be a reasonable replacement for the vast number
of language specific environment abstraction tools as in
use today
There’s really no reason not to use it (that I know of)
I’ll demonstrate on two prominent examples
22. Examples: RVM
“Ruby enVironment (Version) Manager” [sic!]
20k lines of shell script, now being rewritten in Ruby
basically installs and manages multiple versions of Ruby
also does a couple of other cool things
recently did a fundraiser for 50k USD to do the rewrite to Ruby
actually has corporate sponsoring
Sorry to say this: I develop Ruby code and It’s a bloated piece of shit that fucks up
your environment beyond repair. Won’t ever use it again, ever. ever.
Of course web developers love the hell out of it
23. Examples: RVM
rvm install ruby-2
installs Ruby2 from source, downloads dependencies.
wow. such magic. many hax. much sophisticate
rvm list
rvm use ruby-2
rvm use 1.9.2 —default
does any of that sound familiar? right.
24. Examples: RVM
azet@debian:~$ rvm use ruby-2
Using /home/azet/.rvm/gems/ruby-2.1.0
azet@debian:~$ set -v; rvm use system &>gimmethepain
azet@debian:~$ wc -l gimmethepain
6458 gimmethepain
azet@debian:~$
!
Yes. It takes ~6.5k lines of bash code to switch the Ruby
version in the current environment with RVM.
25. “Always code as if the person who ends up
maintaining your code is a violent psychopath who
knows where you live.”
26. Examples: RVM
Environmental pollution fact: RVM screws with `cd`.
azet@debian:~$ set -x
azet@debian:~$ cd ~
+ cd /home/azet
+ builtin cd /home/azet
+ [[ -n '' ]]
+ true
+ __rvm_cd_functions_set
+ __rvm_do_with_env_before
+ [[ -n '' ]]
+ [[ -n /home/azet/.rvm ]]
+ source /home/azet/.rvm/scripts/initialize
++ : rvm_trace_flag:0
++ (( rvm_trace_flag > 0 ))
++ [[ -n 4.2.45(1)-release ]]
++ shopt -s extglob
++ export __rvm_env_loaded
++ : __rvm_env_loaded:0:
++ : __rvm_env_loaded:1:
++ [[ -z '' ]]
++ typeset -f __rvm_cleanse_variables
++ __rvm_cleanse_variables
++ __rvm_unset_ruby_variables
++ unset rvm_env_string rvm_ruby_string rvm_ruby_strings rvm_ruby_binary rvm_ruby_gem_home rvm_ruby_gem_path
rvm_ruby_home rvm_ruby_interpreter rvm_ruby_irbrc rvm_ruby_log_path rvm_ruby_major_version rvm_ruby_minor_version
rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_release_version rvm_ruby_repo_url rvm_ruby_repo_branch
rvm_ruby_revision rvm_ruby_selected_flag rvm_ruby_tag rvm_ruby_version rvm_head_flag rvm_ruby_package_file
rvm_ruby_configure rvm_ruby_name rvm_ruby_url rvm_ruby_global_gems_path rvm_ruby_args rvm_ruby_name rvm_llvm_flag
++ __rvm_load_rvmrc
++ typeset _file
++ typeset -a rvm_rvmrc_files
++ (( 0 == 1 ))
..this goes on for another 148 lines of executed bullshit. 170 total
for every `cd` you type after installing RVM. yup. isn’t that great?
27. Examples: RVM
Environmental pollution fact: RVM screws with `cd`.
azet@debian:~$ set -x
azet@debian:~$ cd ~
+ cd /home/azet
+ builtin cd /home/azet
+ [[ -n '' ]]
+ true
+ __rvm_cd_functions_set
+ __rvm_do_with_env_before
+ [[ -n '' ]]
+ [[ -n /home/azet/.rvm ]]
+ source /home/azet/.rvm/scripts/initialize
++ : rvm_trace_flag:0
++ (( rvm_trace_flag > 0 ))
++ [[ -n 4.2.45(1)-release ]]
++ shopt -s extglob
++ export __rvm_env_loaded
++ : __rvm_env_loaded:0:
++ : __rvm_env_loaded:1:
++ [[ -z '' ]]
++ typeset -f __rvm_cleanse_variables
++ __rvm_cleanse_variables
++ __rvm_unset_ruby_variables
++ unset rvm_env_string rvm_ruby_string rvm_ruby_strings rvm_ruby_binary rvm_ruby_gem_home rvm_ruby_gem_path
rvm_ruby_home rvm_ruby_interpreter rvm_ruby_irbrc rvm_ruby_log_path rvm_ruby_major_version rvm_ruby_minor_version
rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_release_version rvm_ruby_repo_url rvm_ruby_repo_branch
rvm_ruby_revision rvm_ruby_selected_flag rvm_ruby_tag rvm_ruby_version rvm_head_flag rvm_ruby_package_file
rvm_ruby_configure rvm_ruby_name rvm_ruby_url rvm_ruby_global_gems_path rvm_ruby_args rvm_ruby_name rvm_llvm_flag
++ __rvm_load_rvmrc
++ typeset _file
++ typeset -a rvm_rvmrc_files
++ (( 0 == 1 ))
..this goes on for another 148 lines of executed bullshit. 170 total
for every `cd` you type after installing RVM. yup. isn’t that great?
28. Examples: RVM
azet@debian:~$ time cd
!
real 0m0.009s
user 0m0.004s
sys 0m0.004s
azet@debian:~$ rvm implode
[…]
azet@debian:~$ time cd
!
real 0m0.000s
user 0m0.000s
sys 0m0.000s
!
..if you really do not like modules, please use rbenv instead
a lot more to tell about RVM but lets move on,..
29. Examples: RVM
Ahh by the way, almost forgot..
azet@debian:~$ cd project/
-bash: /home/azet/.rvm/scripts/initialize: No such file or directory
!
30. Examples: virtualenv
Basically the same story here
“virtualenv is a tool to create isolated Python environments.”
azet@debian:~/python$ virtualenv MyLittlePythonSandbox
New python executable in MyLittlePythonSandbox/bin/python
Installing setuptools, pip...done.
azet@debian:~/python$ cd MyLittlePythonSandbox/
azet@debian:~/python/MyLittlePythonSandbox$ source bin/activate
(MyLittlePythonSandbox)azet@debian:~/python/MyLittlePythonSandbox$ pip install XYZFUBAR
!
[write some code]
People tend to do this a lot and actually ship stuff in that way. So projects
end up with this huge requirements.txt files that you might have noticed
..if thats not bad development practice I’m not sure what is
bin/activate is actually a lot cleaner (~15 LoC Bash) than the RVM way
31. Examples: virtualenv
It’s a pain installing, using, maintaining and upgrading projects that someone has
prepared using virtualenv in a production environment
Often Webprojects use it, which means that your HTTP(S) daemon needs to be aware of
virtualenv and switch to the directory and source stuff to get things working.. m(
From a good recent blog post* on why you should not do it that way:
* http://pythonrants.wordpress.com/2013/12/06/why-i-hate-virtualenv-and-pip/
32. Handling IPhyton with Modules
devbox$ module display ipython/0.13.2-Python-2.7.3
!
whatis("The IPython project provides an enhanced interactive environment that
includes, among other features, support for data visualization and facilities for
distributed and parallel computation. - Homepage: http://ipython.org/index.html”)
!
conflict("ipython")
!
load("Python/2.7.3")
!
prepend_path("LD_LIBRARY_PATH","/software/ipython/0.13.2-Python-2.7.3/lib")
prepend_path("MANPATH","/software/ipython/0.13.2-Python-2.7.3/share/man")
prepend_path(“PATH","/software/ipython/0.13.2-Python-2.7.3/bin")
!
prepend_path(“PYTHONPATH","/software/ipython/0.13.2-Python-2.7.3/lib/python2.7/
site-packages")
!
help([[
The IPython project provides an enhanced interactive environment that
includes, among other features, support for data visualization and facilities for
distributed and parallel computation. - Homepage: http://ipython.org/index.html
!
]])
!
devbox$ module load ipython/0.13.2-Python-2.7.3
devbox$ ipython —version
0.13.2
devbox$
33. What if I tell you that..
You can do all this things quite easily with modules
Save time & effort maintaining stuff
Have reproducibility
..and more fun & time to concentrate on that is important
developing good software
?
34. ..but modules does not install stuff for me I take it?
Back in the 1970ies at Bell Labs Ken Thompson put forward a small set of radical
ideas for software engineering that are often ignored by the FOSS community
today (who shouted systemd?), those have been summarised by Doug Mcllroy of
Bell Labs as:
“Write programs that do one thing and do it well. Write programs to work together.
Write programs to handle text streams, because that is a universal interface.”
35. ..but modules does not install stuff for me I take it?
Back in the 1970ies at Bell Labs Ken Thompson put forward a small set of radical
ideas for software engineering that are often ignored by the FOSS community
today (who shouted systemd?), those have been summarised by Doug Mcllroy of
Bell Labs as:
“Write programs that do one thing and do it well. Write programs to work together.
Write programs to handle text streams, because that is a universal interface.”
There are a lot of different ways to install binary or source distributions of
software.
They are all compatible with the idea of environment modules.
For an excellent approach that fits HPC/comp.sci. sites well talk to the EasyBuild
guys (the adjacent talk will introduce you to their concept).
EasyBuild not only does optimised builds but outputs modulefiles as well!
36. Thank you for your time!
E-Mail: azet@azet.org
XMPP/Jabber: azet@jabber.ccc.de
Twitter: @a_z_e_t
GitHub: azet
GPG Fingerprint: 0xFDB9B5D5