Scala is a programming language developed in 2001 by Martin Odersky that runs on the JVM. It is statically typed but with concise syntax, and combines object-oriented and functional programming. Scala has a clean design, strong collection framework, and supports expression-oriented and domain-specific language features. Pattern matching is a control structure that allows switching, type inquiry, and variable decomposition in Scala.
Babar: Knowledge Recognition, Extraction and RepresentationPierre de Lacaze
Babar is a research project in the field of Artificial Intelligence. It aims to bridge together Neural AI and Symbolic AI. As such it is implemented in three different programming languages: Clojure, Python and CLOS.
The Clojure component (Clobar) implements the graphical user interface to Babar. Examples of the Clojure Hiccup library and interfacing Clojure to Javascript will be presented. The Python module (Pybar) implements the web crawling and scraping and the Neural Networks aspect of Babar. The Word Embedding and and LSTM (Long Short-Term Memory) components of Pybar will be described in detail. Finally the Common Lisp module (Lispbar) implements the Symbolic AI aspect of Babar. This latter includes an English Language Parser and Semantic Networks implemented as an in-memory Hypergraph.
We will present each of these components and target individual aspects with code examples. Specifically we will first present the web developments and Neural Networks components. Then the English Language parser will be examined in detail. We will also present the knowledge extraction aspect and bridge this with the Neural Network component.
Ultimately we will argue what can be termed "Neural AI" and "Symbolic AI" are at not at odds with each other but rather complement each other. In summary Artificial Intelligence is not a question of "brain" or "mind", but rather a question of "brain" and "mind".
Introduction to Category Theory for software engineersPranav Prakash
An Introduction to Category Theory for Software Engineers. By Dr Steve Easterbrook
Associate Professor,
Dept of Computer Science,
University of Toronto
sme@cs.toronto.edu
Explains the basic concepts of Category Theory, useful terminology to help understand the literature, and why it's so relevant to software engineering.
Here are my slides for my preparation class for possible Master students in Electrical Engineering and Computer Science (Specialization in Computer Science)... for the entrance examination here at Cinvestav GDL
Framhald af umfjöllun um hlutbundna forritun og hönnun. Nú förum við yfir Generic Programming sem sem leið til að búa til sveigjanlega og endurnýtanlegar einingar. Skoðum líka reflection. Þá verður farið fyrir hvernig má hann laustengdar einingar og notum við frægan andarleik sem dæmi.
Þá mun Code Horror Dude kíkja í heimsókn
Babar: Knowledge Recognition, Extraction and RepresentationPierre de Lacaze
Babar is a research project in the field of Artificial Intelligence. It aims to bridge together Neural AI and Symbolic AI. As such it is implemented in three different programming languages: Clojure, Python and CLOS.
The Clojure component (Clobar) implements the graphical user interface to Babar. Examples of the Clojure Hiccup library and interfacing Clojure to Javascript will be presented. The Python module (Pybar) implements the web crawling and scraping and the Neural Networks aspect of Babar. The Word Embedding and and LSTM (Long Short-Term Memory) components of Pybar will be described in detail. Finally the Common Lisp module (Lispbar) implements the Symbolic AI aspect of Babar. This latter includes an English Language Parser and Semantic Networks implemented as an in-memory Hypergraph.
We will present each of these components and target individual aspects with code examples. Specifically we will first present the web developments and Neural Networks components. Then the English Language parser will be examined in detail. We will also present the knowledge extraction aspect and bridge this with the Neural Network component.
Ultimately we will argue what can be termed "Neural AI" and "Symbolic AI" are at not at odds with each other but rather complement each other. In summary Artificial Intelligence is not a question of "brain" or "mind", but rather a question of "brain" and "mind".
Introduction to Category Theory for software engineersPranav Prakash
An Introduction to Category Theory for Software Engineers. By Dr Steve Easterbrook
Associate Professor,
Dept of Computer Science,
University of Toronto
sme@cs.toronto.edu
Explains the basic concepts of Category Theory, useful terminology to help understand the literature, and why it's so relevant to software engineering.
Here are my slides for my preparation class for possible Master students in Electrical Engineering and Computer Science (Specialization in Computer Science)... for the entrance examination here at Cinvestav GDL
Framhald af umfjöllun um hlutbundna forritun og hönnun. Nú förum við yfir Generic Programming sem sem leið til að búa til sveigjanlega og endurnýtanlegar einingar. Skoðum líka reflection. Þá verður farið fyrir hvernig má hann laustengdar einingar og notum við frægan andarleik sem dæmi.
Þá mun Code Horror Dude kíkja í heimsókn
Scala er et Java-relateret, statisk typet programmeringssprog i hastig fremmarch. Sproget kombinerer aspekter fra objekt- og funktionsorienterede sprog og fokuserer på skalerbarhed og effektivitet, både på det kodemæssige og afviklingsmæssige niveau. Syntaksen er elegant og koncis. Samtidig indeholder sproget stærke konstruktioner til understøttelse af parallelle applikationer, der udnytter fremtidens hardwarearkitekturer.
Presented online for C++ on Sea (2020-07-17)
Video at https://www.youtube.com/watch?v=Bai1DTcCHVE
Lambdas. All the cool kid languages have them. But does lambda mean what C++ and other languages, from Java to Python, mean by lambda? Where did lambdas come from? What were they originally for? What is their relationship to data abstraction?
In this session we will into the history, the syntax, the uses and abuses of lambdas and the way in which lambda constructs in C++ and other languages do (or do not) match the original construct introduced in lambda calculus.
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборотОмские ИТ-субботники
Николай Линкер, Backend-developer, ISS Art
С детства любил математику, это и определило мою профессию. Закончил матфак ОмГУ, уже 16 лет разрабатываю ПО, постоянно ищу новые решения. Довелось поработать с широким диапазоном языков и предметных областей. Детально разбирался с графическими библиотеками, компиляторами и сетевыми протоколами. В докладе расскажу, что заслуживает распространения из Haskell в традиционные языки, вроде Java, и что в Java удалось лучше, чем в Haskell.
The Scala programming language has been gaining momentum recently as an alternative (and some might say successor) to Java on the JVM. This talk will start with an introduction to basic Scala syntax and concepts, then delve into some of Scala's more interesting and unique features. At the end we'll show a brief example of how Scala is used by the Lift web framework to simplify dynamic web apps.
Some notes about programming in Scala: it covers Scala syntax and semantics, programming techniques, idioms, patterns. Many Scala features are introduced, from basic to intermediate and advanced. These are not introductory notes, but they assume a working knowledge with some other programming language (Java, C#, C++), object-oriented programming (OOP) concepts, and functional programming (FP) concepts.
Introducing BPjs to the IoT class at BGU, Winter 2018 semester.
Includes short BP intro, BPjs overview, and samples for running and verifying b-programs.
DataTags, The Tags Toolset, and Dataverse IntegrationMichael Bar-Sinai
This presentation describes the concept of DataTags, which simplifies handling of sensitive datasets. It then shows the Tags toolset, and how it is integrated with Dataverse, Harvard's popular dataset repository.
Intro to some diagram auto-generation tools. For more info and sample files, head over to http://www.mbarsinai.com/blog/2014/01/12/draw-more-work-less/.
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!
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
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.
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
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.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
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/
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
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.
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/
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
2. Based in part on Scala for the impatient, Scala for
java programmers tutorial at Typesafe.com, and Prof.
Mayer Goldberg advanced programming class in
Ben-Gurion university of the Negev, Israel
Sunday, 4 August, 13
3. In a Few Bullets
Developed in 2001, by Martin Odersky, EPFL Professor
Runs on the JVM (also, CLR)
Statically typed and with concise syntax
Object oriented and functional
Clean and elegant design
Strong collection framework
Expression-only, DSL friendly, advanced features
Sunday, 4 August, 13
4. In a Few Bullets
Developed in 2001, by Martin Odersky, EPFL Professor
Runs on the JVM (also, CLR)
Statically typed and with concise syntax
Object oriented and functional
Clean and elegant design
Strong collection framework
Expression-only, DSL friendly, advanced features
Sunday, 4 August, 13
5. In a Few Bullets
Developed in 2001, by Martin Odersky, EPFL Professor
Runs on the JVM (also, CLR)
Statically typed and with concise syntax
Object oriented and functional
Clean and elegant design
Strong collection framework
Expression-only, DSL friendly, advanced features
Sunday, 4 August, 13
8. What is a computation?
PROCEDURAL
Finite automaton working on
an infinite tape
...0 1 110101110
Sunday, 4 August, 13
9. What is a computation?
PROCEDURAL FUNCTIONAL
Finite automaton working on
an infinite tape
...0 1 110101110
Data flowing through a
program
f(x) /2 R
f(6) 2 R
Sunday, 4 August, 13
11. List Operations
Run some binary operator on the list items and an
intermediate results
fold, reduce, scan
Concurrent: aggregate,
reduce
ndlrowolleH
Sunday, 4 August, 13
12. List Operations
Run some binary operator on the list items and an
intermediate results
fold, reduce, scan
Concurrent: aggregate,
reduce
ndlrowolleH
Sunday, 4 August, 13
14. Expressions vs. Statements
STATEMENT
EXPRESSION
if ( map contains x ) {
map(x) = computeNewX(map(x))
} else {
map(x) = computeNewX( 0 )
}
map(x) = if ( map contains x )
computeNewX( map(x) )
else
computeNewX( 0 )
Sunday, 4 August, 13
15. Expressions vs. Statements
STATEMENT
EXPRESSION
if ( map contains x ) {
map(x) = computeNewX(map(x))
} else {
map(x) = computeNewX( 0 )
}
map(x) = if ( map contains x )
computeNewX( map(x) )
else
computeNewX( 0 )
ACTUAL SCALA CODE
map(x) = computeNewX( map.getOrElse(x,0) )
Sunday, 4 August, 13
16. Class Syntax
Classes have a primary constructor that is part of
the class definition
Clients can’t distinguish between getters and
direct field access
Better privacy control
Sunday, 4 August, 13
17. Classes
class Person( var name:String, val id:Int ) {
! def greet = "Hello, my name is %s".format(name)
}
class Person2( name:String, val id:Int ) {
! def greet = "Hello, my name is %s".format(name)
}
class Person3( name:String, val id:Int ) {
! val greet = "Hello, my name is %s".format(name)
}
Sunday, 4 August, 13
18. Classes (cont.)
class Person4( aName:String, anId:Int ) {
! private val id = anId
! private[this] var pName = aName
! def name = pName
! def name_=( newName:String ) { pName = newName }
! override def toString = "[Person4 id:%d name:%s]".format(id,name)
}
Sunday, 4 August, 13
19. Multiple Inheritance
Would have been nice if it worked
It doesn’t
Java allowed only multiple
inheritance of interfaces
JDK8 would update this, slightly
Scala simulates multiple inheritance
using type linearization
Would have been nice if it worked
...it mostly does
A
B1
B2
C
A
B1
B2
C
Sunday, 4 August, 13
20. Traits
Almost like class:
Can have fields, protocols and behavior
(implementations)
Can’t have constructor parameters
Can require minimal interface from
implementing classes
Class can extend as many as needed
Types are generated at declaration point
Sunday, 4 August, 13
21. Objects
and the absence of static
Replace the static parts in java
Manual declaration of a runtime singletons
Classes can have “companion objects” that have
the same name
Good place for utility methods or special “apply”
methods
App trait allows script-like behavior
Sunday, 4 August, 13
22. Pattern Matching
Control structure that allows
switching
type inquiry
variable de-composition
Specialized Classes optimized for this
Sunday, 4 August, 13
23. Simple Pattern Matching
def toFuzzyStringInt( i:Int ) = i match {
! case 0 => "Nada"
! case 1 => "One"
! case 2 => "A Pair"
! case 12 => "a dozen"
! case _ if i<0 => "Less that zero"
! case _ => "%,d".format(i)
}
Sunday, 4 August, 13
24. Switch by Type
def prettyPrint( a:Any ) = a match {
! case i:Int => "%,d".format(i)
! case s:String => "[%s]".format(s)
! case sym:Symbol => ":%s".format(sym)
! case _ => a.toString
}
Sunday, 4 August, 13
25. Decomposition
First, meet the case class:
Regular class, but with immutable declared fields,
toString, equals and hashCode automatically
defined
sealed abstract class Tree
case class Sum( l:Tree, r:Tree ) extends Tree
case class Var( n:String ) extends Tree
case class Con( v:Int ) extends Tree
Sunday, 4 August, 13
26. Decomposition
def evalTree( t:Tree, e:Map[String,Int] ): Int =
t match {
! case Sum(l,r) => evalTree(l, e) + evalTree(r,e)
! case Var( n ) => e(n)
! case Con( i ) => i
}
Allows downcasting, accessing sub-classes fields and
varying actions based on the class of the parameter, in a
single syntactical maneuver
Sunday, 4 August, 13
27. ... In the real world
(merged,original) match {
case ( Pass(_), ( _, _) ) => true
case ( Unfixable(_), ( _, _) ) => false
case ( Fixable(_,t,_), (t1,t2) ) => f.ld<ld(t1)+ld(t2)
}
Given two strings, we need to decide whether it is more likely that they are
two separate words or one broken word
Sunday, 4 August, 13
28. ... In the real world
(merged,original) match {
case ( Pass(_), ( _, _) ) => true
case ( Unfixable(_), ( _, _) ) => false
case ( Fixable(_,t,_), (t1,t2) ) => f.ld<ld(t1)+ld(t2)
}
ere are two ways of constructing a software design: One way is to make it so
simple that there are obviously no deficiencies, and the other way is to make it
so complicated that there are no obvious deficiencies. e first method is far
more difficult.
-- C. A. R. Hoare, Turing Award lecture, 1980
Given two strings, we need to decide whether it is more likely that they are
two separate words or one broken word
Sunday, 4 August, 13
29. Option[T]
And the death of the NullPointerException
Indicates possibly missing values
Has two implementations: None and Some(t)
“Collection of at most one item”
Convention more than a language feature
Sunday, 4 August, 13
30. Functions as values
Creating new functions from existing ones
Powerful tool, but can get messy
Allows for DSL creation
def bind1( f:(Int,Int)=>Int, v:Int ) =
(a:Int)=>f(a,v)
Sunday, 4 August, 13
31. Not Covered
Creation of DSLs
Implicit conversions
Continuations
Frameworks
XML
Parsers/Combinators
Macros
Annotations
Genericity
Type System
Actors
Regular Expressions
Extractors
... many more
Sunday, 4 August, 13