Adrienne Tacke PRO
🇵🇠Software Engineer & Sr. Developer 🥑 @ Cisco • Published Author • LinkedIn Learning Instructor • Twitch Streamer 🕹 Most important: I spend way too much money on desserts and endless hours playing Borderlands
@AdrienneTacke
#WebExpo
Regents of the Amsterdam Leper Colony
Jan Adam Kruseman
1834 - 1835
@AdrienneTacke
#WebExpo
@AdrienneTacke
#WebExpo
@AdrienneTacke
#WebExpo
@AdrienneTacke
@AdrienneTacke
#WebExpo
@AdrienneTacke
#WebExpo
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
#WebExpo
const generateRandomGameId = () => {
return (Math.random() + 1).toString(36).substring(6);
};
exports = function() {
const db = context.services.get('mongodb-atlas').db('classic-cards');
const newGameId = generateRandomGameId();
db.collection('games').insertOne({
game_id: newGameId,
owner_id: context.user.id,
created_at: new.Date(),
allow_submissions: false,
image_url: null,
submissions: [],
winning_caption: null
});
return { gameId: newGameId };
};
createGame
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
#WebExpo
exports = async function() {
const db = context.services.get('mongodb-atlas').db('classic-cards');
const http = context.services.get('metApi');
const randomMetObject = await db.collection('met_objectids')
.aggregate([{ $sample: { size: 1 } }])
.toArray();
const randomMetObjectId = randomMetObject[0].value;
const randomizedGetRequest = 'https://collectionapi.metmuseum.org/public/collection/v1/objects/${randomMetObjectId}';
const parsedResponse = JSON.parse(response.body.text());
return { primaryImage: parsedResponse.primaryImageSmall };
};
getRandomArtCard
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
👂
Functions
Auth
Change StreamÂ
listens
Realm Web SDK
External API
Direct link to data source
Game actions via Functions
Grab art piece URL
#WebExpo
@AdrienneTacke
#WebExpo
exports = async function(gameId, winningCaption) {
const db = context.services.get('mongodb-atlas').db('classic-cards');
const game = await db.collection('games').findOne({ game_id: gameId });
if (game.owner_id !== context.user.id) {
return { error: 'Not allowed', error_code: '401' };
}
await db.collection('games').updateOne(
{ game_id: gameId },
{
$set: {
'allow_submissions': false,
'winning_caption': winningCaption
}
}
);
};
selectWinningCaption
@AdrienneTacke
#WebExpo
@AdrienneTacke
https://adriennetacke.github.io/house-of-memes
#WebExpo
@AdrienneTacke | #WebExpo
By Adrienne Tacke
Serverless Socializing: How I Built a Quick Multi-Player Serverless Game Working with a fully remote team, it's been hard to develop some team camaraderie. To help with this, we played various multiplayer, cloud-based games! And of course, I tried to build my own. In this talk, we'll play the game and understand how it is built with a serverless architecture in mind!
🇵🇠Software Engineer & Sr. Developer 🥑 @ Cisco • Published Author • LinkedIn Learning Instructor • Twitch Streamer 🕹 Most important: I spend way too much money on desserts and endless hours playing Borderlands