RubyGems is the package manager for Ruby libraries. Hiroshi Shibata discussed recent changes to RubyGems 3 and 4, as well as integration efforts between RubyGems and Bundler. Key points included making the conservative option default in RubyGems 4, installing gems to the user directory by default, and resolving incompatibilities between dependency resolvers in RubyGems and Bundler. The team is working to merge code bases and integrate command line interfaces.
How to develop the Standard Libraries of Ruby?Hiroshi SHIBATA
I maintain the RubyGems, Bundler and the standard libraries of the Ruby language. So, I've been extract many of the standard libraries to default gems and GitHub at Ruby 3.0. But the some of libraries still remains in only Ruby repository. I will describe these situation.
How to develop the Standard Libraries of Ruby?Hiroshi SHIBATA
I maintain the RubyGems, Bundler and the standard libraries of the Ruby language. So, I've been extract many of the standard libraries to default gems and GitHub at Ruby 3.0. But the some of libraries still remains in only Ruby repository. I will describe these situation.
Rspec and Capybara Intro Tutorial at RailsConf 2013Brian Sam-Bodden
Behavior-Driven Development and Acceptance Testing are heavily intertwined and in many aspects are one and the same. Both focus on starting at the outer layers of your application by concentrating on what matter to users; behavior. In this session/workshop we'll talk about how testing can be used both for specifying your application yet to be develop expected behavior and as accurate, running documentation that can be used to validate your stakeholder's acceptance criteria. We'll talk about the different types of testing and do a few hands-on exercises to flesh out a Rails application with RSpec and Capybara.
Presentation from the 4th Athens Gophers Meetup.
At a glance we present:
- why we introduced a new language in the organization and why that
was Go
- how we approached the transition
- some of the projects we built in Go
- the challenges we faced and the lessons we learned in the process
Automated Releases to RubyGems.org using Travis-CI.orgFrancis Luong
A description of a toolset and flow to do automated releases of an open source repo from github to rubygems.org using Travis, Jeweler, and CodeClimate.
In this tutorial, we will explain how to get your own GitHub instance running on your own Ubuntu 12.04 VPS. Ubuntu 12.04 is recommended because of some incompatibilities between Python and Ruby on other Linux distributions. Also, make sure you have at least 1GB RAM memory on your VPS. Our first step is to install some required packages and dependencies.
Presented by VEXXHOST, provider of Openstack based Public and Private Cloud Infrastructure
https://vexxhost.com/
Long journey of Ruby Standard library at RubyKaigi 2024Hiroshi SHIBATA
Ruby has a lot of standard libraries from Ruby 1.8. I promote them democratically with GitHub today via default and bundled gems. So, I'm working to extract them for Ruby 3.4 continuously and future versions. It's long journey for me.
After that, some versions may suddenly happen LoadError at require when running bundle exec or bin/rails, for example matrix or net-smtp. We need to learn what's difference default/bundled gems with standard libraries.
In this presentation, I will introduce what's the difficult to extract bundled gems from default gems and the details of the functionality that Ruby's require and bundle exec with default/bundled gems. You can learn how handle your issue about standard libraries.
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
I will introduce what's the difficult to extract bundled gems from default gems and the details of the functionality that Ruby's require and bundle exec with default/bundled gems. You can learn how handle your issue about standard libraries.
Deep dive into Ruby's require - RubyConf Taiwan 2023Hiroshi SHIBATA
Since Ruby's bundled and default gems change every year with each release, some versions may suddenly happen LoadError at require when running bundle exec or bin/rails, for example matrix or net-smtp.
In this presentation, I will introduce the details of the functionality that extends Ruby's require to provide guidance to users on what they can do to load them. And I will also show how $LOAD_PATH is build behind Ruby and Rails by Bundler.
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.
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.
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.
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.
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/
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.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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.
14. •The package manager of Ruby libraries.
•`gem install “rails:~>5.2”`
•You can install specified version of Ruby
libraries that called `Gem`. RubyGems
handles global environment on your box.
•You could specify `gem ‘rails’, ‘~> 5.2’`
syntax without its dependency in your code.
What’s rubygems?
15. •The RubyGems accepts SemVer like
versioning Policy.
•Merge latest stable version into Ruby Core
•Ruby 2.6.0 bundled RubyGems 3.0
•Ruby 2.7.0 will bundle RubyGems 3.1 or
4.0(TBD)
•Ruby 3.0 will bundle RubyGems ???
The policy of RubyGems versioning
16. •RubyGems also have HackerOne.
•3 people handle vulnerability issues and
will release RubyGems by SemVer Policy
like “2.7.7” from “2.7.6”
•On the other hand, The Ruby core team will
back port only vulnerability fixes by
independent version like “2.6.5.1”, not
“2.7.7”
Security release of RubyGems
17. How develop RubyGems?
• The canonical repository is https://
github.com/rubygems/rubygems.
• https://github.com/rubygems/
rubygems.org is rubygems.org. It’s not
client software.
• We use Pull-Request and
merge bot named
`@bundlerbot`
19. •I released RubyGems 3 at 19 Dec 2018
•https://blog.rubygems.org/
2018/12/19/3.0.0-released.html
•It says 5 major updates.
• S3 source. Pull request #1690 by Aditya Prakash.
• Download gems with threads. Pull request #1898 by André Arko.
• Update to SPDX license list 3.0. Pull request #2152 by Mike
Linksvayer.
• [GSoC] Multi-factor feature for RubyGems. Pull request #2369 by
Qiu Chaofan.
• Use bundler 1.17.2. Pull request #2521 by SHIBATA Hiroshi.
RubyGems 3 has been released
20. •We use the changelog generator
from commit logs.
•https://github.com/rubygems/
rubygems/blob/master/util/
update_changelog.rb
•It picked by @bundlerbot
messages.
•Because the changelog is not
structured text.
Where come from the changelog?
25. •https://github.com/rubygems/rubygems/
pull/2207
Added coverage ability used by simplecov
~/D/g/r/rubygems (master) > rake test
Run options: --seed 2662
# Running:
...................................................................................................................
......
(snip)
...........................................................................S.......................................
.........................................
Finished in 72.010573s, 29.0513 runs/s, 90.0423 assertions/s.
2092 runs, 6484 assertions, 0 failures, 0 errors, 1 skips
You have skipped tests. Run with --verbose for details.
Coverage report generated for Unit Tests to /Users/hsbt/Documents/github.com/rubygems/rubygems/coverage. 8219 /
9194 LOC (89.4%) covered.
31. •BundlerVersionFinder was introduced at
RubyGems 2.7
•It ability is the version detection by
RubyGems with Gemfile.lock strictly. Ex.
1.17.3 matches only 1.17.3
•We update it condition. Now, 1.17.3
matches 1.x.y, 2.0.3 also matches 2.x.y.
Update Bundler Version Finder
33. •It has non-compatible features.
• Make enable as default for conservative option:
https://github.com/rubygems/rubygems/pull/2233
• Make ruby gem install to user-install by default:
https://github.com/rubygems/rubygems/issues/1394
• Executables in bin folder conflict with their gem
versions: https://bugs.ruby-lang.org/issues/5060
• Behaviour changes with default gems installer:
https://github.com/rubygems/rubygems/pull/2166
What’s new in RubyGems4?
34. •We got the installation time when already
installed gems.
•To use conservative is ignore re-install
action.
Make conservative option as default
~ > gem i rails
clone http://rubyonrails.org -> /Users/hsbt/Documents/rubyonrails.org
git ls-remote http://rubyonrails.org
hg identify http://rubyonrails.org
svn info http://rubyonrails.org
error Could not find version control system: http://rubyonrails.org
exists /Users/hsbt/Documents/github.com/rails/rails
Successfully installed rails-5.2.0
1 gem installed
~ > gem i rails —conservative
~ >
35. •Rubygems 4 will install the all gems to
under the `~/.gem`
•Pros: Ruby in linux distribution has many of
FAQ for gem installation for using `sudo`.
This change resolve this issues.
•Cons: Ruby version manager like rbenv is
not support it. And This is big incompatible
feature.
Make `--user-install` as default
37. •The vendoring tool of Ruby.
•RubyGems couldn’t care dependency of
Ruby libraries and isolate version managing
with ruby process.
•Bundler can do them with `Gemfile`
What’s bundler?
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gemspec
# We need a newish Rake since Active Job sets its test tasks' descriptions.
gem "rake", ">= 11.1"
38.
39. •We released 1.17.x and 2.0.x at last year.
•We disabled the incompatible features like
renaming `gems.rb` from `Gemfile`
•They no longer support under the Ruby 2.2.
What’s new in Bundler 2?
41. •We are working to integrate RubyGems and
Bundler.
•I’m working it because Bundler 2 was
released.
•RubyGems 3&4 drop to support under the
Ruby 2.2. Because Bundler 1.x still
supports Ruby 1.8 and 1.9.
RubyGems/Bundler integration
42. •Bundler was located rubygems repository
as git submodule
Bundler Integration(rubygems.rb)
if USE_BUNDLER_FOR_GEMDEPS
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
require 'rubygems/user_interaction'
Gem::DefaultUserInteraction.use_ui(ui) do
require "bundler"
@gemdeps = Bundler.setup
Bundler.ui = nil
@gemdeps.requested_specs.map(&:to_spec).sort_by(&:name)
end
else
rs = Gem::RequestSet.new
@gemdeps = rs.load_gemdeps path
rs.resolve_current.map do |s|
s.full_spec.tap(&:activate)
end
end
43. •RubyGems 2.x, 3.x uses Molinillo-0.5.7
•Bundler 1.16.x also uses Molinillo-0.6.4
•These are different versions and behavior of
dependency resolver.
Dependency Resolver incompatible
~/D/g/r/rubygems (master) > ls lib/rubygems/resolver/molinillo/lib/molinillo
delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb
dependency_graph errors.rb modules resolver.rb
~/D/g/b/bundler (master) > ls lib/bundler/vendor/molinillo/lib/molinillo
compatibility.rb dependency_graph errors.rb modules resolver.rb
delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb
44. •RubyGems and Bundler stored the
duplicated certificates in your box.
Duplicates the certificates
~/D/g/r/rubygems (master) > fd . lib/rubygems/ssl_certs/
lib/rubygems/ssl_certs/index.rubygems.org
lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net
lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
lib/rubygems/ssl_certs/rubygems.org
lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
~/D/g/r/rubygems (master) > fd . bundler/lib/bundler/ssl_certs/
bundler/lib/bundler/ssl_certs/index.rubygems.org
bundler/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net
bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
bundler/lib/bundler/ssl_certs/rubygems.org
bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
45. •We will move the canonical repository of bundler
to rubygems org or rubygems/rubygems(TBD).
•I have a plan to integrate code-base and
command-line interface. Ex. `gem install`
fallback to `bundle install` with no arguments.
(TBD)
•After RubyKaigi 2019, the rubygems/bundler
team member will discuss about this merger
consideration in Fukuoka.
RubyGems/Bundler integration