Getting started with typescript and angular 2Knoldus Inc.
The Typescript is getting popular day by day, mainly because of its use in angular 2 and its type annotation in these slides i give a brief introduction to typescript and how it works with angular2
FregeDay: Design and Implementation of the language (Ingo Wechsung)Dierk König
Talk by Ingo Wechsung at the FregeDay 2015, Sept 11th, Basel, Switzerland, covering general characteristics of the language, history, and important design decisions.
Getting started with typescript and angular 2Knoldus Inc.
The Typescript is getting popular day by day, mainly because of its use in angular 2 and its type annotation in these slides i give a brief introduction to typescript and how it works with angular2
FregeDay: Design and Implementation of the language (Ingo Wechsung)Dierk König
Talk by Ingo Wechsung at the FregeDay 2015, Sept 11th, Basel, Switzerland, covering general characteristics of the language, history, and important design decisions.
A quick introduction to the object-oriented programming language Ruby, part of a full lecture on Programming Paradigms at UCL university in Belgium, focussing on the programming languages Smalltalk, Ruby and Java, with reflection and meta programming as underlying theme.
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...Dierk König
Diskusssion of what kind of differences there are between Haskell 2010 and Frege, how difficult they are to resolve, what their impact is, and what to do about them. Also: how to allow essential differences that will never work outside the JVM and demarcate them from supposed-to-be vanilla Haskell.
[OLD VERSION, SEE DESCRIPTION FOR NEWER VERSION LINK] Hot C++: Rvalue Referen...Andrey Upadyshev
Newer version: https://www.slideshare.net/oliora/hot-c-rvalue-references-and-move-semantics-155638600
Detailed presentation of rvalue references and move semantics introduced in C++11.
Extended version of "Hot C++11, Part 1: Rvalue References And Move Semantics".
An overview of the fundamental features of JavaScript, highlighting the unexpected and obscure features that make it behave different than other languages in the C family.
TypeScript - Silver Bullet for the Full-stack DevelopersRutenis Turcinas
TypeScript lets you write JavaScript the way you really want to Its a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. Enjoy writing JavaScript.
Typescript: enjoying large scale browser developmentJoost de Vries
Programming with types has traditionally been something done on the server side.
For browser developers I show in my presentation how the type support in Typescript makes your life easier as your codebase increases.
For server side developers I explain what some of the challenges are when it comes to programming with types in the browser. And how Typescript adresses them.
Finally I show some of the cool useful features in Typescript 2.0 that go beyond what most server side languages offer right now.
It turns out that with enough code browser development and server side development have a lot in common.
Slides of a talk given at Join 2016, October 5th, Mechelen Belgium
A quick introduction to the object-oriented programming language Ruby, part of a full lecture on Programming Paradigms at UCL university in Belgium, focussing on the programming languages Smalltalk, Ruby and Java, with reflection and meta programming as underlying theme.
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...Dierk König
Diskusssion of what kind of differences there are between Haskell 2010 and Frege, how difficult they are to resolve, what their impact is, and what to do about them. Also: how to allow essential differences that will never work outside the JVM and demarcate them from supposed-to-be vanilla Haskell.
[OLD VERSION, SEE DESCRIPTION FOR NEWER VERSION LINK] Hot C++: Rvalue Referen...Andrey Upadyshev
Newer version: https://www.slideshare.net/oliora/hot-c-rvalue-references-and-move-semantics-155638600
Detailed presentation of rvalue references and move semantics introduced in C++11.
Extended version of "Hot C++11, Part 1: Rvalue References And Move Semantics".
An overview of the fundamental features of JavaScript, highlighting the unexpected and obscure features that make it behave different than other languages in the C family.
TypeScript - Silver Bullet for the Full-stack DevelopersRutenis Turcinas
TypeScript lets you write JavaScript the way you really want to Its a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. Enjoy writing JavaScript.
Typescript: enjoying large scale browser developmentJoost de Vries
Programming with types has traditionally been something done on the server side.
For browser developers I show in my presentation how the type support in Typescript makes your life easier as your codebase increases.
For server side developers I explain what some of the challenges are when it comes to programming with types in the browser. And how Typescript adresses them.
Finally I show some of the cool useful features in Typescript 2.0 that go beyond what most server side languages offer right now.
It turns out that with enough code browser development and server side development have a lot in common.
Slides of a talk given at Join 2016, October 5th, Mechelen Belgium
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
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.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
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:
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.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
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.
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/
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
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.
2. Goals of Ruby 3’s Static Analysis
•Make Ruby programming easier
• Bug detection before execution
• Completion and document in IDE
… with no type annotation in code!
(Ruby 3 Type Challenge)
2
42 + "str"
Is this a bug?
42.ti|
Do you mean:
42.times {|i|
|
}
3. Ruby 3 will provide three “type” items
3
# app.rbs
def inc:
(Integer) -> Integer
① Type Signature
Format (RBS)
# app.rb
def inc(n)
n+1
end
Ruby code
② Type Inference
(ruby-type-profiler)
③ Type Check
(Steep, Sorbet, RDL, …)
4. Ruby 3 Development Experience
4
gem
lib.rb
lib.rbs
app
app.rb
app.rbs
42.ti|
42 + "str"
Is this a bug?
Do you mean:
42.times {|i|
|
}
② Type
Inference
• Generate an RBS prototype
• Simply check the code
③ Type
Checker
• Verify .rb and .rbs
• Serve as LSP server
You can also write RBS
manually if you want
Type-guided
linter
Dynamic
type checker
More dedicated
dev. environments
Monitor and Harness
Ruby code in run-time
Code formatter by
leveraging types
Rubymine, Tabnine, and
other development tools
may use type informationhttps://github.com/pocke/rubocop-typedhttps://github.com/ruby/rbs/blob/master/
lib/rbs/test/type_check.rb
RBS may inspire other dreams
Today
we talk about
①RBS
6. What is Type Profiler
Abstract ("type-level") interpreter of Ruby
Generates an RBS prototype by gathering
what types a method accepts and returns
6
def foo(n)
n.to_s
end
foo(42)
Integer
(not 42)
String
(not "42")
def foo:
(Integer) -> String
7. Why is the name "Type Profiler"?
•Just for a historical reason
• The initial version was runtime analysis (profiling)
• Now it is a bit confusing with a normal profiler
•Invite suggestions for the name
• Should it start with "S"? (Steep, Sorbet, …)
7
8. Difference from traditional type system
•Traditional type systems use
intra-procedural (per-method) analysis
• Can't handle unannotated method parameter well
• … especially when there are
many classes that respond to foo
8
def f(x)
x.foo
end
What type is "x"?
class Foo
def foo; ...; end
end
class Bar
def foo; ...; end
end
class Baz
def foo; ...; end
end
...
9. Difference from traditional type system
•Solutions
1. Write type annotation → Avoid this
2. Infer type based on its usage
→ Too strict or too conservative
• foo must be unique
• or, structural type inference?
3. Use "inter-procedural" analysis
• Pros: More powerful analysis
• Cons: Slow and hard to control
(Challenging)
9
def f(x: Foo)
x.foo
end
def f(x)
x.foo
end
f(Foo.new)
"x" is
a Foo!
def f(x)
x.foo
end
"x" is an object that
responds to foo that
accepts no argument and
returns the same type of
a return value of this method
10. There are many, many topics (but omit)
Theoretical issues
• Recursion and closures[RubyKaigi 2019]
• Type-changing variable assignment
• Container types and destructive
operations[Osaka Ruby Kaigi 2019]
• Flow-sensitive analysis[EuRuKo 2019]
• Context-insensitive analysis[PPL 2019]
• Aid of escape analysis
• Cumbersome "untyped" type
• Meta-programming features
• etc, etc.
Practical issues
• Trade-off between precision and
performance [Nagoya Ruby Kaigi 2019]
• Tuple-like and sequential array
• Method-local container type
[Osaka Ruby Kaigi 2019]
• Diagnosis features[Ruby 3 Summit]
• Unreachable method analysis
• Limitation of byte code
• Super-rich Ruby features
• Too complex Ruby features
• etc, etc.
10
11. Agenda
•Type Profiler: Type Inference for Ruby 3
➔Demo
• Simple case
• Real-world program case
• Library case
•How to use
•Future Plan
11
12. Demo 1: ao.rb
•Simple case
• A 3D renderer (~300 LoC)
• Written by Hideki Miura
• Original version was
written by Syoyo Fujita
https://code.google.com/archive/p/aobench/
•Analysis time < 1 sec.
12
14. Demo 1: ao.rb
14
class Sphere
attr_reader center : Vec
attr_reader radius : Float
def initialize : (Vec, Float) -> Float
def intersect : (Ray, Isect) -> Vec?
end
class Isect
attr_accessor t : Float
attr_accessor hit : bool
attr_accessor pl : Vec
attr_accessor n : Vec
def initialize : -> Vec
end
NEW! optional type
Formerly, "Vec | NilClass"
NEW! bool type
Formerly,
"TrueClass | FalseClass"
15. Demo 2: Goodcheck
• Real-world program case
• A customizable linter for Ruby (~2000 LoC)
• It has "hand-written" RBS
• Analysis time < 30 sec.
• Note: It requires many libraries which have no RBS
• activesupport, concurrent-ruby, cgi, optparse, etc.
• Type Profiler analyzed not only Goodcheck but also them
• In future, we expect they have own RBS
• Type Profiler can use RBS instead of the code itself
15
16. Manually reformatted to make comparison easy
Demo 2: Goodcheck
16
class Goodcheck::Trigger
attr_reader patterns :
Array[(Goodcheck::Pattern::Literal |
Goodcheck::Pattern::Regexp |
Goodcheck::Pattern::Token)?]
attr_reader globs : Array[Goodcheck::Glob?]
attr_reader passes : Array[Array[untyped]]
attr_reader fails : Array[Array[untyped]]
attr_reader negated : bool
...
end
class Goodcheck::Trigger
attr_reader patterns :
Array[pattern]
attr_reader globs: Array[Glob]
attr_reader passes: Array[String]
attr_reader fails: Array[String]
attr_reader negated: bool
...
end
type Goodcheck::pattern
= Pattern::Literal|Pattern::Regexp|Pattern::Token
RBS inferred by Type Profiler Hand-written by Soutaro
Wrong guess
Type alias
Not so bad?
Extra optionalRedundant namescope
17. Demo 2: Goodcheck
17
class Goodcheck::Pattern::Token
attr_reader source : untyped
attr_reader case_sensitive : true
attr_reader variables : {}
def initialize : (source: untyped,
variables: {},
case_sensitive: true) -> true
@regexp : Regexp
def regexp : -> Regexp
def test_variables : (untyped) -> bool
def self.expand :
(untyped, untyped, ?depth: Integer) -> Array[Regexp]
def self.regexp_for_type :
(name: untyped, type: :__, scanner: untyped) -> Regexp?
def self.compile_tokens :
(untyped,
{},
case_sensitive: true) -> Regexp
@@TYPES : {}
end
class Goodcheck::Pattern::Token
attr_reader source: String
attr_reader case_sensitive: bool
attr_reader variables: Hash[Symbol, VarPattern]
def initialize: (source: String,
variables: Hash[Symbol, VarPattern],
case_sensitive: bool) -> void
def regexp: -> ::Regexp
def self.expand:
(String, String, ?depth: Integer) -> Array[::Regexp]
def self.regexp_for_type:
(name: Symbol, type: Symbol, scanner: StringScanner) -> ::Regexp
def self.compile_tokens:
(String source,
Hash[Symbol, VarPattern] variables,
case_sensitive: bool) -> void
@@TYPES: Hash[Symbol, ^(String) -> ::Regexp]
end
RBS inferred by Type Profiler Hand-written by Soutaro
Too specfic
Failed to track
the elements
C lib constant
(Lack of RBS)
void is intended
I think
not so bad
18. Demo 3: diff-lcs
•Real-world library case
Famous algorithmic library
•Hand-written entry point
•Analysis time < 1 sec.
18
https://bestgems.org/
require_relative "lib/diff/lcs"
class T; end
Diff::LCS.diff([T.new]+[T.new], [T.new]+[T.new]) {}
20. Agenda
•Type Profiler: Type Inference for Ruby 3
•Demo
➔ How to use Type Profiler
• Planned experience
• Specific usage
•Future plan
20
21. Typical usage and experience (Plan)
1. Write an entry point program
(if needed)
2. Apply Type Profiler
3. Partially write RBS for
wrong-guessed methods
4. Re-apply Type Profiler
21
lib.rb
app.rb
Type
Profiler
lib.rbs
(may include
wrong guesses)
partial RBS
for difficult methods
lib.rbs
(final)
①
②
③
④
"Partial RBS specification" has been implemented
22. How to use TP specifically
Will be written until the RubyKaigi Takeout!
(hopefully)
https://github.com/mame/ruby-type-profiler
22
I have written the document
23. Agenda
•Type Profiler: Type Inference for Ruby 3
•Demo
•How to use Type Profiler
➔Future plan
• Recent updates
• Future plan
• Conclusion
23
24. Recent updates
• Improve cosmetics (attr_*, optional, bool, …)
• Import Array and Hash methods from RBS
• Type variable
• Support Enumerable, Enumerator, and Struct
• Support global variables
• Improve flow-sensitive analysis
• Improve analysis performance
• Fix many, many bugs
24
25. Future plan
• Until Ruby 3: Make it possible for plain Ruby code
• Support partial RBS specification
• Write document and release a gem
• Continue to experiment, improve, etc, etc.
• After the release: Support Sinatra app, Rails app…
• Maybe need dedicated hard-coding for the frameworks
• Concern is almost a language extension
• ActiveRecord is super-meta feature
• Please go easy on 🙏
25