SlideShare a Scribd company logo
A Modest
Introduction
To Swift
pdx.pm

10 Mar 2016
John SJ Anderson

@genehack
Sorry!
Swift?
Introduced in 2014
Went Open Source 

at version 2.2
Originally MacOS only
Now on Linux too.
Android in the works!
(Windows coming soon too)
Originally targeted
MacOS, iOS, 

watchOS, and tvOS
With expanded platform
support, offers obvious
"single-language stack"
advantages a la Node
So what's it like, man?
First, a brief digression…
How many MacOS / iOS
users do we have here?
How many MacOS / iOS
developers do we have?
The dirty little secret of
developing for Apple
From In The Beginning
Was The Command Line
by Neal Stephenson
Weird Pascal-based
naming and calling
conventions
HANDLES?!?
ObjectiveC's "syntax"
Swift is the Mac of Apple
programming languages
Swift Syntax
Comments
//	this	is	a	comment
Comments
/*	this	is	a		
multi-line		
comment	*/
Comments
/*	this	is	a		
_nested_		
multi-line	comment,	*/	
which	is	cool!	*/
Variables
var	foo	=	1	
var	bar:	Int	
var	baz	=	"whee!"
Variables
let	bar	=	1	
bar	+=	1	//	compile	time	error!
Variables
let	bar	//	also	a	compile	time	error	
/*		
You	canNOT	have	an	uninitialized	and	
untyped	variable.	You	also	can't	use	
an	initialized	variable	_at	all_		
*/
How friggin' awesome is that?
Operators
Flow Control
let	n	=	1	
if	n	>	1	{	
				print("we	got	a	big	N	here")	
}
Flow Control
let	arr	=	[	1,	2,	3,	4]	
var	sum	=	0	
for	elem	in	arr	{	
				sum	+=	elem	
}	
//	sum	now	is	10
Flow Control
for	index	in	1	...	10	{	
				#	do	something	10	times	
}
Flow Control
for	index	in	1	..<	10	{	
				#	do	something	9	times	
}
Flow Control
var	countDown	=	5	
while	countDown	>	0	{	
				countDown--	
}
Flow Control
var	countUp	=	0	
repeat	{	
				countUp++	
}	while	countUp	<	5
Flow Control
let	sample	=	2	
switch	sample	{	
case	0:		
				print("Is	0")	
case	2:		
				print("Is	2")	
default:	//	mandatory	when	cases	not	exclusive	
				print("Not	0	or	2,	is	it.")	
}
Flow Control
let	sample	=	"foo"	
switch	sample	{	
case	"foo":		
				print("Is	foo")	
case	"bar":		
				print("Is	bar")	
default:	//	mandatory	when	cases	not	exclusive	
				print("Not	foo	or	bar,	is	it.")	
}
Flow Control
let	sample	=	("foo",	2)	
switch	sample	{	
case	("foo",	2):		
				print("Is	foo,	2")	
case	("bar",	_):		
				print("Is	bar")	
default:	//	mandatory	when	cases	not	exclusive	
				print("	¯_( )_/¯	")	
}
Flow Control
let	sample	=	("foo",	2)	
switch	sample	{	
case	("foo",	"bar"):		
				print("Is	foo,	bar")	
case	(let	one,	let	two):		
				print("Is	(one)	and	(two)")	
default:	//	mandatory	when	cases	not	exclusive	
				print("	¯_( )_/¯	")	
}
Strings
var	myString	=	"this	is	a	string"	
if	myString.isEmpty	{		
				//	do	something	
}	
myString	+=	"and	this	is	a	longer	string"
Swift is very strongly typed.
Typing
var	foo	=	1		//	foo	is	an	Int	
var	bar:	Int	//	bar	is	an	uninit'd	Int		
var	baz	=	Int()	
if	baz	is	Int	{		
				print("Nice	Int	you	got	there")	
}
Casts
var	foo	=	1	//	foo	is	an	Int	
var	bar	=	String(foo)	//	"1"	
var	maybeBaz	=	stringishThing	as?	String	
//	maybeBaz	is	an	optionally	typed	String	
var	forceBaz	=	stringishThing	as!	String
Optional Types
//	When	a	variable	may	not	have	a	value	
var	bar:	Int?	
//	test	
if	bar	!=	nil	{		
				//	has	a	value	
}
Optional Types
//	unwrap	the	value	to	use	
if	bar	!=	nil	{		
		bar!	+=	2	
}	
//	unwrapping	nil	-->	runtime	exception!
if-let
var	bar:	Int?	
if	let	foo	=	bar	{	
				//	bar	had	a	value	&	foo	now	does	too	
}	
else	{		
				//	bar	was	nil	
}
if-var
var	bar:	Int?	
if	var	foo	=	bar	{	
				//	bar	had	a	value	&	foo	now	does	too	
				//	foo	is	mutable	
				foo++	
}	
else	{		
				//	bar	was	nil	
}
Tuples
let	tuple	=	("foo",	42)	
let	first	=	tuple.0	//	"foo"	
let	labeledTuple	=	(one:	"foo",	two:	42)	
let	second	=	labeledTuple.two	//	42
Arrays
let	nums	=	[1,	2,	3]	
var	strs	:	[String]	
//	_can_	mix	&	match	
let	mixed	=	[1,	"foo"]	
//	but	you	probably	shouldn't
Dictionary
let	orCityCounties	=	[	
		"Salem":	"Marion",	
		"West	Salem":	"Polk",	
]	
//	orCityCounties	has	type		
//	[String:String]
Dictionary
//	again	can	mix	&	match	
let	orCityCounties	=	[	
		"Salem":	"Marion",	
		"West	Salem":	2,	
]	
//	orCityCounties	has	type		
//	[String:NSObject]
Enumerations
enum	SalemMeetups	{	
		case	HackSalem	
		case	PortlandPerlMongers	
}	
var	thisMeetup	=	SalemMeetups.HackSalem	
//	thisMeetup	is	type	SalemMeetups
Sets
var	petSet	:Set	=	[	"cat",	"dog",		
																				"fish",	"dog"]	
petSet.count	//	returns	3
Functions
func	obExample	()	{	
		print("Hello,	Salem!")	
}
Functions
func	obExample	(who	:String)	{	
		print("Hello,	(who)!")	
}
Functions
func	obExample	(who	:String)	->	String	{	
		return	"Hello,	(who)!"	
}
Functions
func	obExample	(who	:String	=	"Salem")		
				->	String	{	
		return	"Hello,	(who)!"	
}	
obExample("Oregon")	//	"Hello,	Oregon!"	
obExample()									//	"Hello,	Salem!"
Functions
func	obExample	(what	:String	=	"Hello",		
																who	:String	=	"Salem")		
				->	String	{	
		return	"(what),	(who)!"	
}	
obExample()																				//	"Hello,	Salem!"	
obExample("bye")															//	"bye,	Salem!"	
obExample("bye",who:"felicia")	//	"bye,	felicia"	
obExample("bye",	"salem")						//	COMPILE	ERROR
Functions
func	obExample	(what	:String	=	"Hello",		
																_	who	:String	=	"Salem")		
				->	String	{	
		return	"(what),	(who)!"	
}	
obExample("bye")															//	"bye,	Salem!"	
obExample("bye",who:"felicia")	//	COMPILE	ERROR	
obExample("bye",	"salem")						//	"bye,	salem!"
Functions
func	variadiacExample	(nums:	Int...)		{	
				//	do	something	with	nums	
}
Functions are first-class citizens
Closures
let	numbers	=	[2,1,56,32,120,13]		
var	sorted	=	numbers.sort({		
		(n1:	Int,	n2:	Int)	->	Bool	in	return	n2	>	n1		
})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
var	sorted	=	numbers.sort({		
		(n1:	Int,	n2:	Int)	->	Bool	in	return	n2	>	n1		
})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
var	sorted	=	numbers.sort({		
		(n1:	Int,	n2:	Int)	->	Bool	in	return	n2	>	n1		
})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
var	sorted	=	numbers.sort({		
		(n1:	Int,	n2:	Int)	->	Bool	in	return	n2	>	n1		
})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
//	inferred	param	&	return	types	
var	sorted	=	numbers.sort({n1,	n2	in	return	n2	>	n1})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
//	positionally	named	parameters	
var	sorted	=	numbers.sort({return	$0	>	$1})		
//	sorted	=	[1,	2,	13,	32,	56,	120]
Closures
let	numbers	=	[2,1,56,32,120,13]		
//	when	closure	is	last	param,	parens	optional	
var	sorted	=	numbers.sort	{	$0	>	$1	}	
//	sorted	=	[1,	2,	13,	32,	56,	120]
OOP is
also
well
supported
I'm just
well out
of time…
Workspaces
https://developer.apple.com/swift
THANKS!

More Related Content

What's hot

Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
Kiwamu Okabe
 
Resources For Floss Projects
Resources For Floss ProjectsResources For Floss Projects
Resources For Floss Projects
Jon Spriggs
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
John Anderson
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
Tony Ingraldi
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
Kiwamu Okabe
 
Meet the Eclipse SmartHome powered Mars Rover
Meet the Eclipse SmartHome powered Mars RoverMeet the Eclipse SmartHome powered Mars Rover
Meet the Eclipse SmartHome powered Mars Rover
Michael Vorburger
 
Type Annotations in Python: Whats, Whys and Wows!
Type Annotations in Python: Whats, Whys and Wows!Type Annotations in Python: Whats, Whys and Wows!
Type Annotations in Python: Whats, Whys and Wows!
Andreas Dewes
 

What's hot (7)

Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Resources For Floss Projects
Resources For Floss ProjectsResources For Floss Projects
Resources For Floss Projects
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 
Meet the Eclipse SmartHome powered Mars Rover
Meet the Eclipse SmartHome powered Mars RoverMeet the Eclipse SmartHome powered Mars Rover
Meet the Eclipse SmartHome powered Mars Rover
 
Type Annotations in Python: Whats, Whys and Wows!
Type Annotations in Python: Whats, Whys and Wows!Type Annotations in Python: Whats, Whys and Wows!
Type Annotations in Python: Whats, Whys and Wows!
 

Viewers also liked

Bruiser e brilliance
Bruiser e brillianceBruiser e brilliance
Bruiser e brilliance
Abs Pecplan
 
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
Holly Hamann
 
Gemini French
Gemini FrenchGemini French
Gemini French
gemini2012
 
The Great Pairs Series #1
The Great Pairs Series #1The Great Pairs Series #1
The Great Pairs Series #1
Dr. Chris Stout
 
Traffic Act
Traffic ActTraffic Act
Traffic Act
mpashonews
 
01 hanlin english book 1 lesson 7 dialogue & present continous tense
01 hanlin english book 1 lesson 7 dialogue & present continous tense01 hanlin english book 1 lesson 7 dialogue & present continous tense
01 hanlin english book 1 lesson 7 dialogue & present continous tense
Fortuna Lu
 
Theatre World Coverage Oct Dec Issue Big Cinemas, Rcity
Theatre World Coverage   Oct   Dec Issue   Big Cinemas, RcityTheatre World Coverage   Oct   Dec Issue   Big Cinemas, Rcity
Theatre World Coverage Oct Dec Issue Big Cinemas, Rcity
archana jhangiani
 
Studying the Link Between Volume of Media Coverage and Business Outcomes. 
Studying the Link Between Volume of Media Coverage and Business Outcomes.  Studying the Link Between Volume of Media Coverage and Business Outcomes. 
Studying the Link Between Volume of Media Coverage and Business Outcomes. 
Udit Joshi
 
DHKS PRESETATION
DHKS PRESETATIONDHKS PRESETATION
Business Administration Studies at Brooklyn College
Business Administration Studies at Brooklyn College Business Administration Studies at Brooklyn College
Business Administration Studies at Brooklyn College
Craig Raucher New York
 
Game of job search.pdf
Game of job search.pdfGame of job search.pdf
Game of job search.pdf
yconic
 
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
Josh Curtis
 
Justyna Zubrycka presents Vai Kai
Justyna Zubrycka presents Vai Kai Justyna Zubrycka presents Vai Kai
Justyna Zubrycka presents Vai Kai
ThingsConAMS
 
Insights into Youth Marketing
Insights into Youth Marketing Insights into Youth Marketing
Insights into Youth Marketing
Manu Seth
 
Naveen Rama
Naveen RamaNaveen Rama
Naveen Rama
Naveen Rama
 
デザインキット・PV Li-Ion Battery Systemの解説書
デザインキット・PV Li-Ion Battery Systemの解説書 デザインキット・PV Li-Ion Battery Systemの解説書
デザインキット・PV Li-Ion Battery Systemの解説書
Tsuyoshi Horigome
 
Marketing is Dead - TrackMaven Digital Conference
Marketing is Dead - TrackMaven Digital ConferenceMarketing is Dead - TrackMaven Digital Conference
Marketing is Dead - TrackMaven Digital Conference
Kyle Lacy
 

Viewers also liked (17)

Bruiser e brilliance
Bruiser e brillianceBruiser e brilliance
Bruiser e brilliance
 
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
10 Key Strategies for Incorporating Influencer Marketing in Your Content Mark...
 
Gemini French
Gemini FrenchGemini French
Gemini French
 
The Great Pairs Series #1
The Great Pairs Series #1The Great Pairs Series #1
The Great Pairs Series #1
 
Traffic Act
Traffic ActTraffic Act
Traffic Act
 
01 hanlin english book 1 lesson 7 dialogue & present continous tense
01 hanlin english book 1 lesson 7 dialogue & present continous tense01 hanlin english book 1 lesson 7 dialogue & present continous tense
01 hanlin english book 1 lesson 7 dialogue & present continous tense
 
Theatre World Coverage Oct Dec Issue Big Cinemas, Rcity
Theatre World Coverage   Oct   Dec Issue   Big Cinemas, RcityTheatre World Coverage   Oct   Dec Issue   Big Cinemas, Rcity
Theatre World Coverage Oct Dec Issue Big Cinemas, Rcity
 
Studying the Link Between Volume of Media Coverage and Business Outcomes. 
Studying the Link Between Volume of Media Coverage and Business Outcomes.  Studying the Link Between Volume of Media Coverage and Business Outcomes. 
Studying the Link Between Volume of Media Coverage and Business Outcomes. 
 
DHKS PRESETATION
DHKS PRESETATIONDHKS PRESETATION
DHKS PRESETATION
 
Business Administration Studies at Brooklyn College
Business Administration Studies at Brooklyn College Business Administration Studies at Brooklyn College
Business Administration Studies at Brooklyn College
 
Game of job search.pdf
Game of job search.pdfGame of job search.pdf
Game of job search.pdf
 
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
DASH - Josh Curtis - Dominating Influencer Marketing for Mobile Games - Chart...
 
Justyna Zubrycka presents Vai Kai
Justyna Zubrycka presents Vai Kai Justyna Zubrycka presents Vai Kai
Justyna Zubrycka presents Vai Kai
 
Insights into Youth Marketing
Insights into Youth Marketing Insights into Youth Marketing
Insights into Youth Marketing
 
Naveen Rama
Naveen RamaNaveen Rama
Naveen Rama
 
デザインキット・PV Li-Ion Battery Systemの解説書
デザインキット・PV Li-Ion Battery Systemの解説書 デザインキット・PV Li-Ion Battery Systemの解説書
デザインキット・PV Li-Ion Battery Systemの解説書
 
Marketing is Dead - TrackMaven Digital Conference
Marketing is Dead - TrackMaven Digital ConferenceMarketing is Dead - TrackMaven Digital Conference
Marketing is Dead - TrackMaven Digital Conference
 

Similar to A Modest Introduction to Swift

Evolution of Programming language
Evolution of Programming languageEvolution of Programming language
Evolution of Programming language
Sakar Aryal
 
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Aniruddha Chakrabarti
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizons
EatDog
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Andreano Lanusse
 
Pandoc: a universal document converter
Pandoc: a universal document converterPandoc: a universal document converter
Pandoc: a universal document converter
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
in the text of a program in a particular language is better to use c.pdf
in the text of a program in a particular language is better to use c.pdfin the text of a program in a particular language is better to use c.pdf
in the text of a program in a particular language is better to use c.pdf
jacquelynjessicap166
 
Encoding Nightmares (and how to avoid them)
Encoding Nightmares (and how to avoid them)Encoding Nightmares (and how to avoid them)
Encoding Nightmares (and how to avoid them)
Kenneth Farrall
 
Java
JavaJava
Introduction to Free and Open Source Software (FOSS)
Introduction to Free and Open Source Software (FOSS)Introduction to Free and Open Source Software (FOSS)
Introduction to Free and Open Source Software (FOSS)
Dong Calmada
 
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
Srijan Technologies
 
ActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages CompanyActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages Company
ActiveState
 
Lib uv node.js
Lib uv node.js Lib uv node.js
Lib uv node.js
Ben Crox
 
SELJE - Look at X Sharp.pdf
SELJE - Look at X Sharp.pdfSELJE - Look at X Sharp.pdf
SELJE - Look at X Sharp.pdf
Eric Selje
 
Text to speech converter in C#.NET
Text to speech converter in C#.NETText to speech converter in C#.NET
Text to speech converter in C#.NET
Mandeep Cheema
 
A short story_of_osx_i_os
A short story_of_osx_i_osA short story_of_osx_i_os
A short story_of_osx_i_os
Abdimuna Muna
 
FLOSS Manuals
FLOSS ManualsFLOSS Manuals
FLOSS Manuals
guest9c54ef0
 
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
InfluxData
 
Openesb past present_future
Openesb past present_futureOpenesb past present_future
Openesb past present_future
Prabhu Pathak
 
Once CODE to rule them all
Once CODE to rule them allOnce CODE to rule them all
Once CODE to rule them all
Herman Lintvelt
 
Rawnet Lightning Talk - Swift iOS Development
Rawnet Lightning Talk -  Swift iOS DevelopmentRawnet Lightning Talk -  Swift iOS Development
Rawnet Lightning Talk - Swift iOS Development
Rawnet
 

Similar to A Modest Introduction to Swift (20)

Evolution of Programming language
Evolution of Programming languageEvolution of Programming language
Evolution of Programming language
 
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizons
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
 
Pandoc: a universal document converter
Pandoc: a universal document converterPandoc: a universal document converter
Pandoc: a universal document converter
 
in the text of a program in a particular language is better to use c.pdf
in the text of a program in a particular language is better to use c.pdfin the text of a program in a particular language is better to use c.pdf
in the text of a program in a particular language is better to use c.pdf
 
Encoding Nightmares (and how to avoid them)
Encoding Nightmares (and how to avoid them)Encoding Nightmares (and how to avoid them)
Encoding Nightmares (and how to avoid them)
 
Java
JavaJava
Java
 
Introduction to Free and Open Source Software (FOSS)
Introduction to Free and Open Source Software (FOSS)Introduction to Free and Open Source Software (FOSS)
Introduction to Free and Open Source Software (FOSS)
 
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
[Srijan Wednesday Webinars] Building Full-Fledged Native Apps Using RubyMotion
 
ActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages CompanyActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages Company
 
Lib uv node.js
Lib uv node.js Lib uv node.js
Lib uv node.js
 
SELJE - Look at X Sharp.pdf
SELJE - Look at X Sharp.pdfSELJE - Look at X Sharp.pdf
SELJE - Look at X Sharp.pdf
 
Text to speech converter in C#.NET
Text to speech converter in C#.NETText to speech converter in C#.NET
Text to speech converter in C#.NET
 
A short story_of_osx_i_os
A short story_of_osx_i_osA short story_of_osx_i_os
A short story_of_osx_i_os
 
FLOSS Manuals
FLOSS ManualsFLOSS Manuals
FLOSS Manuals
 
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
Brandon Farmer [InfluxData] | Tools for Working with Flux Now and in the Futu...
 
Openesb past present_future
Openesb past present_futureOpenesb past present_future
Openesb past present_future
 
Once CODE to rule them all
Once CODE to rule them allOnce CODE to rule them all
Once CODE to rule them all
 
Rawnet Lightning Talk - Swift iOS Development
Rawnet Lightning Talk -  Swift iOS DevelopmentRawnet Lightning Talk -  Swift iOS Development
Rawnet Lightning Talk - Swift iOS Development
 

More from John Anderson

#speakerlife
#speakerlife#speakerlife
#speakerlife
John Anderson
 
Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)
John Anderson
 
Logs are-magic-devfestweekend2018
Logs are-magic-devfestweekend2018Logs are-magic-devfestweekend2018
Logs are-magic-devfestweekend2018
John Anderson
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
John Anderson
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
John Anderson
 
Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?
John Anderson
 
An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)
John Anderson
 
You got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & LinuxYou got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & Linux
John Anderson
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
John Anderson
 
Old Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This CenturyOld Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This Century
John Anderson
 
Introduction to Git (even for non-developers!)
Introduction to Git (even for non-developers!)Introduction to Git (even for non-developers!)
Introduction to Git (even for non-developers!)
John Anderson
 
Introduction to Git for Non-Developers
Introduction to Git for Non-DevelopersIntroduction to Git for Non-Developers
Introduction to Git for Non-Developers
John Anderson
 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To Swift
John Anderson
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
John Anderson
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
John Anderson
 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
John Anderson
 
Old Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This CenturyOld Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This Century
John Anderson
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
John Anderson
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
John Anderson
 
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
John Anderson
 

More from John Anderson (20)

#speakerlife
#speakerlife#speakerlife
#speakerlife
 
Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)
 
Logs are-magic-devfestweekend2018
Logs are-magic-devfestweekend2018Logs are-magic-devfestweekend2018
Logs are-magic-devfestweekend2018
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
 
Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?
 
An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)
 
You got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & LinuxYou got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & Linux
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
 
Old Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This CenturyOld Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This Century
 
Introduction to Git (even for non-developers!)
Introduction to Git (even for non-developers!)Introduction to Git (even for non-developers!)
Introduction to Git (even for non-developers!)
 
Introduction to Git for Non-Developers
Introduction to Git for Non-DevelopersIntroduction to Git for Non-Developers
Introduction to Git for Non-Developers
 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To Swift
 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
 
Old Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This CenturyOld Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This Century
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
 
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To YouLogs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
 
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
 

Recently uploaded

cyber crime.pptx..........................
cyber crime.pptx..........................cyber crime.pptx..........................
cyber crime.pptx..........................
GNAMBIKARAO
 
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
APNIC
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
How to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdfHow to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdf
Infosec train
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
APNIC
 
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
dtagbe
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
thezot
 
KubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial IntelligentKubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial Intelligent
Emre Gündoğdu
 

Recently uploaded (12)

cyber crime.pptx..........................
cyber crime.pptx..........................cyber crime.pptx..........................
cyber crime.pptx..........................
 
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
How to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdfHow to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdf
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
 
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
 
KubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial IntelligentKubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial Intelligent
 

A Modest Introduction to Swift