Scala is a statically typed hybrid object-oriented and functional programming language that runs on the Java Virtual Machine. Some key features include:
- It has a cleaner syntax than Java with features like case classes, pattern matching, and implicit conversions.
- Code written in Scala can easily interoperate with existing Java code and libraries.
- Scala supports both object-oriented and functional paradigms with features like closures, lazy evaluation, and immutable data structures.
- It addresses some limitations of Java like lack of closures and brings new capabilities like concurrency with the Actor model.
- Mature tools are available including IntelliJ, Eclipse, and Maven integration
Learn Ruby 2011 - Session 5 - Looking for a RescueJames Thompson
In this final language-focussed session we covered the three kinds of blocks used in Ruby: blocks, Procs and lambdas. We also covered error/exception handling in Ruby and reviewed iteration mechanisms.
Learn Ruby 2011 - Session 5 - Looking for a RescueJames Thompson
In this final language-focussed session we covered the three kinds of blocks used in Ruby: blocks, Procs and lambdas. We also covered error/exception handling in Ruby and reviewed iteration mechanisms.
Slides from my talk at the Feb 2011 Seattle Tech Startups meeting. More info here (along with powerpoint slides): http://www.startupmonkeys.com/2011/02/scala-frugal-mechanic/
Real time Analytics with Apache Kafka and Apache SparkRahul Jain
A presentation cum workshop on Real time Analytics with Apache Kafka and Apache Spark. Apache Kafka is a distributed publish-subscribe messaging while other side Spark Streaming brings Spark's language-integrated API to stream processing, allows to write streaming applications very quickly and easily. It supports both Java and Scala. In this workshop we are going to explore Apache Kafka, Zookeeper and Spark with a Web click streaming example using Spark Streaming. A clickstream is the recording of the parts of the screen a computer user clicks on while web browsing.
Slides from a tutorial I gave at ETech 2006. Notes to accompany these slides can be found here: http://simonwillison.net/static/2006/js-reintroduction-notes.html
Slides from my talk at the Feb 2011 Seattle Tech Startups meeting. More info here (along with powerpoint slides): http://www.startupmonkeys.com/2011/02/scala-frugal-mechanic/
Real time Analytics with Apache Kafka and Apache SparkRahul Jain
A presentation cum workshop on Real time Analytics with Apache Kafka and Apache Spark. Apache Kafka is a distributed publish-subscribe messaging while other side Spark Streaming brings Spark's language-integrated API to stream processing, allows to write streaming applications very quickly and easily. It supports both Java and Scala. In this workshop we are going to explore Apache Kafka, Zookeeper and Spark with a Web click streaming example using Spark Streaming. A clickstream is the recording of the parts of the screen a computer user clicks on while web browsing.
Slides from a tutorial I gave at ETech 2006. Notes to accompany these slides can be found here: http://simonwillison.net/static/2006/js-reintroduction-notes.html
The workshop aims to introduce Scala > 2.10 and was held at Clueda AG .
It gives an introduction to Scala also explaining widely used language features like case classes, patten matching, futures and string interpolation.
This is the Google Tech Talk that I gave August 17th, 2007 on building a JavaScript library. I derived much of the talk from my experiences in building the jQuery and FUEL JavaScript libraries.
Cross site calls with javascript - the right way with CORSMichael Neale
Using CORS (cross origin resource sharing) you can easily and securely to cross site scripting in webapps - less servers and more integration from apis right in the browser
This was presented during Web Directions South, 2013, Sydney, Australia.
Microservices and functional programmingMichael Neale
A talk I did recently on microservices and functional programming. Microservices are small, single purpose apps that are run as a service, which are usually composed together to provide the real app.
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
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
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.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
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.
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.
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.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
1. Scala – why you
should care
SJUG @ Atlassian HQ, 2009
Michael Neale
JBoss R&D
Red Hat Middleware
1
2. Michael Neale
R&D w. JBoss (specialise in drools)
Open source history (user -> fulltime
developer “acquired” by jboss 2005).
Thanks Atlassian !
me on the web:
www.michaelneale.net, twitter.com/michaelneale,
michaelneale.blogspot.com
Some slides borrowed from Jonas Boner !
2
3. Outline
• The elevator pitch
• Why another language?
• Scala in more detail
• Actors/concurrency
• State of the tools
• How to integrate/migrate
• Q&A
3
4. Quick intro
• Scala is a OO/FP hybrid language
• Statically strongly typed
• Scala is a compiler + small (ish) rt.jar
• Compiles statically to bytecode
• Interops fawlessly with JVM/java code
(in source**, or library form in both
directions)
• FP favour (but not “pure”)
• Both more static and more OO then
java
4
6. The surface diferences...
public Integer methodName()... public void another(String s)...
def methodName : Integer = {...}
def another(s: String) = {...}
String x = “abc”; final String y = “def”;
var x = “abc”
val x = “def”
public class MyClass
class Foo
(punctuation generally optional: brackets, semi-colons etc..)
6
7. final Map<String, Integer> m = new HashMap<String, Integer>();
m.put(“hello”, 42);
m.put(“goodbye”, 42);
val m = Map(“hello” -> 42, “goodbye” -> 42)
/* Actually a smaller grammar then java ! */
7
10. Closures... fnally
Pascal has them, Even C has them...
(age: Int) => println(“I am “ + age)
val fn = (age: Int) => ....
10
11. Why another language
Java showing its age
Was built in a hurry, unable to shoe-horn
enough in... (eg. unable to agree on
Closures)
Well documented issues...
(and some don't want it to change)
But JVM is made of awesome...
11
13. But why Scala...
• Why not?
• Valid javac successor (true to the
intentions of Java, static typed, fast
etc)
• Designed by expert(s)
– Based on hard won lessons
• Not dynamic, nice for “systems”
programming
• Obey ! (and Gosling likes it)
13
14. Slightly deeper
• Scala is very deep, but you don't have
to know that much (unless you are a
library author, probably).
• Can write it as “nicer java” if you like,
but lends itself to FP
14
16. Just so you know I am not making this up...
16
17. Using java libs..
• Just works
• Arrays in java are “decorated” to be
like “Lazy sequences”
• (previous slide was JExcel API)
• Other common data types are “often
decorated” to be scala-friendly
• Outgoing library: use java collections,
Arrays etc as you would like to see
them
17
18. Lazyness...
• Hard work pays of eventually
• (but lazyness pays of now)
• Lazy can be GOOD in a language
• “lazy” keyword, lazy sequences..
– But can be some traps: put in a
print statement and it will exec,
remove and it won't... - heisenbugs
18
22. Traits...
• Like interfaces, but can have
implementations in it
• “Mix ins” - compile time or
construction time
//Interface:
trait Funny {
def laugh
}
//With impl:
trait Person {
def tickle = println(“hahaha”)
}
class Michael extends Funny...
val x = new Michael with Person
//doesn't have to implement Person !
22
e:
27. Option/Either
• “Monad” patterns
• Don't have to care, just return option if
you are not sure if you will have a
result
• (or either if its, well 1 of 2 things...)
• Very easy to use, correct code, very
neat...
27
28. State of the tools
• IntelliJ demo time...
• Eclipse – well, maybe with 2.8
• Netbeans: Good !
• Emacs/textmate ??
• Maven works well (/me ducks)
28
29. Who is using it ?
• Big Important companies all over...
• Twitter !
• EPFL, Jetbrains etc committed to
continuing development and stability
and tools !
29
30. Some extra magic
• QuickCheck (ScalaCheck)
– Demo
– import org.scalacheck.Prop.forAll
– scala> class FeeCalculator(val tax: Int) {
– | def howMuch(tx: Int) = tx + tax + 42
– |}
– val totals = forAll( (amounts: Int) => new FeeCalculator(2).howMuch(amounts) > amounts )
– totals.check
30
31. Mixed source...
• Scala compiler can work with mixed
java and scala source
• (multiple passes) – similar to groovy
• Means you can migrate over only what
you need
• Preferred: have modules in all scala or
java.
31
32. Case classes
• Case classes help you out (equals,
hashCode, pattern matching)
• No “new” needed
• Eg:
case class Car(type: String, cost: Int)
val c = Car
32
33. Anti static
• No statics in Scala
• But you can swap “class” for “object”
and its kind of sort of the same (but
better)
object MyObject { … }
val x = MyObject
MyObject.whatever
33
35. Conclusion...
• Very powerful, mature, fun !
• Would you use it over groovy?
• No “grails” or “rails” (Lift just Ain't It).
• Thanks !
• Discussion and Q&A
• twitter.com/michaelneale
• www.osdc.com.au - Brisbane in Nov.
35