PGCon 2014: Lightning talks
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 31 | |
Author | ||
Contributors | ||
License | CC Attribution 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/19090 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Place | Ottawa, Canada |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
PGCon 201419 / 31
1
9
13
14
18
19
20
21
22
26
27
28
29
30
00:00
Metropolitan area networkPrice indexPhysical systemComputer programmingComputer animation
00:26
Physical systemMetropolitan area networkDatabaseProduct (business)Right angleSet (mathematics)NumberDifferent (Kate Ryan album)TrailFood energyComputer animation
02:24
BefehlsprozessorCore dumpClient (computing)Physical systemCore dumpNumberDatabaseMeasurementBlack boxRevision controlBefehlsprozessorPlanningEscape characterComputer-assisted translationCellular automatonVulnerability (computing)Enterprise architectureDiagram
03:27
Open setStandard deviationSoftwareComputer hardwareCopyright infringementDisk read-and-write headPoint (geometry)State of matterDuality (mathematics)Operator (mathematics)Functional (mathematics)Addition1 (number)Configuration spacePhysical systemComputer hardwareSoftwareMathematical optimizationSource codeMathematicsDatabase normalizationINTEGRALImplementationCore dumpStandard deviationComputer animation
04:56
Open setCovering spaceComputer networkServer (computing)Data storage deviceBackupComputer hardwareModule (mathematics)Game controllerCore dumpBefehlsprozessorDuality (mathematics)Local area networkSCSIMetropolitan area networkDatabaseSoftwareBackupData managementReplication (computing)Server (computing)Computer hardwareLatent heatRight angleMultiplication signSet (mathematics)QuicksortAxiomEndliche ModelltheorieState of matterComputer animation
06:01
MIDIData storage deviceComputer networkServer (computing)Data recoveryComputer hardwareElectronic visual displayDatabaseData managementData recoveryComputer hardwareTouchscreenComputer animation
06:37
Open setExpandierender GraphStandard deviationRegulärer Ausdruck <Textverarbeitung>Price indexMetropolitan area networkVariable (mathematics)HypermediaPresentation of a groupXMLUMLComputer animation
07:20
Metropolitan area networkPort scannerIdeal (ethics)Internet forumPatch (Unix)Self-organizationPresentation of a groupWeb 2.01 (number)AreaInteractive televisionWeightMereologyHand fanComputer animation
09:02
Metropolitan area networkPrice indexRegulärer Ausdruck <Textverarbeitung>ArmGamma functionLogarithmGoogolMiddlewareComputer animation
09:36
GoogolMetropolitan area networkPrice indexMiddlewareData storage deviceArmData typeProcedural programmingDatabaseWeb browserDemo (music)Variety (linguistics)Extension (kinesiology)MereologyConnected spaceData storage deviceOpen sourceDebuggerWeb applicationArrow of timeTheory of relativity1 (number)LogicOperator (mathematics)Type theoryMiddlewareMultiplication signComputer animation
12:09
Price indexValue-added networkMiddlewareBit rateMetropolitan area networkRegulärer Ausdruck <Textverarbeitung>LoginLibrary (computing)Right angleComputer animationLecture/Conference
12:43
Metropolitan area networkMathematical analysisGamma functionPrice indexArmHecke operatorElement (mathematics)GoogolOnline chatStatement (computer science)StatisticsPattern languageVarianceOperator (mathematics)Value-added networkTabu searchSubject indexingPartial derivativeKey (cryptography)Regulärer Ausdruck <Textverarbeitung>Point (geometry)Wide area networkMultiplicationLevel (video gaming)Density of statesCartesian coordinate systemElectronic program guideLink (knot theory)Query languageCrash (computing)Predicate (grammar)Library (computing)CodeType theoryReplication (computing)StatisticsLevel (video gaming)Goodness of fitVolumenvisualisierungLogical constantMultiplication signDatabaseHookingRight angle2 (number)Fluid staticsUniform resource locatorCartesian coordinate systemStatement (computer science)Software testingWikiComputer virusFrequencyExtension (kinesiology)Subject indexingPrice indexSoftware developerPoint (geometry)Latent heatProduct (business)Message passingKey (cryptography)Software frameworkForm (programming)Moment <Mathematik>Source codeInformation securityState of matterSound effectOperator (mathematics)Metropolitan area networkPosition operatorRepetitionWordInstance (computer science)Structural loadSource codeComputer animation
19:46
Maxima and minimaMetropolitan area networkPrice indexRegulärer Ausdruck <Textverarbeitung>Software developerPartition (number theory)Subject indexingDifferent (Kate Ryan album)Personal area networkRegular graphTable (information)Computer-generated imageryMathematical optimizationWorkloadNumberInternetworkingWrapper (data mining)Query languageData storage deviceLatent heatMiniDiscEntire functionFacebookTable (information)Open sourceUtility softwareScalabilityComputer fileReading (process)Virtual machineRevision controlBenchmarkRotationBand matrixRow (database)BefehlsprozessorCore dumpFile formatScaling (geometry)Data compressionPairwise comparison2 (number)Numeral (linguistics)Electric generatorExtension (kinesiology)Semiconductor memoryMultiplication signLine (geometry)DampingSlide ruleGroup actionSystem callStability theoryMaizeInstance (computer science)MathematicsBuildingModal logicPersonal digital assistantDifferent (Kate Ryan album)Subject indexingDaylight saving timeState of matterSequelAlpha (investment)Prisoner's dilemmaSelectivity (electronic)CASE <Informatik>Level (video gaming)Type theoryVelocityDiagram
24:36
Price indexMetropolitan area networkAbstract syntax treeState of matterSequenceDatabaseWordChaos (cosmogony)Computer animation
25:40
Relational databaseCodeStreaming mediaElectric generatorRight angleSquare number
26:16
Binary fileRed HatBridging (networking)Metropolitan area networkMIDIPower (physics)Electric generatorBookmark (World Wide Web)FamilyLattice (group)PlotterField (computer science)Inheritance (object-oriented programming)ManifoldArithmetic progressionTranslation (relic)Formal grammarDatabasePhysical systemData warehouseBridging (networking)XML
28:34
Metropolitan area networkPrice indexCodeACIDDistributive propertyTable (information)Port scannerHash functionInterior (topology)Gamma functionPersonal area networkMusical ensembleSoftware developerSystem callFiber (mathematics)Internet forumMaxima and minimaEvent horizonDatabaseMoment (mathematics)Endliche ModelltheorieResultantCASE <Informatik>InformationDistribution (mathematics)Multiplication signMereologyFormal languageWebsiteAdditionDirection (geometry)Table (information)StatisticsSoftware developerNetwork topologyTelecommunicationTerm (mathematics)Projective planeStability theoryParallel portACIDCodeAreaKey (cryptography)Scaling (geometry)Focus (optics)Right angleInclusion mapSlide ruleDifferent (Kate Ryan album)CAN busWorkloadInformation securityType theoryPlanningOpen sourceCycle (graph theory)SoftwareData compressionLine (geometry)System callCategory of beingGreen's functionSoftware bugScalabilityHash functionData storage deviceArrow of timeLocal ringLattice (order)Computer animation
33:03
James Waddell Alexander IIMetropolitan area networkPrice indexDuality (mathematics)KnotGoogolHacker (term)Event horizonExclusive orLink (knot theory)FeedbackWebsiteEvent horizonGoogolUniform boundedness principleMultiplication signRight angleGoodness of fitWhiteboardComputer animation
Transcript: English(auto-generated)
00:00
On the web, you will not be able to see it on here and on there at the same time. Okay. Just an FYI. I'm going to try to use...
00:21
There we go. I'll let you do it. Yeah, we can just roll it because it was like super long. That's good. Where's my other mic? Right here. Number two. You screwed it all up, man!
00:42
She had it all nicely set up for you. For us. Okay, we're going to have two microphones. You're going to need to hold both. You need both because... Yeah, there's two different... One is for people to hear and one is to record.
01:00
So... Yes. Check, check, check, check. Alright, Magnus, you want to go ahead and set up? Alright, everyone, we're about ready to start the lightning talks, I think. It's going to be slightly hectic, but you know what? That's how lightning talks go.
01:21
I think it'll be fun. First up, we have Yuri from Fujitsu. Here you go. Go ahead and grab those. You need both of them? You need both of those. So try to talk into both of them. Yes, there you go. And here you go. You're welcome to go ahead and come up and use the laptop. You're ready to go.
01:40
Okay. Hello, everyone. I'm Yuri Enomoto. I'm working for Fujitsu Limited. He's Arul from Australia. Because I was a poor English speaker, so I asked him to support.
02:01
And I would like to introduce about Fujitsu database appliance product based on Postgres GL. So the name is ATA database ready, called HADR for short. Anyway, shall I start?
02:26
Fujitsu developed the ATA DR for mission critical system. Why do we choose Postgres GL as database for mission critical system? So here is the answer. This chart is a performance measurement of version 9.3 by PGEcons.
02:50
PGEcons is Postgres Enterprise Consortium in Japan. As you know, the TPS improved in proportion to the CPU core number.
03:03
So Postgres GL has high reliability feature and also has high performance feature. And therefore, this is the reason why we chose Postgres GL for HADR.
03:26
So this black box is HADR. HADR has two points. First point is open standard. We use 100% pure Postgres GL and implement additional function as plug-in to avoid major change to core source code.
03:53
And another point is Fujitsu's integration technology with hardware and software.
04:00
So we provide HADR in optimal state for... Sorry.
04:25
We provide HADR in state full hardware redundancy configuration and software operational design. Therefore, it is easy for anyone to operate a setup and operate.
04:42
So without tuning, even mission critical system. In this picture, my colleague is making a replacement of hardware. This is hardware specification details.
05:02
When you open the front cover, you can see server and network switch is duplicated. So database server is duplicated by Postgres GL streaming replication and backup to storage.
05:24
Also, we are available as SSD to avoid IO bottlenecks. If I have enough time, I would like to introduce Postgres GL performance by SSD later.
05:40
In this way, HADR achieve high reliability and high performance of Postgres GL. So next, I would like to explain about software. We provide appliance manager. So appliance manager integrate software and hardware.
06:02
So this can monitor all of hardware OS and Postgres GL. So when database was stopped, appliance manager identify where failure is. And user receives a solution for the issue on the screen.
06:21
So user only clicks the recovery button. So appliance manager select a solution from these three scenarios. So, I'm sorry, so please direct to collaborate with community more.
06:42
Thank you. So thank you very much.
07:50
All right. My name is Mark, but I'm here helping this guy out with a presentation today.
08:14
As a crochet elephant from Portland, Oregon, for you Portlandia fans.
08:21
So today, checked in, asked to do a lightning talk. Asked Tom if he could submit a patch.
08:42
Keep trying, maybe next year. So he has a tumbler to see what his cousin's been doing. He's looking for a new home. See if you can pick him up at the charity auction tomorrow. Thank you.
09:04
Next was an online one.
09:54
All right. My name is David, and I want to kill middleware. I have been working with integrating, how do I do this?
10:05
Right arrow. Right arrow. I've been working with integrating some kind of database stuff and web applications for about 20 years now. And to say that, it seems ridiculous, but yes, it's been that long. So we have data storage, we have rendering, and we've got this thing in the middle.
10:21
And what it's done in the past is it's done HTTP request handling, database connectivity, data manipulation, business logic, HTML creation, and it sends it back and forth. And we've got something talking to the database and HTTP and HTML in the back. That was the old days. Today, what we have is we have a variety of front ends that you can't see because it's too dark.
10:44
HTML rendering, data manipulation, business logic, and HTML creation are all on the front end now. The back end, we've got data storage. We still have that, but we have data manipulation, we have business logic, and in the middle, all we have is HTTP request handling and database connectivity.
11:01
That's what we have now, okay? But what we can have with the advent of Postgres 9.2 and above is we can have all those things that are in the database plus the JSON type, and if we add HTTP request handling in there, we get this magic situation where we get to bypass everything in the middle
11:25
and ask the question, what is it for? So this is what I want, okay? I have a demo of this working. I created an extension using the GNU open source HTTP request handling.
11:44
I created that extension. It runs as a part of the database, accepting JSON and running stored procedures that are described as a JSON request. It returns JSON back to the browser. It works perfectly.
12:00
If anybody would like to see it or would like to contribute or like to just know more about this, please come and see me after. Thank you. If you like people who are quick, thank you.
12:24
That's the whole point, right? So I don't know why that's not working. Who's up next? You're up next. Do you have slides? It's another one. What am I doing? It's an online one? Yeah. Okay, right. So where is your online one? I sent the URL.
12:43
The URL. Not that one. I suppose. Where did you send it to? The light. Oh, that's Dan's thing. Can you find it? Okay, yes. Cool.
13:04
Small intermission. Static. You know what? The other guy gave me a URL on a little note here.
13:24
You failed. Try again. Yeah, you're going to need to type a top-level domain, I think. Or, you know, .com or .something, I imagine.
13:46
Oh, yeah. You need a dot, dude. There you go. Period. Right here. Where is it? Right here. Right there. Static. There you go.
14:00
Keep going over to the right. Enter. Yay! Oi! Oi! Do you need anything else? Or is that good? Thank you. There you go. Okay. Hi, I'm Renaud. I work for Dalibault, a French progressional company. I think you may have gotten the French part yet.
14:24
I'm here to talk to you about my latest pet project, PG-QuallStats. So, what is it about? It's an extension which will collect statistics about predicates. It's really similar to PG-Stats statements. It works the same.
14:40
In fact, most of the code was ripped off of PG-Stats statements. And it's available on PGXN as a testing release because it's not been tested extensively right now. So, what does it do? It's installed as a planner hook and it will look in pass query for statement on the form
15:01
some colon, some operator, some other colon or some colon, some operator, some constant or something like that. And then you can query statistics about this. What is it good for? Ah, it doesn't render correctly. What is it good for? It can help you find which of your columns
15:22
you're requesting against the most frequently. And the next logical step is to suggest missing indices based on those statistics. So, if you're always querying one colon with another, you will need a composite index on both those columns, et cetera, et cetera.
15:41
So, it's an index advisor. The next step to this is to be able to suggest partial indexes by looking up commonly used constants and why not suggest foreign keys when columns are frequently joined together.
16:02
So, if you have some time or some will to test it to ensure it doesn't crash your backend or have some use for it, please meet me or contribute. Thank you.
16:22
Who's up next? VDR? Okay. All right. PDF is here. Wait. VDR or Hall stats?
16:42
Oh, right. That's right. Yeah, because you were right. Ah, wrong thing. There you go. There's a mic. Please make sure you keep speaking into the mics. Hello, hello. All right. My name is Mark Sloan. I'm here to talk to you about what is called BDR
17:04
or bi-directional replication. It's a upcoming, we hope, extension in Postgres. About two years ago, apologies for everyone who's probably heard this now five times in the last two days.
17:21
About two years ago, we saw a need within Postgres that we didn't have by we. I'll talk about that later. But bi-directional replication is basically built off of what is now everyone knows as streaming replication. We had a specific need for WAN replication
17:41
around being a multi-master. There are some other products out there that do multi-master that are tightly coupled nodes. But we kind of needed something that was going to span the globe. Another thing that BDR can do is filter replication. So this is filtered at the database level.
18:01
Right now, if you do streaming rep, you get everything in the instance, as most people are probably aware. Another goal was easy, or at least we wanted it to look easy. So what does it look like? As I said, it looks a lot like streaming replication does right now. Unfortunately, to get it, you still have to recompile. But basically, you tweak your PostgreSQL Conf
18:22
to preload some libraries. You set up some connections, and that is per database. And then you go. So who's working on this? I would like to say thank you to Second Quadrant. They're doing pretty much all of the development work.
18:41
Intel Security is where I work. That's formerly McAfee. We're helping with some funding and a little QA work. Docs, so they're on the wiki for PostgreSQL.org. It is totally open. Everybody can use it.
19:00
It's being donated back to PGDG, anything that we produce. Same with documentation and everything like that. There are several pieces of the framework that have come out of this that other people look like they're using for things that we hadn't even originally intended, which I think is some of the point of giving back to the community.
19:23
All right, that's all I got.
20:15
Here you go. Please make sure you keep the mics up close to your mouth. Hello? There's your time right over there. Okay, cool.
20:21
Hey, it's Ozgun from Cytostata. And at Cytostata, we're building a scalable PostgreSQL that scales to dozens or hundreds of machines. Today I'm going to talk about the Columnar Store. We open source the Columnar Store. Out of curiosity, how many of you have heard of what a Columnar Store is? Like half, maybe 10, 20 percent?
20:43
At a very high level, it's basically instead of storing data row by row, you're storing it, laying it out column by column. And this is an extension that we released. It's a foreign data wrapper about a month back. And when we were building it, we didn't want to build it from scratch. We looked around, and there was this open source specification out there
21:00
which was called the RC file, optimized RC file format that came out of Facebook a couple of years ago. And basically the first version, the RC file version was when they were laying out their data, let's say you have 100 million rows and three columns, column A, column B, column C. The idea was they put like one million column As
21:21
followed by one million column Bs, followed by one million column Cs, and then another million column As. They published the specification on ICDE, I believe, and it picked up, particularly on the Hadoop world of things. It's out there. They also have some performance comparisons on the published paper.
21:41
About two years later, they developed a second generation of it, so that's to optimize RC file format. It's basically, again, a specification. And the optimizations they've done on the RC file format were lightweight indexes, min-max indexes, and enabling different compression methods. So this is, again, out there on the internet. If you're interested, please go and take a look.
22:03
We basically picked that up, and we made it a foreign data wrapper that integrates nicely into PostgreSQL. So all you need to do is create the extension, create the table, and then start running your queries. So this is niceness one, which is table compression ratios. Again, this is on TPCH, which isn't the ideal benchmark because most of our customers who are looking into using this are,
22:23
they typically have hundreds of columns, and you'll look into this when you're bottlenecked on IO. But again, 10, 20 columns, integers, big integers, numeric types, dates, so it's basically there. And the RC file format basically compresses in groups of 10K.
22:41
In here, you see the compression ratios in the benchmark, more or less three to four X. So depending on your use case, this could effectively increase your memory utilization. If your workload is in memory, if you're using SSDs, you get nice bang for the buck because your SSD storage effectively increases. And also if you're on rotational disks or on SSDs,
23:02
you benefit from reading fewer data over your disk throughput, like three to four X, and may grow if it's integers up to 10X, 15X. So that's the compression ratios. They are normalized to one. The line item table here is the biggest table. That's that slide, and this is the other slide, which again using the TPCH benchmark,
23:22
which is not again the ideal benchmark here because for most of our customers, they have hundreds of columns, and then their queries are only picking a few. But then again, this is on an EC2 instance, on a rotational disk. And I'll open up parentheses here, just like because it's important. In here, we're saturating the entire disk bandwidth, but we're only using one CPU core.
23:42
So we're running these queries sequentially, so the disk bandwidth is saturated, but the CPU, we have other CPU cores that we're not utilizing. And the benefits are, again looking into here, more or less about 2X. The benefits depend a whole lot on the query itself. All queries where PostgreSQL isn't bottlenecked by CPU,
24:02
such as query number six, C store provides bigger benefits because then you're reading fewer chunks of data, like only the columns you're interested in, and the compressed data from disk. On other queries where it takes PostgreSQL longer to execute, say query number three in the TPCH benchmark,
24:20
the benefit is relatively smallish. But then again, there is a benefit, particularly when you're bottlenecked on disk IO. And then those are the three slides that I have.
25:13
So this talk is called begat, or the mother of all databases.
25:25
In the beginning, all was darkness and chaos upon the deep, and all was null and void, and we didn't even know if null was equal to anything or not. And then came EF-COD, and he said,
25:40
let there be light. And there was light. And it was the first day. And then came Michael Stonebreaker, and Michael Stonebreaker begat Ingress, and that was the first generation. And then Michael Stonebreaker begat Postgres, and that was the second generation. And then Michael Stonebreaker ran off
26:01
and begat a whole bunch of other things that we don't really care about, except that most of them seem to have a little piece of Postgres in them, if you've tried any of them. But we're more concerned with the generations of Postgres. So Postgres begat Illustra. And Illustra was eaten by Informix,
26:21
which was eaten by IBM. And that was the third generation. And Postgres begat MSQL, and MSQL begat this thing called MySQL, which I don't think anybody uses anymore, but I thought I'd mention it. And Postgres begat Postgres 95,
26:43
and Postgres 95 begat PostgresQL. And that was the fifth generation. And early Postgres was quite fecund, and begat many things, including GreatBridge and NewSphere UltraSQL,
27:00
my favorite name, and Paragress and Red Hat Database and Mammoth PostgresQL, none of which, unfortunately, are with us anymore. And Postgres also begat Pervasive Postgres and EnterpriseDB. One of these is still with us. Can you guess which one?
27:22
And PostgresQL begat Pgcluster and Pgcluster2. Those aren't with us anymore. So then we begat PostgresXC, and PostgresXC begat StormDB, and StormDB begat PostgresXL. And PostgresQL also begat TelegraphCQ,
27:42
and TelegraphCQ begat Truviso. And Postgres begat PostgresR, and PostgresR begat Translatus. And then Postgres entered the realm of data warehousing, and begat many things. It begat Netezza, and it begat Bisgeres,
28:01
and Bisgeres begat Greenplum, and PostgresQL begat Astrodata, and PostgresQL begat Paraxel, and Paraxel begat... Goodness, Amazon Redshift. But we are not done in the realm of data warehousing, because PostgresQL had a brief fling with Hadoop, and begat HadoopDB,
28:21
which begat Hadapt, and also it begat Yahoo Everest, and begat Citus Data. And here you can see the family and the many generations of PostgresQL. Truly, it is the mother of all databases.
28:59
Right next to your mouth.
29:01
Don't try to... Just hold them. Just hold them. One of them is for recording, one of them is for the... Got it. And then right arrow to go. Ready? Your time is over here. All right, so I'll talk about one of the begats here,
29:20
PostgresXL. Yet another Postgres-related cluster. Begat from XC. There's some code there. There's other parts that are different. The planner and executor are actually fairly different. So it has some same properties, like cluster at MVCC, ACID, all that.
29:41
But it adds in data node to data node direct communication, and MPP parallelism, while also being write scalable. It does allow you to scale out. There was a TPCH slide earlier. This is kind of outdated, but it does give you nice performance boost for TPCH type of workloads.
30:03
And also, so earlier someone presented about a columnar storage engine. It should be pretty easy for us to adapt that in, so we should be able to get the benefits of MPP parallelism and compression, so we could probably shrink these another two, three, four times, whatever the benefit was on the other one. So I'm excited to take a look at that
30:21
and integrate that in down the road. How it looks when you create tables, you specify a distribution key. In this case, I'm distributing on that. What plans look like would be, if you're joining on the respective join columns, it's going to send this plan to both data nodes in this example, and it's basically going to push it down both nodes
30:42
to do a local hash join, and it's going to basically merge those results. Now let's take a different case, where we're doing a join. One column is on the hash distribute column, another one on the other table, it's not. It's going to similarly send down a plan to each data node, but when it executes one part of that tree,
31:04
it knows, oh, I need to hash on column two and send it over to the other node so it can join with column three. So we try to parallelize the plans as much as possible and make it an MPP architecture, so kind of an open source green plum type thing.
31:22
So we do have some differences compared to Postgres XC, like performance. The multi-tenant security as well, we try to lock that down. PT database, PT user, you can't take a look at that. You can only see your own information. If someone's motivated and wants to pull that out and put it into Postgres, feel free. We also collect additional statistics.
31:43
In terms of the project, we want to emphasize stability and bug fixes over adding new features so that people feel comfortable that their data is safe. And because it is a scale-out cluster, focus on performance. And we want to be a very inclusive community, so if people want to participate in roadmap discussions
32:04
or priorities, we want it to be driven by the users. So we want to be inclusive, encourage you to get involved. I was in the XC project also from the beginning,
32:20
so as my final slide, I'd like to ask Koichi Suzuki of NTT if he'd be interested in being a co-project lead on Postgres XL and working on that project. Thank you.
32:42
All right. I'm knocking on the mic because I'm just loud. I assume everybody can hear me okay. I just wanted to bring up a couple of final notes regarding the party tonight. So basically what I'm going to do is I'm going to bring it up over here so people can see it.
33:00
If you are not familiar with it, this is how you use the website. Yay, website. Hey, who was in one of these talks? Yay, like five people. Thank you. You all are great. All right, here's the social event. It's a major social event. It's at Johnny McBeauties. This, at least according to my Googling and looking around,
33:23
it looks like it's right across from Lesweets. If people are not familiar with that, you can find it on Google. Make sure that you bring your badge because the badge is a very important thing. Magnus is timing me on this lovely lightning talk that I have going on here, which means I think I am going to go ahead and mic up because you know what? I have four minutes to talk to you.
33:44
I like talking. Have you noticed? Has anybody noticed that I like talking? I talk all the freaking time. Okay, all right. Have fun. I want to see everybody at the party tonight. It will be a blast. There is cake at reception. There is cake at reception. I have been told it is probably all gone,
34:01
but you are welcome to go try it. It was somebody's birthday. Does anybody know who? Who? Brides. Wait, what? Dubaius. Dubaius. Do we have a Dubaius in the room? Maybe he is eating cake or celebrating or whatever. I was going to have us sing Happy Birthday.
34:20
I have another three minutes here, but he is not here, so I am not going to put you all through that, I suppose. All right, go to the pub or wherever Johnny McBeauty's is. I guess it is a pub or something. Trust me, there will be alcohol. Everybody will have lots of fun. Good night.
Recommendations
Series of 31 media