SlideShare a Scribd company logo
1 of 80
Download to read offline
Swift Rocks!
Anton Mironov Software Engineer at
1
Everything started with
Low Level Virtual Machine
2
Recent Objective-C
features
• Blocks (closures)
• Automatic Reference Counting
• Literals
3
Swift is a next next step
4
Genius behind all of this
PhD Chris Lattner @clattner_llvm
5
Swift is based on
• Objective-C
• Haskel
• Ruby
• Python
• C#
• and many others
6
First Lines of Code
print("Hello World!")
7
First Lines of Code
print("(name), I am your father")
8
First Lines of Code
var name = "Luke"
print("(name), I am your father")
9
First Lines of Code
var name = "Luke"
let role = "father"
print("(name), I am your (role)")
10
Operators
let a = 3
let b = 4
let sum = a + b
11
Operators
infix operator + {
associativity left
precedence 140
}
func +(lhs: Int, rhs: Int) -> Int
12
No Autocasting
let a = 3
let b = 4.5
let sum = a + b
13
No Autocasting
let a = 3
let b = 4.5
let sum = Double(a) + b
14
Auto casting can be Evil
NSEventModifierFlags modifierFlags
= NSApp.currentEvent.modifierFlags;
BOOL isControlKeyPressed
= modifierFlags & NSControlKeyMask;
if (isControlKeyPressed) {
NSLog(@"Control pressed");
} else {
NSLog(@"Control NOT pressed");
}
15
Branching
if 0 == number % 2 {
print("even")
} else {
print("odd")
}
16
Branching
let string = (0 == number % 2)
? "even"
: "odd"
17
Branching
switch numberOfApples
{
case 0:
return "none"
case 6...10:
return "just right"
case 42, -1:
return "let me see"
case let value where (1 == value % 2):
return "that's odd"
default:
return "this is unacceptable"
} 18
Collections: Array
let arrayOfInts = [5, 4, 3, 2, 1]
19
Collections: Set
let setOfInts: Set<Int> = [
5, 4, 3, 2, 1
]
20
Collections: Dictionary
let dictionaryOfNamesByDigit = [
5: "five",
4: "four",
3: "three",
2: "two",
1: "one"
]
21
Cycles: Precondition
var i = 0
while i < 5 {
print("value (i)")
i++
}
22
Cycles: Postcondition
var i = 0
repeat {
print("value (i)")
i++
} while i < 5
23
Cycles: Counter
for var i = 0; i < 5; i++ {
print("value (i)")
}
24
Cycles: Enumeration
let arrayOfInts = [5, 4, 3, 2, 1]
for value in arrayOfInts {
print("(value)")
}
25
Objective-C: Null Object
Pattern
id operation = nil;
[operation start];
26
Swift: Optionals
let operation: NSOperation? = nil
operation?.start()
27
Swift: Optionals
if nil != person {
return "Hello (person!)"
} else {
return "Hello to nobody"
}
28
Swift: Optionals
if let nonNullPerson = person {
return "Hello (nonNullPerson)"
} else {
return "Hello to nobody"
}
29
Swift is Great for
Imperative Programming
30
Functions
func name(args) -> ReturnType {
…
}
31
Functions: named
arguments
func buildMessageForPerson(
person: String,
role: String) -> String
{
return "(name), I am your (role)"
}
let message =
buildMessageForPerson("Luke",
role: "father"
)
32
Functions: default values
func buildMessageForPerson(
person: String = "Luke",
role: String) -> String
{
return "(person), I am your (role)"
}
let message = buildMessageForPerson(
role: "father"
)
33
Functions: multiple return
func divide(
a: Int, _ b: Int
) -> (result: Int, modulo: Int)
{
return (a / b, a % b)
}
let result = divide(11, 4).result
let modulo = divide(11, 4).modulo
34
Functions are First
Class Citizen
35
Functions as arguments
Simple Example
func add(a: Int, b: Int) -> Int
{ return a + b }
func mul(a: Int, b: Int) -> Int
{ return a * b }
func runMathOp(a: Int, _ b: Int,
op: (Int, Int) -> Int
) -> Int { return op(a, b) }
let value1 = runMathOp(4, 3, op: add)
let value2 = runMathOp(4, 3, op: mul)
36
Functions as arguments
Simple Example
func runMathOp(a: Int, _ b: Int,
op: (Int, Int) -> Int
) -> Int { return op(a, b) }
let value1 = runMathOp(4, 3, op: +)
let value2 = runMathOp(4, 3, op: -)
37
Swift is Functional
Language
38
Imperative Style
let names = ["Luke", "Chuwy", "Baker"]
var messages = [String]()
for name in names {
let message =
buildMessageForPerson(name, "father")
messages.append(message)
}
print("(messages)")
39
Functional Style
let names = ["Luke", "Chuwy", "Baker"]
let messages = names.map {
buildMessageForPerson($0, "father")
}
print("(messages)")
40
Closures
func buildOperation(multiplier: Int
) -> (Int -> Int) {
func multiply(value: Int) -> Int {
return value * multiplier
}
return multiply
}
let operation = buildOperation(3)
let value = operation(4)
41
Just use Functional
Paradigm
42
Type System
43
Type System Classification Criteria:
Parameters Passing and Ownership
• By Value
let a = 3
• By Sharing (by reference to shared object)
let userDefaults =
NSUserDefaults.standardUserDefaults()
• By Reference
let operation = myFunction
let c = operation(a, b)
44
Type System Classification
Criteria: OOP
• Encapsulation
• Inheritance
• Polymorphism
45
Type System Classification
Criteria: Access Control
• Public - visible for importers
• Internal (default) - visible within module
• Private - visible within file
46
Type System Classification
Criteria: Objective-C compatibility
• partial
• none
47
Types
• tuple
48
Types
• tuple
• function
49
Classes
class Transport {
} 50
Classes
class Transport {
let name: String
} 51
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
} 52
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
init(name: String) {
self.name = name
}
} 53
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
init(name: String) {
self.name = name
}
func beep() {
print("Beep!")
}
} 54
Classes
let transport = Transport(
name: "kinda boat"
)
55
Classes
let transport = Transport(
name: "kinda boat"
)
transport.beep()
56
Classes
let transport = Transport(
name: "kinda boat"
)
transport.beep()
transport.speed = 10.0
57
Classes
class Car: Transport {
var color: String = "Red"
}
58
Classes
class Car: Transport,
Paintable,
Movable
{
var color: String = "Red"
…
}
59
Classes Strong Reference
class Person {
var transport: Transport
}
60
Classes Weak Reference
class Car: Transport {
weak var passanger: Passanger?
}
61
Classes Unowned
Reference
class Node {
unowned var parentNode: Node
}
62
Structures
struct Point2D {
var x: Double
var y: Double
init(x: Double, y: Double) {
self.x = x
self.y = y
}
}
63
Structures
var point1 = Point2D(x: 1.0, y: 2.0)
var point2 = point1
point1.x = 3.0
// (point1.x != point2.x)
64
Structures
let point1 = Point2D(x: 1.0, y: 2.0)
// point1 is immutable
65
Structures
struct Point2D {
var x: Double
var y: Double
…
mutating func multiply(
mult: Double) {
self.x *= mult
self.y *= mult
}
}
66
Structures are everywhere
• Int, Bool, UInt64, Float, Double, …
• String
• Array, Set, Dictionary
• …
67
Enums
enum TokenStatus: String {
case None = "none"
case Valid = "valid"
case Invalid = "invalid"
case Expired = "expired"
var shouldRefetch: Bool {
return .Valid == self
}
}
68
Enums (Unions)
enum FileSystemError: ErrorType {
case InvalidURL(NSURL)
case InvalidPermissions
case UnknownErrorCode(Int)
}
69
Enums (Unions)
switch fileSystemError {
case .InvalidURL(let URL):
print("Invalid URL (URL)")
case .InvalidPermissions:
print("Invalid permissions")
case .UnknownErrorCode(let code)
where code == -150:
print("I've seen this error somewhere")
case .UnknownErrorCode(let code):
print("Something gone very wrong (code)")
}
70
Protocols
protocol Drawable {
var boundingRect: NSRect { get }
func draw()
}
struct Polygon: Drawable
{
var points = [NSPoint]()
//MARK: Drawable
var boundingRect: NSRect? { ... }
func draw() { ... }
} 71
Generic Functions
func min<T: Comparable>(
lhs: T, _ rhs: T
) -> T
{
return lhs < rhs ? lhs : rhs
}
72
Generic Types
struct Point<T: FloatingPointType> {
var x: T
var y: T
}
73
Extensions
extension NSDate
{
var myBirthday: NSDate { … }
}
74
Protocols + Extensions
+ Generics = ❤
75
Swift
Objective-C
76
Simple or Complex?
77
Swift on Prod
78
Just use It!
79
Thank you!
Anton Mironov Software Engineer at
amironov@macpaw.com
80

More Related Content

What's hot

Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기진성 오
 
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...John De Goes
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecLoïc Descotte
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data scienceJohn Cant
 
Collection v3
Collection v3Collection v3
Collection v3Sunil OS
 
미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정SeungChul Kang
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocamlpramode_ce
 
Scalaz 8: A Whole New Game
Scalaz 8: A Whole New GameScalaz 8: A Whole New Game
Scalaz 8: A Whole New GameJohn De Goes
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadOliver Daff
 
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵Wanbok Choi
 
One Monad to Rule Them All
One Monad to Rule Them AllOne Monad to Rule Them All
One Monad to Rule Them AllJohn De Goes
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final TaglessJohn De Goes
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayKevlin Henney
 
The java language cheat sheet
The java language cheat sheetThe java language cheat sheet
The java language cheat sheetanand_study
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlinintelliyole
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?osfameron
 
1.2 Scala Basics
1.2 Scala Basics1.2 Scala Basics
1.2 Scala Basicsretronym
 

What's hot (20)

Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
 
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar Prokopec
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
 
Collection v3
Collection v3Collection v3
Collection v3
 
미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocaml
 
Scalaz 8: A Whole New Game
Scalaz 8: A Whole New GameScalaz 8: A Whole New Game
Scalaz 8: A Whole New Game
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And Monad
 
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
 
One Monad to Rule Them All
One Monad to Rule Them AllOne Monad to Rule Them All
One Monad to Rule Them All
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final Tagless
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
 
The java language cheat sheet
The java language cheat sheetThe java language cheat sheet
The java language cheat sheet
 
MTL Versus Free
MTL Versus FreeMTL Versus Free
MTL Versus Free
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlin
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
Collection Core Concept
Collection Core ConceptCollection Core Concept
Collection Core Concept
 
1.2 Scala Basics
1.2 Scala Basics1.2 Scala Basics
1.2 Scala Basics
 
Hammurabi
HammurabiHammurabi
Hammurabi
 

Viewers also liked

Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hackraft
 
Ахмед Сулейман - How to boost mobile product development speed
Ахмед Сулейман - How to boost  mobile product  development speedАхмед Сулейман - How to boost  mobile product  development speed
Ахмед Сулейман - How to boost mobile product development speedHackraft
 
Яна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходЯна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходHackraft
 
Мария Крючок - Sexy twitter
Мария Крючок -   Sexy twitterМария Крючок -   Sexy twitter
Мария Крючок - Sexy twitterHackraft
 
Іван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsІван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsHackraft
 
Любомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeЛюбомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeHackraft
 
Олександр Краковецький - UWP
Олександр Краковецький - UWPОлександр Краковецький - UWP
Олександр Краковецький - UWPHackraft
 

Viewers also liked (7)

Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)
 
Ахмед Сулейман - How to boost mobile product development speed
Ахмед Сулейман - How to boost  mobile product  development speedАхмед Сулейман - How to boost  mobile product  development speed
Ахмед Сулейман - How to boost mobile product development speed
 
Яна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходЯна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароход
 
Мария Крючок - Sexy twitter
Мария Крючок -   Sexy twitterМария Крючок -   Sexy twitter
Мария Крючок - Sexy twitter
 
Іван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsІван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communications
 
Любомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeЛюбомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs Office
 
Олександр Краковецький - UWP
Олександр Краковецький - UWPОлександр Краковецький - UWP
Олександр Краковецький - UWP
 

Similar to Swift rocks! #1

Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...GeeksLab Odessa
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoMuhammad Abdullah
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software DevelopmentNaveenkumar Muguda
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016Codemotion
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldWerner Hofstra
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Charles Nutter
 
CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35Bilal Ahmed
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoJaehue Jang
 
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티JaeYeoul Ahn
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, SwiftYandex
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesCharles Nutter
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?Tomasz Wrobel
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional ProgrammingYuan Wang
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayUtkarsh Sengar
 
Monadologie
MonadologieMonadologie
Monadologieleague
 

Similar to Swift rocks! #1 (20)

Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demo
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software Development
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereld
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
 
CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
 
Introduction to Kotlin
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, Swift
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for Dummies
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?
 
Scala
ScalaScala
Scala
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicox
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard Way
 
Monadologie
MonadologieMonadologie
Monadologie
 

Recently uploaded

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Recently uploaded (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Swift rocks! #1