SlideShare a Scribd company logo
We#will#begin#shortly...
Stay%Awhile%And%Fiddle%With%Your%
Smartphone
By#Jamie#Winsor
The$Story
Building(And(Suppor.ng
Online&Experiences
NoOps
Doesn't(Mean(No(Opera/ons
It#Means#No#Dedicated#Opera2ons
Architec(ng,,Planning,,and,Implemen(ng,is,
40%,of,an,Engineer's,job
The$other$60%$is$team$building$and$
communica6on.
The$Problem
How$Do$We
• Stay&development&focused
• Transi6on&from&single&player&to&massively&mul6player&online&
games
• Build&a&posi6ve&rela6onship&with&our&publishers
• Develop&and&maintain&a&strong&company&culture
Develop'Your'Company,'Not'Just'
Your'So6ware
Hire%Engineers,%Not%Programmers
Don't&Be&Afraid&To&Contract&Work&
Out
Never%Higher%A%Maybe
Interview)For
• IQ$%$intelligence
• EQ$%$emo0onal$intelligence
• Personality
Develop'Smart
Be#Pragma)c#And#Iterate
Leverage'Open'Source
Use$The$Right$Tools$And$Pa2erns
Building(A(Distributed(System?
OTP
A"Framework"For"Building"Distributed"Systems
Would&You&Build&Your&Own&Web&Framework?
Or#Your#Own#Game#Engine?
You$Could$But...
Some%Of%Us%Have%Sh_t%To%Do
Erlang/OTP+Saves+Time
A"Lot"Of"Time
But$Only$If$Your$Team$Buys$In
Team%Language%Evalua-on
What%technology%should%we%adopt?
• C/C++
• C#&mono
• Python
• Ruby
• Erlang
Game%engineers%are%generally%experienced%in%
C2like%languages
Erlang/OTP+Network+Programming+Perks
• Easily(encode(and(decode(binary(message
• Monitor(/(subscribe(to(open(sockets
• "Free"(internal(rou:ng(of(messages
• A(sane(threading(model
• Crash?Resistant
Erlang'isn't'very'approachable
—"Concerned"Engineer
Elixir&Has&The&Same&Core&Concepts
• Processes(and(Mailboxes
• Supervision(Trees
• Pa6ern(Matching
• Tail(Recursion
Started'Using'Elixir'at'0.9.0
We#Asked#Ourselves,#"Is#This#A#Risk?"
Solid&Two)Way&Interoperability
Leverage'Erlang'Tooling'And'Libraries
For$Free.
Syntax'Doesn't'Ma.er
(Except(It(Does)
Elixir's(Syntax(Makes
Erlang's)Ecosystem)More)
Approachable
For$Your$Colleagues
Have%Compassion
Dev$Tooling
Mix
• Build'Tool
• Create/Compile/Test'projects
• Dependency'management
$ mix new hello_world
$ cd hello_world
$ mix deps.get
Hex
How$Are$We$Gonna$Run$This?
Live%In%The%Cloud
• On$demand$test$environments
• Expand$or$contract$your$live$cluster
No#Opera)ons?
Who$Will$Configure$Our$Machines?
Applica'on*Engineer*Owns
The$Cookbook$For$Their$Applica1on
All#Applica(ons#Are#Developed
And$Designed$With$Auto/Discovery$In$Mind
Discovery
Automa'cally+Discover+And+Connect+Erlang+
Nodes
github.com/undeadlabs/discovery
Discovery*Breakdown
• Poller'('Discover'nodes'running'an'OTP'applica6on
• PollerEvent'('Callbacks'to'run'when'poller'finds'something
• Handler'('Behavior,'callbacks'to'run'when'poller'event'is'fired
• Heartbeat'('Broadcast'availability
Chat%Supervisor%init/1%Snippet
children = [
worker(Discovery.Poller, ["tu_route", [
{Discovery.Handler.NodeConnect, [
{Tubes.RouteConnector, [:tu_chat, Chat.Repo.shard_ids]}
]}
]], id: Poller.Route),
worker(Discovery.Heartbeat, [@heartbeat_check, Config.heartbeat_ttl])
]
supervise(children, strategy: :one_for_one)
Who$Will$Build$Our$Machines?
Terraform
• Abstrac)on,for,Cloud,providers
• Allows,you,to,describe,network/server,resources,in,code
• Security,Groups
• VPCs,,Subnets
• Virtual,Instances
• And,more
Applica'on*Engineer*Owns
And$Maintains$A$Terraform$Module
For$Their$Applica.on
Configurable,Module
variable "route-servers" {
default = "3"
description = "The number of route server instances to launch."
}
variable "app-servers" {
default = "3"
description = "The number of app server instances to launch."
}
variable "replication_servers" {
default = "1"
description = "The number of database replication servers to launch."
}
Terraform(To(Describe(&(Provision(
Environents
Chef%Describe%&%Configure%Your%
Nodes
No#Such#Thing#As#DevOps#Team
Every&server&engineer&needs&to&understand&Elixir,&C#,&Chef,&and&the&
cloud&tooling.
Foster'Adop+on
For$Your$Technology$Choices
• Make&on)ramps&for&your&teammates
• Create&a&safe&to&fail&environment
• Create&and&evangelize&pa9erns&and&standardiza:ons.&Allow&for&
collabora:on.&(Illusion&of&choice?)
Turn%Your%Colleagues%Into%
Ambassadors%For%Technology
Code%Reviews
• Assist&with&learning
• Keep&a&posi2ve&tone&in&your&code&reviews.&Stay&away&from&an&
authorata2ve&tone&(I&love&you&but&I&push&you&in&the&dirt)
• Generic&praise&is&not&enough
• Avoid&syntax/style&discussions
DevOps
Make%opera)ons%every%engineer's%responsibility
• Protect(your(culture
• Control(your(live(service
• Don't(become(beholden(to(a(service(organiza:on(with(a(
monopoly
Operate'without'the'extra'headcount
High%Level%Architecture%Overview
Of#Moonrise
Three%Components%of%An%Online%Game
• Game&Client
• Game&Server(s)
• Service&Pla4orm
Game%Server(s)
• Simulate*the*game
• Nego/ates*with*clients
• Communicate*with*pla6orm
Pla$orm
• Game&agnos+c
• Highly&available
• Game&experience&s+tching
• Provides&services&to&games
• Auth,&Chat,&Presence,&Leaderboards,&Guilds,&Player&Profile,&and&
more
Applica'on*Cookbooks
• Tubes'(Pla,orm)
• Provides'a'recipe'for'each'service
• Daemon'(Moonrise'code'name)
• Provides'a'receipt'for'each'game'server'type
• Undead'Labs'Base
• Provides'common'funcAonality'for'all'UL'nodes
Describing*Environments
• cloud'environments0repo0on0Github
• One0directory0per0environment
• Remote0state0storage0in
• Atlas
• Consul
$ git clone git@github.com:undeadlabs/cloud-environments.git
$ cd cloud-environments
$ cat moonrise-jwtest/default.tf
module "undead" {
source = "git::git@github.com:undeadlabs/undeadlabs-base-cookbook.git//terraform"
vpc_id = "${aws_vpc.moonrise.id}"
}
module "tubes" {
source = "git::git@github.com:undeadlabs/tubes.git//terraform"
chef_env = "moonrise-tubes-jwtest"
vpc_id = "${aws_vpc.moonrise.id}"
subnet_id = "${aws_subnet.moonrise-any.id}"
lab_cidr = "${module.undead.lab_cidr}"
common_sg_id = "${module.undead.server_common_sg_id}"
split_api_client_sg_id = "${module.split-api.split_api_client_sg_id}"
}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
resource "aws_vpc" "moonrise" {
cidr_block = "172.30.0.0/16"
tags = {
Name = "moonrise-jwtest"
}
}
resource "aws_subnet" "moonrise-any" {
vpc_id = "${aws_vpc.moonrise.id}"
cidr_block = "172.30.0.0/16"
map_public_ip_on_launch = true
tags = {
Name = "moonrise-jwtest-any"
}
}
Building(An(Environment
$ terraform get
$ terraform remote -backend=Consul -path=moonrise-jwtest -address=<addr>
$ terraform apply
$ git add .
$ git commit -a "initial commit for moonrise-jwtest environment"
$ git push
Teaching)Resources
• h"ps://www.airpair.com/aws/posts/n1ered4aws4docker4terraform4
guide
• h"ps://www.terraform.io
Jamie&Winsor
@resetexistence
github.com/reset

More Related Content

Similar to Stay Awhile And Fiddle With Your Smartphone

Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
Marcus Blankenship
 
Visual crowdsourcing: how to use the crowd to generate visual content for web...
Visual crowdsourcing: how to use the crowd to generate visual content for web...Visual crowdsourcing: how to use the crowd to generate visual content for web...
Visual crowdsourcing: how to use the crowd to generate visual content for web...
Else Kramer - Photosopher
 
2015 03-19-devops-toolkit-varrow-madness
2015 03-19-devops-toolkit-varrow-madness2015 03-19-devops-toolkit-varrow-madness
2015 03-19-devops-toolkit-varrow-madness
Jonas Rosland
 
Innate In House Design
Innate In House DesignInnate In House Design
Innate In House Design
Serendipity
 
Teaching the Principles of Computer Science to Primary-Aged Children
Teaching the Principles of Computer Science to Primary-Aged ChildrenTeaching the Principles of Computer Science to Primary-Aged Children
Teaching the Principles of Computer Science to Primary-Aged Children
Barry O'Sullivan
 
Agility and Customer Experience
Agility and Customer ExperienceAgility and Customer Experience
Agility and Customer Experience
Thoughtworks
 
Sw6 linkedin fs
Sw6 linkedin fsSw6 linkedin fs
Sw6 linkedin fs
Mark Valentine
 
Sw6 linkedin v 3
Sw6 linkedin v 3Sw6 linkedin v 3
Sw6 linkedin v 3
Mark Valentine
 
Sw6 linkedin ls
Sw6 linkedin lsSw6 linkedin ls
Sw6 linkedin ls
Mark Valentine
 
Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
Marcus Blankenship
 
Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
Marcus Blankenship
 
Benbria Flash Talk — Restaurant Leadership Conference 2016
Benbria Flash Talk — Restaurant Leadership Conference 2016Benbria Flash Talk — Restaurant Leadership Conference 2016
Benbria Flash Talk — Restaurant Leadership Conference 2016
Benbria
 
Portfolio
PortfolioPortfolio
Portfolio
Daniel Markham
 
How To Make Your Recruitment Day More Effective Using Social Media Technologies
 How To Make Your Recruitment Day More Effective Using Social Media Technologies How To Make Your Recruitment Day More Effective Using Social Media Technologies
How To Make Your Recruitment Day More Effective Using Social Media Technologies
HM Revenue & Customs
 
"Me" Branding Awareness
"Me" Branding Awareness"Me" Branding Awareness
"Me" Branding Awareness
Joel Martin
 
Ben Hill - Develop Indie Dev Day Presentation
Ben Hill - Develop Indie Dev Day PresentationBen Hill - Develop Indie Dev Day Presentation
Ben Hill - Develop Indie Dev Day Presentation
joel_tecmark
 
Trails of a Graduate Start-Up Studio - Develop Conference 2012
Trails of a Graduate Start-Up Studio - Develop Conference 2012Trails of a Graduate Start-Up Studio - Develop Conference 2012
Trails of a Graduate Start-Up Studio - Develop Conference 2012
benni_hill
 
Agility and the Customer Experience
Agility and the Customer ExperienceAgility and the Customer Experience
Agility and the Customer Experience
Thoughtworks
 
Apple SMS Presentation
Apple SMS PresentationApple SMS Presentation
Apple SMS Presentation
Atul Deshpande
 
Agile Adoption Anti Patterns
Agile Adoption Anti PatternsAgile Adoption Anti Patterns
Agile Adoption Anti Patterns
James Lewis
 

Similar to Stay Awhile And Fiddle With Your Smartphone (20)

Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
 
Visual crowdsourcing: how to use the crowd to generate visual content for web...
Visual crowdsourcing: how to use the crowd to generate visual content for web...Visual crowdsourcing: how to use the crowd to generate visual content for web...
Visual crowdsourcing: how to use the crowd to generate visual content for web...
 
2015 03-19-devops-toolkit-varrow-madness
2015 03-19-devops-toolkit-varrow-madness2015 03-19-devops-toolkit-varrow-madness
2015 03-19-devops-toolkit-varrow-madness
 
Innate In House Design
Innate In House DesignInnate In House Design
Innate In House Design
 
Teaching the Principles of Computer Science to Primary-Aged Children
Teaching the Principles of Computer Science to Primary-Aged ChildrenTeaching the Principles of Computer Science to Primary-Aged Children
Teaching the Principles of Computer Science to Primary-Aged Children
 
Agility and Customer Experience
Agility and Customer ExperienceAgility and Customer Experience
Agility and Customer Experience
 
Sw6 linkedin fs
Sw6 linkedin fsSw6 linkedin fs
Sw6 linkedin fs
 
Sw6 linkedin v 3
Sw6 linkedin v 3Sw6 linkedin v 3
Sw6 linkedin v 3
 
Sw6 linkedin ls
Sw6 linkedin lsSw6 linkedin ls
Sw6 linkedin ls
 
Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
 
Putting Down the Tools
Putting Down the ToolsPutting Down the Tools
Putting Down the Tools
 
Benbria Flash Talk — Restaurant Leadership Conference 2016
Benbria Flash Talk — Restaurant Leadership Conference 2016Benbria Flash Talk — Restaurant Leadership Conference 2016
Benbria Flash Talk — Restaurant Leadership Conference 2016
 
Portfolio
PortfolioPortfolio
Portfolio
 
How To Make Your Recruitment Day More Effective Using Social Media Technologies
 How To Make Your Recruitment Day More Effective Using Social Media Technologies How To Make Your Recruitment Day More Effective Using Social Media Technologies
How To Make Your Recruitment Day More Effective Using Social Media Technologies
 
"Me" Branding Awareness
"Me" Branding Awareness"Me" Branding Awareness
"Me" Branding Awareness
 
Ben Hill - Develop Indie Dev Day Presentation
Ben Hill - Develop Indie Dev Day PresentationBen Hill - Develop Indie Dev Day Presentation
Ben Hill - Develop Indie Dev Day Presentation
 
Trails of a Graduate Start-Up Studio - Develop Conference 2012
Trails of a Graduate Start-Up Studio - Develop Conference 2012Trails of a Graduate Start-Up Studio - Develop Conference 2012
Trails of a Graduate Start-Up Studio - Develop Conference 2012
 
Agility and the Customer Experience
Agility and the Customer ExperienceAgility and the Customer Experience
Agility and the Customer Experience
 
Apple SMS Presentation
Apple SMS PresentationApple SMS Presentation
Apple SMS Presentation
 
Agile Adoption Anti Patterns
Agile Adoption Anti PatternsAgile Adoption Anti Patterns
Agile Adoption Anti Patterns
 

Recently uploaded

Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
UiPathCommunity
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
leebarnesutopia
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
AI in the Workplace Reskilling, Upskilling, and Future Work.pptx
AI in the Workplace Reskilling, Upskilling, and Future Work.pptxAI in the Workplace Reskilling, Upskilling, and Future Work.pptx
AI in the Workplace Reskilling, Upskilling, and Future Work.pptx
Sunil Jagani
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 

Recently uploaded (20)

Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
AI in the Workplace Reskilling, Upskilling, and Future Work.pptx
AI in the Workplace Reskilling, Upskilling, and Future Work.pptxAI in the Workplace Reskilling, Upskilling, and Future Work.pptx
AI in the Workplace Reskilling, Upskilling, and Future Work.pptx
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 

Stay Awhile And Fiddle With Your Smartphone