1891 lines
65 KiB
Plaintext
1891 lines
65 KiB
Plaintext
|
|
Episode: 789
|
||
|
|
Title: HPR0789: GeekNights Git: the fast version control system
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0789/hpr0789.mp3
|
||
|
|
Transcribed: 2025-10-08 02:36:09
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
You are listening to syndicated Thursday on Hacker Public Radio.
|
||
|
|
Each Thursday we highlight a creative commons work, and today it's geek nights.
|
||
|
|
In this episode, they talk about Git, the fast-version control system.
|
||
|
|
The technical discussion begins about 30 minutes in.
|
||
|
|
It's Monday, August 1st, 2011, I'm Rim, and this is Geek Nights, tonight Git.
|
||
|
|
Let's do this.
|
||
|
|
Started my new job today.
|
||
|
|
It's pretty great.
|
||
|
|
I gotta say.
|
||
|
|
Any new job is great in the first day.
|
||
|
|
I could start working in McDonald's.
|
||
|
|
It'd be great on the first day.
|
||
|
|
You know, when I started at that hospital, the first day, a lot of warning signs.
|
||
|
|
That they were not so great.
|
||
|
|
I've never seen warning signs in the day one.
|
||
|
|
Warning signs in the first, when I started that hospital a lot, God, like six years ago.
|
||
|
|
One, they gave me an alpha numeric pager.
|
||
|
|
Oh, boy.
|
||
|
|
And I was like, what's this?
|
||
|
|
And they were like, it's your pager.
|
||
|
|
And I was like, yeah, it's never getting turned on.
|
||
|
|
Warning signs in the second, Firefox not installed on the desktop.
|
||
|
|
And I didn't even know how to get it installed.
|
||
|
|
Warning the third, couldn't get to slash dot blocked.
|
||
|
|
You know, before I work somewhere, I ask if they filter internet or anything like that.
|
||
|
|
I normally do, but I didn't back then.
|
||
|
|
That was a long time ago.
|
||
|
|
I've done that even before I graduated college.
|
||
|
|
I was like, do you filter internet?
|
||
|
|
Yeah, I'm not working there.
|
||
|
|
Sorry.
|
||
|
|
Anyway.
|
||
|
|
Yeah, but no, it's pretty great to be, I don't know.
|
||
|
|
This is a big step up.
|
||
|
|
I'm basically, I'm the vice president of product management.
|
||
|
|
Yeah, but you're only the vice president of like 10 people.
|
||
|
|
Well, it's more than I.
|
||
|
|
There's only 10 people there.
|
||
|
|
People actually listen to what I'd say.
|
||
|
|
So it's not like, like, think about it.
|
||
|
|
That is a key difference.
|
||
|
|
Think about Connecticut when we're like, here's the obvious smart thing to do.
|
||
|
|
And then we had like fight for stuff.
|
||
|
|
I can be like, this is the smart thing to do.
|
||
|
|
And people are like, all right.
|
||
|
|
Are you describing some sort of non-existent utopia?
|
||
|
|
What are the people you say?
|
||
|
|
Something and people listen like, hey, yeah,
|
||
|
|
be really good idea if we switched from exchange to Google.
|
||
|
|
You know, it's even better if I'm wrong or my day is bad.
|
||
|
|
Smart people intelligently disagree.
|
||
|
|
Oh my god.
|
||
|
|
It's kind of crazy.
|
||
|
|
Are you sure it's a real workplace?
|
||
|
|
Watch, I never get a paycheck.
|
||
|
|
I show up one day and there's like hardboard cutouts of everyone.
|
||
|
|
That's the thing is like some recruiter just called me.
|
||
|
|
And I was like, giving him the shit.
|
||
|
|
You know, just like, whatever.
|
||
|
|
Are recruiters?
|
||
|
|
You happen to call me while I'm not.
|
||
|
|
I'm waiting for him to show up and I have nothing better to do.
|
||
|
|
I'll talk to you because you have the balls to call me on the phone
|
||
|
|
instead of just emailing.
|
||
|
|
The last recruiter I talked to, we emailed me
|
||
|
|
and he was like, yeah, what do you want?
|
||
|
|
I got this like Linux system administration job.
|
||
|
|
And I was like, I need 300K before I even am going to look at this.
|
||
|
|
So I'm just, I'm just like treating the guy like crap.
|
||
|
|
Like, yeah, what do you make if I get hired?
|
||
|
|
He's like 25%.
|
||
|
|
I'm like, oh, you told me.
|
||
|
|
That's not bad.
|
||
|
|
No, but the thing was is like, you know, there's always,
|
||
|
|
I always get these things from startup places, you know?
|
||
|
|
Oh, they're like, I can gladly pay you Tuesday and stock options.
|
||
|
|
Exactly, right?
|
||
|
|
It's like startups they really want to get you in because it's,
|
||
|
|
basically, it's impossible to hire tech people.
|
||
|
|
But they're paying you nothing.
|
||
|
|
They're like rare, rare skills.
|
||
|
|
Like you, I think you said it best.
|
||
|
|
I'm going to give you this pile of lottery tickets,
|
||
|
|
coupled with a pittance of a salary.
|
||
|
|
But you get to work in a party zone.
|
||
|
|
But also 80 hour weeks.
|
||
|
|
Also 80 hour weeks in the party zone.
|
||
|
|
And we'll give you lottery tickets.
|
||
|
|
Oh, other utopias, right?
|
||
|
|
You know, my work hour hours are?
|
||
|
|
Get the work done.
|
||
|
|
Nice.
|
||
|
|
Yeah.
|
||
|
|
Excellent data.
|
||
|
|
The big ups ride their bikes to work.
|
||
|
|
It's got like all the fun stuff.
|
||
|
|
How old are the big ups?
|
||
|
|
Uh, standard big up age.
|
||
|
|
What kind of, but all the people around, like at my level
|
||
|
|
and under our age or younger, like they're actually,
|
||
|
|
and they're all smart.
|
||
|
|
There's companies like, yeah, in turns, yeah, co-ops.
|
||
|
|
Here's how we really know the three important questions
|
||
|
|
that sell if these are big ups are good or not.
|
||
|
|
You're ready?
|
||
|
|
Question number one.
|
||
|
|
What phones do the big ups have?
|
||
|
|
I actually don't know.
|
||
|
|
But they asked me what phone I had because they were
|
||
|
|
going to give me a company phone.
|
||
|
|
And it felt that the Nexus never was like, oh, you don't
|
||
|
|
need our phone.
|
||
|
|
Okay.
|
||
|
|
Dude, what computers do they have on their desk?
|
||
|
|
Everyone has a different computer.
|
||
|
|
One guy has a super fast Mac, uh, bunches of tower.
|
||
|
|
Uh, or MacBook Pro.
|
||
|
|
One has a MacBook Pro.
|
||
|
|
One has a tower.
|
||
|
|
Well, someone has the Mac Pro tower.
|
||
|
|
Okay.
|
||
|
|
Also people, uh, like the first computer they gave me
|
||
|
|
before I got the Windows box, which is Ubuntu.
|
||
|
|
Okay.
|
||
|
|
It's up.
|
||
|
|
It's already in Ubuntu in the house.
|
||
|
|
Yeah.
|
||
|
|
That's a good sign.
|
||
|
|
Okay, question number three is the most important.
|
||
|
|
Uh-oh.
|
||
|
|
What kind of bikes were they riding?
|
||
|
|
Uh, actually, he's got one of those commuter bikes.
|
||
|
|
Oh, the the Foldy Dayton thing.
|
||
|
|
Yup.
|
||
|
|
Okay.
|
||
|
|
Okay.
|
||
|
|
That's a very CEO kind of bike.
|
||
|
|
The thing is, they know real bikes and they're all super
|
||
|
|
athletic, which counts for a lot actually.
|
||
|
|
Yeah, but the question, you know, if it was about...
|
||
|
|
I'm tired of working with, uh, Unix Santas.
|
||
|
|
Most I love Unix Santas.
|
||
|
|
I like people I can play paintball with.
|
||
|
|
The thing is, the ideal company, right, has to have both.
|
||
|
|
You have to have the Unix Santas.
|
||
|
|
You don't need Unix Santas if there's nothing,
|
||
|
|
if there's no Unix in your job.
|
||
|
|
If there's no Unix, then you've got another problem.
|
||
|
|
Well, you've got every server should be Unix Santas.
|
||
|
|
Here's the weirdest thing.
|
||
|
|
This is the first time in my life.
|
||
|
|
I have had a job where my job does not in any way involve straight up support.
|
||
|
|
But I mean, your company uses Unix machines.
|
||
|
|
They're all, you have servers.
|
||
|
|
Well, yeah, there's stuff.
|
||
|
|
But I don't have to manage that.
|
||
|
|
I'm actually kind of divorced from that, like, operational tech.
|
||
|
|
Right, but the point is, you've got to have Unix Santas
|
||
|
|
and Steve Jobs is combined, right?
|
||
|
|
Because while lately, I'm been a lot of, you know,
|
||
|
|
a lot of my rants and technical opinions have been very anti-jobs.
|
||
|
|
You got to remember that the jobs is also necessary.
|
||
|
|
Well, let's put it this way.
|
||
|
|
The jobs made for whatever you feel about Apple,
|
||
|
|
some of the best goddamn user interfaces the world has ever seen.
|
||
|
|
Yeah, some, not all.
|
||
|
|
But, you know, take, for example, my favorite example,
|
||
|
|
I always bring up in this discussion is the Apple 2GS,
|
||
|
|
the most beautiful computer ever created.
|
||
|
|
That's Unix Santas.
|
||
|
|
Why was the Apple 2GS created?
|
||
|
|
It was because it was a combination of Steve Wozniak and Steve Jobs.
|
||
|
|
Scott, if you just had the Wozniak without the jobs,
|
||
|
|
the Apple 2GS would have been like all sorts of wicked ugly.
|
||
|
|
If you just had the jobs, you wouldn't have been able to open it.
|
||
|
|
It would have been welded shut, right?
|
||
|
|
But because you had both, you had this perfect computer that opened up
|
||
|
|
just once and it was completely flat and all the slots were in a row.
|
||
|
|
It was the ultimate combination.
|
||
|
|
I feel like this is a third way.
|
||
|
|
There's a third way, essentially triangle.
|
||
|
|
You've got Unix Santas, Steve Jobs,
|
||
|
|
and the other direction is Tim Berners-Lee.
|
||
|
|
Idealize software solutions.
|
||
|
|
Anyway.
|
||
|
|
Functional requirements with no interface or thought for practicality.
|
||
|
|
Right. So speaking of Steve Jobs, right?
|
||
|
|
You got a new HDVC.
|
||
|
|
I did. I have not plugged it into my TV yet.
|
||
|
|
Just because I've been busy.
|
||
|
|
It works though, right?
|
||
|
|
You know what? My whole life.
|
||
|
|
Ever since I switched away from AMD,
|
||
|
|
I've never had a failure to post on the first boot.
|
||
|
|
In fact, I closed the case and put all the screws in before I turned it on for the first time.
|
||
|
|
That is how fucking confident I was.
|
||
|
|
And you were right.
|
||
|
|
Dude, my old AMD boxes.
|
||
|
|
I would like plug power into the motherboard with CPU and RAM sitting on the floor
|
||
|
|
and turn it on to make sure it works.
|
||
|
|
Can't go wrong with Nvidia Intel.
|
||
|
|
You didn't need the Mac Mini anymore.
|
||
|
|
No. So I said, hey, Mac Mini,
|
||
|
|
you have served your many years.
|
||
|
|
It's actually many years old.
|
||
|
|
Oh my God. It was like, it was a core solo.
|
||
|
|
Do you remember that you originally bought it
|
||
|
|
to replace my normal PC to use as your normal PC
|
||
|
|
and it was in the earliest days of Geekness?
|
||
|
|
You may remember an episode
|
||
|
|
that was me bitching for an hour.
|
||
|
|
Because I unplugged my old computer
|
||
|
|
which was my old RIT computer.
|
||
|
|
It was like a Thunderbird gig.
|
||
|
|
So this was probably in 2005, 2006.
|
||
|
|
I remember there's a picture of me sitting there
|
||
|
|
like holding it up, like amazed at how tiny it is.
|
||
|
|
And I installed it.
|
||
|
|
I think it was actually 6.7.
|
||
|
|
I set it up and I'm like, I still had that old 19-inch CRT.
|
||
|
|
Yeah.
|
||
|
|
And it was so shiny and so nice.
|
||
|
|
And then I opened up a garage band.
|
||
|
|
And I was like, let's podcast.
|
||
|
|
And then four hours later,
|
||
|
|
I'd plugged my old PC back in.
|
||
|
|
It wouldn't boot because it was broken.
|
||
|
|
That's the reason I replaced it.
|
||
|
|
And I re-did an entire episode from scratch
|
||
|
|
that was me bitching about how much I hate the Mac.
|
||
|
|
So this Mac mini, I said, well,
|
||
|
|
you have lived out your years
|
||
|
|
if we threw you out or just sold you or gave you away,
|
||
|
|
that would not be bad.
|
||
|
|
But you still work and you're a Mac.
|
||
|
|
The only Mac I have that's not a work computer
|
||
|
|
that I can't use for personal things.
|
||
|
|
I have some trouble with the optical drive.
|
||
|
|
Yeah.
|
||
|
|
So I brought it home to, I said, why not?
|
||
|
|
I'll try some development of iPhone app.
|
||
|
|
I'll make the simplest iPhone app
|
||
|
|
that's like just a fucking button or something.
|
||
|
|
Just to make an iPhone app.
|
||
|
|
Do you notice how the Apple logo at the top,
|
||
|
|
like that plastic is slightly yellowed?
|
||
|
|
Yeah. Yeah. So anyway, I brought it home
|
||
|
|
and I wanted to reinstall the snow leopard
|
||
|
|
to get it back to nothing.
|
||
|
|
And I couldn't because the optical drive was busted,
|
||
|
|
which I remembered. It works. Okay.
|
||
|
|
The watch out, we switched it to region two.
|
||
|
|
It doesn't matter because I'm not even going to use the optical drive.
|
||
|
|
I went and I used my work Mac
|
||
|
|
to create a snow leopard bootable USB stick,
|
||
|
|
which worked amazingly.
|
||
|
|
If you search on Google for directions, it'll tell you how.
|
||
|
|
It worked perfectly.
|
||
|
|
So I reinstalled the snow leopard from the USB stick.
|
||
|
|
Beautiful.
|
||
|
|
Then I said, well,
|
||
|
|
let me get the Xcode.
|
||
|
|
So there's a free Xcode in the App Store,
|
||
|
|
Xcode 4.1, which is the newest one.
|
||
|
|
You need Lion.
|
||
|
|
Alrighty. What? It's only 30 bucks.
|
||
|
|
Who gives a shit?
|
||
|
|
I'll buy your stupid Lion.
|
||
|
|
You cannot install Lion.
|
||
|
|
You have a Corsollo.
|
||
|
|
That's so sad.
|
||
|
|
Which is not 64 bits.
|
||
|
|
That's so sad.
|
||
|
|
Well, then, let me go get Xcode.
|
||
|
|
Because you remember, there was Xcode three point something,
|
||
|
|
which is on the snow leopard disc.
|
||
|
|
So I could have just installed that easily.
|
||
|
|
But before they came up with Xcode 4.1,
|
||
|
|
there was Xcode 4.0,
|
||
|
|
which is the one that they were charging like $10 for in the App Store.
|
||
|
|
Remember that?
|
||
|
|
When everyone was like, oh, they're charging for Xcode 10 bucks.
|
||
|
|
Now it's free again.
|
||
|
|
Well, I said, well, let me go get that one that they were charging 10 bucks for.
|
||
|
|
Right? But it wasn't in the App Store.
|
||
|
|
So I went to the Apple developer site.
|
||
|
|
And it wasn't there. The only ones they had were 4.1,
|
||
|
|
which is the one you need Lion for.
|
||
|
|
And three point something, which is the one I already had on the USB stick.
|
||
|
|
So I'm like, what happened to 4.0 point, whatever?
|
||
|
|
You need to pay $100 to be in the iOS developer program to get that.
|
||
|
|
Oh, my God.
|
||
|
|
And the iOS, you can't even,
|
||
|
|
if you can make, if you had Lion,
|
||
|
|
you could make all the iPhone apps you wanted.
|
||
|
|
But you can't load them onto your iPhone unless you pay the $100.
|
||
|
|
That sounds about right.
|
||
|
|
And you can't submit them to the App Store unless you pay $100.
|
||
|
|
That sounds about right.
|
||
|
|
You can only run them in a little emulator.
|
||
|
|
And by the way, the $100 is $100 a year, not $100 once.
|
||
|
|
It's $100 a year to be an iOS developer.
|
||
|
|
Still going to be an iOS developer?
|
||
|
|
Fuck no.
|
||
|
|
Given that Mac mini to the parents,
|
||
|
|
to use as an HTPC and to sync their iPods,
|
||
|
|
because right now,
|
||
|
|
I watch out, it won't full screen 1080p.
|
||
|
|
It doesn't matter, they're my parents.
|
||
|
|
They can't even watch Netflix on their TV right now.
|
||
|
|
Dude, you think they're going to be okay
|
||
|
|
with controls zooming in to YouTube videos like we were?
|
||
|
|
They're not going to watch YouTube videos.
|
||
|
|
They're just going to use like boxy and watch.
|
||
|
|
We're lucky if they watch use boxy to watch Netflix.
|
||
|
|
All right.
|
||
|
|
That'll be a huge improvement over what they're doing now.
|
||
|
|
Boxy didn't even work so well on that thing.
|
||
|
|
It's better than what they have now.
|
||
|
|
At the very least, right?
|
||
|
|
They don't even have like a,
|
||
|
|
they only have like a Ubuntu on a Dell laptop
|
||
|
|
that they use for everything.
|
||
|
|
And all they really do is use Firefox,
|
||
|
|
which is just fine for them.
|
||
|
|
But they have iPods that they can't sync.
|
||
|
|
So they're very leased.
|
||
|
|
They can just use it for iTunes and nothing else,
|
||
|
|
which it can definitely do.
|
||
|
|
Yeah.
|
||
|
|
On snow leopard.
|
||
|
|
I think in the long run, it should probably replace the,
|
||
|
|
like, I don't know, put it somewhere in their house.
|
||
|
|
It's like a little PC somewhere.
|
||
|
|
I don't know.
|
||
|
|
But yeah, just give it to them,
|
||
|
|
because now it's useless for me.
|
||
|
|
But since I need a mouse anyway,
|
||
|
|
but when I'm not in boxy,
|
||
|
|
yeah, I've been using boxy more though.
|
||
|
|
I've got hooked up to pretty much all the video files.
|
||
|
|
So, yeah, anytime I want to watch it,
|
||
|
|
any, the only time I don't use boxy
|
||
|
|
is pretty much to go to college humor.
|
||
|
|
Yep. I got to, I got to see what it would take
|
||
|
|
to set up like a boxy app thing
|
||
|
|
that would just do college humor.
|
||
|
|
You want to, oh, there is a college humor boxy app,
|
||
|
|
but it only watches college humor originals.
|
||
|
|
It doesn't do all the videos.
|
||
|
|
Come on, college humor. What the fuck?
|
||
|
|
Yeah, you can write a boxy app in Python if you want.
|
||
|
|
Really? That's what I was about to ask.
|
||
|
|
What does it take? Is it easy to do that?
|
||
|
|
Yeah, there's just instructions on the boxy website.
|
||
|
|
You can just write boxy apps. It's actually not that hard.
|
||
|
|
Dooly noted.
|
||
|
|
You know, you could definitely do it.
|
||
|
|
Your code might be ugly,
|
||
|
|
but you could definitely write a boxy app.
|
||
|
|
Yeah, because I need a Python project.
|
||
|
|
And while I like a web stuff
|
||
|
|
and like I was playing with Django,
|
||
|
|
and I really like Flask, I was playing with that.
|
||
|
|
It's really fun actually.
|
||
|
|
Flask is a lot simpler.
|
||
|
|
It's really fun because if I wanted to...
|
||
|
|
But the thing is what's going to happen is I've used Flask a bunch also.
|
||
|
|
You start using it and you're like,
|
||
|
|
and then you want to do something like logging in.
|
||
|
|
And it's like you can write a login authentication thing
|
||
|
|
or Django has authentication.
|
||
|
|
You need to do anything.
|
||
|
|
What I would use Flask for in my professional life,
|
||
|
|
in the operations is something like
|
||
|
|
making a little status page of stuff.
|
||
|
|
Absolutely perfect use of Flask.
|
||
|
|
Yep.
|
||
|
|
Like see what's running on the PC.
|
||
|
|
Anything like that.
|
||
|
|
But it's just fun too.
|
||
|
|
You just got to make sure you put the Apache and the WSGI in front of it properly.
|
||
|
|
Yep. You got to do that.
|
||
|
|
Yeah, I could show you how to do that.
|
||
|
|
I learned how to do that.
|
||
|
|
Because I had a lot of free time recently.
|
||
|
|
Because that way you can get things like the Apache Auths.
|
||
|
|
But as much as that.
|
||
|
|
Oh, that's something I got to tell you.
|
||
|
|
I'm not going to go into this very long.
|
||
|
|
You know, the Apache configs is always like allowed to not allow from all that business.
|
||
|
|
Yeah. Yeah.
|
||
|
|
You know how to master that.
|
||
|
|
Really? Yep.
|
||
|
|
It's not that hard.
|
||
|
|
I've completely mastered all that.
|
||
|
|
If I know what it all means and can do it perfectly.
|
||
|
|
Here's the love.
|
||
|
|
This is if you're like a four out of 10 in terms of guru mastery of Apache.
|
||
|
|
Do you know how to pretty much drop in make Apache authenticate against an active directory?
|
||
|
|
I saw the instructions.
|
||
|
|
Have you ever done it?
|
||
|
|
I'm just curious.
|
||
|
|
But I could.
|
||
|
|
And then I gave up what I did actually at work as I made it so that if you visit a page,
|
||
|
|
a site on a virtual host, actually, it gives you basic off,
|
||
|
|
which is, you know, use your name password against an HD password.
|
||
|
|
Yeah.
|
||
|
|
But if you're coming from a certain IP, no basic off.
|
||
|
|
You just get right in.
|
||
|
|
So if you're in the office, you can just visit the page.
|
||
|
|
But if you're outside the office, you got to log in to get.
|
||
|
|
I did the same thing. I had a thing that would control some fix sessions on this like fix gateway.
|
||
|
|
I wrote.
|
||
|
|
Right.
|
||
|
|
So anyway, the long they ended this opening bit is fuck you Steve Jobs.
|
||
|
|
You want people to make iOS apps.
|
||
|
|
You should let people develop them on Windows or whatever.
|
||
|
|
I might try this phone gap thing, which came out with 1.0 today,
|
||
|
|
which lets you make an app in HTML CSS and JavaScript that will then work on Android,
|
||
|
|
iPhone, Windows, phone, and fucking everything.
|
||
|
|
Yep.
|
||
|
|
So I'm going to try that out.
|
||
|
|
I thought, oh, we should make a Ignite's app.
|
||
|
|
Then it was like, what the fuck would it do?
|
||
|
|
Just nothing.
|
||
|
|
Yep.
|
||
|
|
If you want to do it,
|
||
|
|
just nothing.
|
||
|
|
If you want a Geek Nights app, what you can do is you can use your Twitter and soon your Facebook app on whatever device you have.
|
||
|
|
And just go to us in Twitter or Facebook.
|
||
|
|
Yep.
|
||
|
|
And that's basically the equivalent of the app is you'll get all the notifications about all our new shit.
|
||
|
|
Yep. And I'll save it for the men.
|
||
|
|
I got some better moments.
|
||
|
|
You can get it from recruit.com and your mobile browsing.
|
||
|
|
Let's talk about some tech because I had some other news I wanted to talk about.
|
||
|
|
But I noticed this article today.
|
||
|
|
It's funny.
|
||
|
|
It's really knowledge-based and not operational at all.
|
||
|
|
And also, you know, learning a lot.
|
||
|
|
I didn't look at the internet like once.
|
||
|
|
The whole time I was at work.
|
||
|
|
Well, you never look at the internet on your first day.
|
||
|
|
Well, warning sign.
|
||
|
|
That hospital.
|
||
|
|
Two hours looking at FARC because no one would like meet with me to tell me what to do.
|
||
|
|
Whoa.
|
||
|
|
So even you didn't even have a full day of HR papers to fill out?
|
||
|
|
No, actually today.
|
||
|
|
Five minutes of HR because it's an LLC.
|
||
|
|
No.
|
||
|
|
You know, I'm older now.
|
||
|
|
I'm smarter.
|
||
|
|
I know what to expect.
|
||
|
|
So I came in with my passport.
|
||
|
|
I canceled check.
|
||
|
|
You know, all the stuff.
|
||
|
|
I didn't do that.
|
||
|
|
You know, the last time I took a job.
|
||
|
|
I always forget to cancel check.
|
||
|
|
That's the one I forget.
|
||
|
|
Yeah, I remember it because I changed jobs.
|
||
|
|
This is, you know, you changed jobs a while ago.
|
||
|
|
I hadn't changed jobs in like four years.
|
||
|
|
I was waiting for this day.
|
||
|
|
I had a job.
|
||
|
|
The problems I had were I didn't know anyone's phone numbers for like the beneficiary stuff.
|
||
|
|
I didn't even know my mom's address.
|
||
|
|
I'd go like, look it up.
|
||
|
|
I was in the beneficiary such security numbers.
|
||
|
|
Yeah, I didn't need that yet because, well, anyway.
|
||
|
|
Anyway.
|
||
|
|
Yeah.
|
||
|
|
But so there's this article from today about some CMU researchers.
|
||
|
|
Carnegie Mellon, by the way, which is.
|
||
|
|
Yeah, we know what that is.
|
||
|
|
Some people might not.
|
||
|
|
Almost went there.
|
||
|
|
I run into people who I'm like, RIT.
|
||
|
|
RPI sucks.
|
||
|
|
But CMU is a good school and they, uh,
|
||
|
|
they came up with a pretty,
|
||
|
|
this is one of those things where like, hey,
|
||
|
|
let's see if we can do it.
|
||
|
|
And the fact that what they did is quickly and kind of half-assedly,
|
||
|
|
hack usually as they did worked as well as it did is kind of,
|
||
|
|
it's not scary to me because I knew.
|
||
|
|
But it might be scary to your mom.
|
||
|
|
With crappy off-the-shelf webcams and fairly simple data mining of like Facebook.
|
||
|
|
Okay.
|
||
|
|
They were able to make a system where if you point a webcam at a crowd,
|
||
|
|
and it sees people's faces,
|
||
|
|
it'll find their social security numbers.
|
||
|
|
Yeah, that could work because you get the face.
|
||
|
|
You match the face up with Facebook.
|
||
|
|
Then you get profile information.
|
||
|
|
You get the name, address, whatever.
|
||
|
|
And then you look, you basically get as much information as you can.
|
||
|
|
Now here's the kicker.
|
||
|
|
That's how you really get it.
|
||
|
|
Or starting with Flickr or Picasso.
|
||
|
|
They just did Facebook apparently to start.
|
||
|
|
And then you just, so you start with just Facebook.
|
||
|
|
Now here's the thing.
|
||
|
|
Here's the kicker.
|
||
|
|
And if enough things match, you can just,
|
||
|
|
on different sites you go to,
|
||
|
|
you can just keep filling out the profile until eventually,
|
||
|
|
you hit a site that has social security number,
|
||
|
|
and now you've got the whole profile.
|
||
|
|
Right, and that site is breaking the law.
|
||
|
|
Well, duh.
|
||
|
|
But here's the kicker.
|
||
|
|
The thing that made this probably a lot easier.
|
||
|
|
I didn't go into the depth of how they did it,
|
||
|
|
like on the low level.
|
||
|
|
But to this day,
|
||
|
|
four digits of my social security number are in all my old RITs, shit.
|
||
|
|
Yeah, a lot of times you could eat.
|
||
|
|
If you, I imagine that like if they could get 80% of the real full numbers,
|
||
|
|
they could have like a 99% of the last four digits.
|
||
|
|
And here's the funniest part.
|
||
|
|
60% of the students that they caught didn't have social security numbers.
|
||
|
|
So the faith was crazy successful,
|
||
|
|
despite the fact that the majority of the people they were testing
|
||
|
|
did not even have them.
|
||
|
|
So it got some crazy percentage of the people who did.
|
||
|
|
So what this illustrates is something we talk about.
|
||
|
|
Well, we have talked about a lot.
|
||
|
|
I think we've talked about it recently that there's a lot of publicly available,
|
||
|
|
but difficult to get information.
|
||
|
|
Like if you really want to stalk one person,
|
||
|
|
this is what PIs used to do.
|
||
|
|
A private investigator just gets publicly available information.
|
||
|
|
It's not a crime to stand on the sidewalk and look at someone's house.
|
||
|
|
Not a crime.
|
||
|
|
Just follow someone unobtrusively.
|
||
|
|
Not a crime to take a picture of stuff in public places.
|
||
|
|
Go to public records, free information access stuff.
|
||
|
|
Technology allows you to do that to everyone all the time.
|
||
|
|
It's zero cost.
|
||
|
|
Yep.
|
||
|
|
Almost zero cost.
|
||
|
|
Effective negligible cost.
|
||
|
|
Yes.
|
||
|
|
Couple this with the fact that there's so many.
|
||
|
|
Well, negligible cost per person.
|
||
|
|
To actually do it to everyone at once,
|
||
|
|
you do need to buy a bunch of computers.
|
||
|
|
Sure.
|
||
|
|
Your cost per person will be zero,
|
||
|
|
but the cost of a rack will be like a thousand, a couple thousand a month.
|
||
|
|
Like think of this, Google,
|
||
|
|
a lot of people are afraid of Google Maps and Google Street View.
|
||
|
|
That's the least of your worries.
|
||
|
|
I don't think Google should even be blurring out faces or anything.
|
||
|
|
I don't understand the license plate thing.
|
||
|
|
That's always really confuses me.
|
||
|
|
Yeah.
|
||
|
|
But that aside,
|
||
|
|
all Google did was economy of scale.
|
||
|
|
It had people basically do the equivalent of walk around and take a picture of everything.
|
||
|
|
Yep.
|
||
|
|
And they're actually, I wish they would do that.
|
||
|
|
I heard that a while ago, like months and months ago,
|
||
|
|
that they were going to go into stores and take pictures in the stores
|
||
|
|
if the stores let them.
|
||
|
|
That would be so awesome.
|
||
|
|
Right.
|
||
|
|
But I haven't actually seen that on any street views yet.
|
||
|
|
So I'm still been waiting for the like announced there.
|
||
|
|
They've added that.
|
||
|
|
Like if I could go and look in the bodega to see if they have, you know,
|
||
|
|
I'd go one step further.
|
||
|
|
Here's a way for Google to actually make some money.
|
||
|
|
Yep.
|
||
|
|
Like a product.
|
||
|
|
What they could sell is a service where if you have an event like a convention,
|
||
|
|
you can pay them to send someone,
|
||
|
|
probably just someone they hire like a contractor who uses their technology,
|
||
|
|
who goes into the event for, you know, repeatedly walking around,
|
||
|
|
gathering like these gigantic panoramas of your entire event.
|
||
|
|
Like Otacon.
|
||
|
|
Imagine a navigable street view map of the interior of Otacon,
|
||
|
|
like noon.
|
||
|
|
Okay.
|
||
|
|
That would be awesome.
|
||
|
|
Anyway, but anyway,
|
||
|
|
or like if they could temporarily update something on Google maps,
|
||
|
|
like embed a map of your convention that weekend,
|
||
|
|
and then when the convention is over, remove it or like temporarily,
|
||
|
|
if you're having a concert at a football stadium,
|
||
|
|
which means the seating chart is going to change temporarily,
|
||
|
|
embed the seating chart into Google maps on the stadium
|
||
|
|
for that weekend during the concert.
|
||
|
|
And then when the concert's over, switch the seat map back
|
||
|
|
to the original football playing seat.
|
||
|
|
Couple that even further.
|
||
|
|
You couldn't use GPS for this, obviously.
|
||
|
|
But you could use either a creatively named access points
|
||
|
|
that were set up ahead of time by Google,
|
||
|
|
or some other like similar technology to make a local only location system
|
||
|
|
doesn't even have to be that precise that gives you a map of the convention
|
||
|
|
and a UR hair in the convention,
|
||
|
|
even though it's in some ungodly bunker like the Javits.
|
||
|
|
Anyway.
|
||
|
|
So I got a news.
|
||
|
|
I got to finish my point here.
|
||
|
|
I often explain to people who don't understand technology
|
||
|
|
that they cannot have privacy,
|
||
|
|
because even if we make laws to protect them,
|
||
|
|
hackers can trivially aggregate extent information
|
||
|
|
that cannot by law be easily hidden.
|
||
|
|
And if you did hide all the information,
|
||
|
|
you basically wouldn't be, you might as well not use computers.
|
||
|
|
Yep, you'd have too much, like there'd be no more freedom of speech.
|
||
|
|
Imagine if you couldn't tell another person
|
||
|
|
that you saw a certain person on the street wearing a red cap.
|
||
|
|
That's all Google does.
|
||
|
|
Joe was wearing a red cap and he was standing in front of scandals.
|
||
|
|
Huh.
|
||
|
|
Huh.
|
||
|
|
All right.
|
||
|
|
I always try to tell people you can't get it.
|
||
|
|
You can't get it.
|
||
|
|
Give up.
|
||
|
|
You know, we've got a managed privacy before it's too late,
|
||
|
|
but we can't keep privacy as we currently know it.
|
||
|
|
No one believes me.
|
||
|
|
If you ever run into an old person who doesn't believe
|
||
|
|
that you can just aggregate information like this,
|
||
|
|
show them this article and scare the crap out of them.
|
||
|
|
They'll just get more scared and do more reactionary stupidity.
|
||
|
|
Maybe.
|
||
|
|
Anyway, so Adobe did something today that slightly impressed me
|
||
|
|
if that's possible.
|
||
|
|
You know, I render.
|
||
|
|
You're going to complain about your premiere codec support.
|
||
|
|
I'm going to one complaint.
|
||
|
|
I'm going to complain.
|
||
|
|
You know, I recently put up an hour long panel,
|
||
|
|
game mechanics and mechanisms.
|
||
|
|
I actually watched it today.
|
||
|
|
It wasn't that bad, but I have, I keep saying right all the time.
|
||
|
|
Well, meanwhile, look at me.
|
||
|
|
Whenever I'm talking, I'm like scooting back and forth,
|
||
|
|
like scoot to the left.
|
||
|
|
I also scoot, but you scoot forward to back.
|
||
|
|
A worse problem than scooting is me going right, right?
|
||
|
|
Right.
|
||
|
|
Right.
|
||
|
|
I got to work on the right.
|
||
|
|
Well, what I do is when you're talking,
|
||
|
|
I keep touching my nose.
|
||
|
|
That's why I keep zooming in on you.
|
||
|
|
What's on your nose that you're touching?
|
||
|
|
I don't know.
|
||
|
|
I just keep like poking at it, pushing my glasses around.
|
||
|
|
Oh, you got glasses.
|
||
|
|
Yeah, that's a situation.
|
||
|
|
And I think it's because I used to always fiddle with my mustache,
|
||
|
|
but there's no mustache there.
|
||
|
|
So I got to fiddle with something.
|
||
|
|
Someone's got to invent something about something for glasses
|
||
|
|
that's different in the nose area.
|
||
|
|
I don't know what.
|
||
|
|
Lazy.
|
||
|
|
I guess they already have pads of gel in them, right?
|
||
|
|
Lazy.
|
||
|
|
I mean, how could you do it anyway?
|
||
|
|
Anyway.
|
||
|
|
So Adobe, they came out with a beta of this product called Edge.
|
||
|
|
It's totally free.
|
||
|
|
And actually, it's pretty fascinating.
|
||
|
|
I opened it up, didn't know how to use it,
|
||
|
|
and just started using it.
|
||
|
|
Right.
|
||
|
|
And what it is an animation tool,
|
||
|
|
and you know, it does sort of like that in-betweening
|
||
|
|
that Flash does.
|
||
|
|
You go to the timeline, you said it's zero seconds,
|
||
|
|
you put something in the top left corner.
|
||
|
|
You go to five seconds, you move it to the bottom right corner,
|
||
|
|
and then you press play, and it'll show you it's sliding
|
||
|
|
from the top left corner to the bottom right corner
|
||
|
|
over the course of the five seconds, right?
|
||
|
|
Beautiful, easy to use animation tool, totally awesome.
|
||
|
|
That'll actually really useful for making content for panels.
|
||
|
|
Well, actually, it can only, at the present time,
|
||
|
|
it can only do rectangles, rounded rectangles, and text.
|
||
|
|
Uh, okay.
|
||
|
|
Which is like, uh...
|
||
|
|
Wait a minute, you know what this reminds me of?
|
||
|
|
I'm going to take you way back.
|
||
|
|
It's a free beta that only works for 150 days.
|
||
|
|
You know how there's Flash and Shockwave and all this stuff?
|
||
|
|
Way back when I bought a multi-media...
|
||
|
|
Well, my parents bought a multi-media PC.
|
||
|
|
It came with a product called Macromedia.
|
||
|
|
Remember Macromedia?
|
||
|
|
Action.
|
||
|
|
Okay.
|
||
|
|
You know what that was?
|
||
|
|
This.
|
||
|
|
No, it wasn't.
|
||
|
|
It could do things like this.
|
||
|
|
No, you're not finishing, because Flash can do all this animation stuff.
|
||
|
|
Yeah.
|
||
|
|
But what this does specifically is not so much about the animation stuff
|
||
|
|
that it does, which Flash already does.
|
||
|
|
It is about its export.
|
||
|
|
It only exports to HTML5.
|
||
|
|
Oh.
|
||
|
|
That's all it does.
|
||
|
|
Wow.
|
||
|
|
So you go...
|
||
|
|
You can save it as HTML5.
|
||
|
|
It gives you CSS, JS, and a div.
|
||
|
|
And you put that div in a web page with those CSS and JS included.
|
||
|
|
And there's your animation.
|
||
|
|
Ooh.
|
||
|
|
If they added support for audio, you could...
|
||
|
|
And Vector Arts.
|
||
|
|
You could make a Homestar Runner, and you'd be all set.
|
||
|
|
But I don't think it does Vector Arts.
|
||
|
|
I don't think they plan to do that.
|
||
|
|
So I think what it's going to end up being is just text and boxes and images.
|
||
|
|
So you basically would make web pages.
|
||
|
|
I have a feeling it'll go a little bit beyond that.
|
||
|
|
It's going to be web pages with animations in them that are all smooth and fancy as of right now.
|
||
|
|
That's pretty chill.
|
||
|
|
It's actually the user interface was really good.
|
||
|
|
It didn't crash.
|
||
|
|
It was actually pretty fast for Mac and PC.
|
||
|
|
It's free for 150 days.
|
||
|
|
Some of the stuff is one of these...
|
||
|
|
I looked at all the CSS and JS files it makes.
|
||
|
|
So the files that it makes that are part of your project have no license.
|
||
|
|
So I assume you own them.
|
||
|
|
It does have two jQuery files.
|
||
|
|
Those are open source.
|
||
|
|
And two JS files, one of which is BSD licensed.
|
||
|
|
And one of which you were free to distribute, but not to modify.
|
||
|
|
So...
|
||
|
|
So one of the JS files is BSD, and one of them was in.
|
||
|
|
But it's like...
|
||
|
|
It's a Adobe product that outputs something that is almost entirely open source.
|
||
|
|
As opposed to some locked up SWS.
|
||
|
|
What the hell?
|
||
|
|
They must have gotten like a really good intern or something.
|
||
|
|
I don't know what the fuck they're smoking.
|
||
|
|
And it works.
|
||
|
|
And it does animate.
|
||
|
|
So this is free for 150 days.
|
||
|
|
Get it now.
|
||
|
|
And maybe make something awesome with it before it becomes $500.
|
||
|
|
So Adobe, when you get to support video formats in premiere.
|
||
|
|
Yeah, I don't know.
|
||
|
|
When these...
|
||
|
|
Got it.
|
||
|
|
Let's move on.
|
||
|
|
So things of the day.
|
||
|
|
What do you got for me, Scott?
|
||
|
|
It's a really good video.
|
||
|
|
You know, those old videos like, let's go out to the...
|
||
|
|
Lobbies.
|
||
|
|
Let's go out to the...
|
||
|
|
Lobbies.
|
||
|
|
And it was like the dancing popcorn and the dancing...
|
||
|
|
I saw one of those that was not ironic at the drive-in when I was a kid.
|
||
|
|
Oh, wow.
|
||
|
|
It's just that little cartoon videos that are sort of famous watching the movie theater
|
||
|
|
and they're telling you to go out to the concessions to get popcorn, right?
|
||
|
|
And to make you thirsty for Pepsi or some shit.
|
||
|
|
This is just one of those.
|
||
|
|
You should watch it.
|
||
|
|
Well, this isn't really one of those.
|
||
|
|
It's sort of a take on one of those, right?
|
||
|
|
That is pretty interesting and very professionally well-made by MK12.
|
||
|
|
It's called Follow the Sun.
|
||
|
|
Make sure you watch the whole thing.
|
||
|
|
Yeah, don't stop.
|
||
|
|
You might get bored.
|
||
|
|
It's like three or four minutes long.
|
||
|
|
I know you have short internet attention spans.
|
||
|
|
But this is one of those ones where it builds.
|
||
|
|
Trust me, it builds.
|
||
|
|
And it's got sort of a catchy tune.
|
||
|
|
Like, let's open the door to the sniper.
|
||
|
|
Let's open the door to the sniper.
|
||
|
|
Right?
|
||
|
|
So just keep watching it all the way to the end.
|
||
|
|
I don't know if it's entirely safe for work.
|
||
|
|
That is not safe for work.
|
||
|
|
But just watch the whole thing.
|
||
|
|
Trust me.
|
||
|
|
This is great.
|
||
|
|
It's not...
|
||
|
|
It's no Teenage Mutant Ninja Turtles.
|
||
|
|
But it has a similar...
|
||
|
|
You'll see.
|
||
|
|
It's subtle.
|
||
|
|
And then unsuttle.
|
||
|
|
Yeah, watch it.
|
||
|
|
It's great.
|
||
|
|
I saw this a while ago.
|
||
|
|
And I forgot about it.
|
||
|
|
Someone makes it with ponies.
|
||
|
|
Because ponies go well with everything.
|
||
|
|
That'd be a pretty good mix, actually.
|
||
|
|
Kind of like that to our ringyu mix.
|
||
|
|
So I got something really simple.
|
||
|
|
This is just the Batman equation for any math nerd
|
||
|
|
who's never seen it.
|
||
|
|
Wait, the Batman equation, which is...
|
||
|
|
What is it?
|
||
|
|
Holy plus something equals...
|
||
|
|
Goddamn Batman.
|
||
|
|
No.
|
||
|
|
That would be a...
|
||
|
|
Kid...
|
||
|
|
Oh, it's the Robin Equator.
|
||
|
|
Kid minus two ex-parents.
|
||
|
|
Plus Joker.
|
||
|
|
Anyway.
|
||
|
|
Anyway.
|
||
|
|
So this is just a fairly large equation that you can graph.
|
||
|
|
It's a fairly...
|
||
|
|
It's relatively simple to understand, though.
|
||
|
|
I defy anyone who is not insane to look at it
|
||
|
|
and figure out what it graphs.
|
||
|
|
Just from looking at it without a lot of...
|
||
|
|
Well, not really know.
|
||
|
|
It's the Batman equation.
|
||
|
|
Yeah, it's the Batman equation.
|
||
|
|
It turns into Batman and it's kind of neat.
|
||
|
|
So basically you type it into your graph and calculator
|
||
|
|
and the Batlow go appears.
|
||
|
|
Yeah, this is the kind of thing
|
||
|
|
that you should have on hand to impress the girls
|
||
|
|
at high school calculus class.
|
||
|
|
Oh, yeah.
|
||
|
|
Yeah.
|
||
|
|
So, met a moment.
|
||
|
|
Well, I mean, it's not going to impress any girls.
|
||
|
|
But on the off-chance.
|
||
|
|
On the off-chance that it impresses a girl,
|
||
|
|
that's the one, don't let her go.
|
||
|
|
I want kids, the Rainbow Dash equation.
|
||
|
|
It's not going to happen.
|
||
|
|
Might happen.
|
||
|
|
So the met a moment.
|
||
|
|
Met a moment.
|
||
|
|
Met a musical.
|
||
|
|
Book club book is.
|
||
|
|
Is.
|
||
|
|
All right.
|
||
|
|
The ear, the eye, and the arm.
|
||
|
|
Yeah.
|
||
|
|
Yes.
|
||
|
|
Rimslas uploaded the book club book episode
|
||
|
|
but it's already recorded.
|
||
|
|
Yes.
|
||
|
|
It'll be up as soon as I have time.
|
||
|
|
Been busy.
|
||
|
|
Yeah.
|
||
|
|
So you might actually hear this before
|
||
|
|
hearing the Foundation episode
|
||
|
|
but we recorded it.
|
||
|
|
Yes.
|
||
|
|
It was done.
|
||
|
|
Other metas.
|
||
|
|
We have a PAX coming soon.
|
||
|
|
You can't get tickets.
|
||
|
|
Yup.
|
||
|
|
New York Comic Con is coming after that.
|
||
|
|
Magfest is sometime next year after that.
|
||
|
|
Yup.
|
||
|
|
We'll be in Magfest.
|
||
|
|
We'll be in all three of those.
|
||
|
|
Gary.
|
||
|
|
Yeah.
|
||
|
|
We are doing on Saturday at noon in
|
||
|
|
I forget which theater.
|
||
|
|
I think it's the big one.
|
||
|
|
We're doing discover the Forgotten Masters brand new panel.
|
||
|
|
Don't even know what it's going to be because I'm written to you.
|
||
|
|
No, we haven't.
|
||
|
|
But it involves an Atari 2600.
|
||
|
|
Yeah.
|
||
|
|
All right.
|
||
|
|
Oh, we have a fancy new Facebook page.
|
||
|
|
Yeah.
|
||
|
|
You should like us on Facebook.
|
||
|
|
Right now, I'm manually cross-posting things to Facebook.
|
||
|
|
But I've already coded the site to automatically cross-post things
|
||
|
|
to Facebook.
|
||
|
|
And as soon as I launch the new updated site of front recruit.com,
|
||
|
|
it will automatically post everything into Facebook.
|
||
|
|
So you won't have to come to front.
|
||
|
|
I've given up on trying to get people to come to the site at this point.
|
||
|
|
It's pretty much like the site is basically for at this point.
|
||
|
|
One, I will occasionally post like a link to all the slides from panelists.
|
||
|
|
It's like at this point, it's like, listen, come and find our shit
|
||
|
|
whatever way is most convenient for you.
|
||
|
|
If you're a Facebook person, follow the Facebook page.
|
||
|
|
If you're a Twitter person, follow the Twitter account.
|
||
|
|
Do whatever makes you happy.
|
||
|
|
Give up.
|
||
|
|
If you like our website, come to that too.
|
||
|
|
I tell people, like, yeah, geek nights.
|
||
|
|
And they're like, where's your website?
|
||
|
|
I'm like, just Google Geek Nights.
|
||
|
|
It's the first thing.
|
||
|
|
It can't be that hard.
|
||
|
|
Let me make sure it is.
|
||
|
|
It is the first thing.
|
||
|
|
It sure is.
|
||
|
|
We've been doing this since 2005.
|
||
|
|
Let me see if it is.
|
||
|
|
If you use Geek Nights as two words and make a mistake.
|
||
|
|
Yep, still number one.
|
||
|
|
Of course.
|
||
|
|
But we have, you know, we put up our,
|
||
|
|
one of our packs lectures from Pax East last year on YouTube
|
||
|
|
in the Geek Nights Room YouTube channel.
|
||
|
|
I have now uploaded the second of our three panels,
|
||
|
|
a second running of game mechanics and mechanism design.
|
||
|
|
I thought it wasn't as good as the first time we did it,
|
||
|
|
but I watched the video today and it was all right,
|
||
|
|
except for me saying right.
|
||
|
|
Yeah, we ran it way better the first time we ran it.
|
||
|
|
But I was kind of tired when we ran it at Pax East 2011.
|
||
|
|
But the third panel, how to win a game,
|
||
|
|
we'll be up as soon as I have time to edit it together.
|
||
|
|
Oh, I forgot we even had a third panel.
|
||
|
|
Yeah, and keep your eye out,
|
||
|
|
because I am rapidly going to add a lot of video content
|
||
|
|
for Geek Nights.
|
||
|
|
Also, you pig fuckers.
|
||
|
|
You know what the first question we got on game mechanics
|
||
|
|
and mechanism design to YouTube was?
|
||
|
|
Guys, where's Radio Free Equestria?
|
||
|
|
I mean, we made all these pilots.
|
||
|
|
It's not a regular show.
|
||
|
|
Yeah.
|
||
|
|
We made three pilots.
|
||
|
|
It's coming.
|
||
|
|
Jesus, you kids.
|
||
|
|
The regular show is for later, the pilot.
|
||
|
|
I love Pilotopony, but Jesus.
|
||
|
|
Really?
|
||
|
|
Jesus.
|
||
|
|
Maybe when a new season comes.
|
||
|
|
Yeah.
|
||
|
|
Just when it comes.
|
||
|
|
Right.
|
||
|
|
Video's hard.
|
||
|
|
Any other meta, merch, anything?
|
||
|
|
Oh, hold off on merch.
|
||
|
|
If there's other meta that we forgot,
|
||
|
|
worst web comic contest.
|
||
|
|
Yes, we have the worst web comic contest.
|
||
|
|
Now, if you're going to go to our site,
|
||
|
|
go to the news section, find the post about the worst web comic contest,
|
||
|
|
and there's going to be a link to a forum to fill out.
|
||
|
|
Don't just post in the forum thread for them, right?
|
||
|
|
Your suggestion.
|
||
|
|
You actually have to go, there's a Google Docs form
|
||
|
|
to fill out your submission for the worst web comic contest.
|
||
|
|
That is the only place to officially submit
|
||
|
|
where you can win a prize and be considered.
|
||
|
|
Along those lines.
|
||
|
|
Stop submitting control all to lead.
|
||
|
|
We already said that.
|
||
|
|
Yeah, but I got it.
|
||
|
|
Okay.
|
||
|
|
And I got it.
|
||
|
|
Preface is this one last little thing.
|
||
|
|
You, if you submit an entry to this,
|
||
|
|
you might think this is a little bit of a mean-spirited contest.
|
||
|
|
Yep.
|
||
|
|
Yep.
|
||
|
|
So you, if you don't actually create something are worse
|
||
|
|
than whatever it is that you are submitting,
|
||
|
|
whoever created that is better than you as a human.
|
||
|
|
So feel bad.
|
||
|
|
Making something shitty is better than making
|
||
|
|
a really poorly drawn furry porn fan fake
|
||
|
|
where you're the otter in Star Trek.
|
||
|
|
That guy is better than you.
|
||
|
|
Is better than someone who makes nothing.
|
||
|
|
Unless, I mean, if Mike and Jerry, you know,
|
||
|
|
Penny Arcade, if they submit a comic, yeah,
|
||
|
|
yeah, they can call something shitty.
|
||
|
|
They can get away with it.
|
||
|
|
They can just whatever they want.
|
||
|
|
All right.
|
||
|
|
So we already did a show on version control systems.
|
||
|
|
Yep.
|
||
|
|
And we have not done one on change management,
|
||
|
|
but that's more of-
|
||
|
|
It's almost a more like a beast management.
|
||
|
|
That's the same thing.
|
||
|
|
Yeah, anyway.
|
||
|
|
But, you know, Git is one of the few hot new technologies
|
||
|
|
that I am extremely familiar with.
|
||
|
|
Scott, I would argue, knows more about it than most people
|
||
|
|
at this point.
|
||
|
|
Well, I think the thing was,
|
||
|
|
it just because at my last job, you know,
|
||
|
|
I was working with a guy who was pretty linuxy
|
||
|
|
and he started using Git like slightly before it was cool.
|
||
|
|
So I started using it slightly before it was cool.
|
||
|
|
Yeah.
|
||
|
|
So it was like, hey, Git.
|
||
|
|
And I was like, what do you mean?
|
||
|
|
I use RCS.
|
||
|
|
I was in the nub stage of Git
|
||
|
|
when other people didn't know it existed,
|
||
|
|
except for really hardcore linux people.
|
||
|
|
And then when it became popular,
|
||
|
|
I had already sort of mastered the user parts.
|
||
|
|
And by now, I've mastered the underneath parts
|
||
|
|
which most people don't even know about.
|
||
|
|
Yep.
|
||
|
|
I mean, I'm currently a nub at Git.
|
||
|
|
I mean, I have a GitHub account
|
||
|
|
that I haven't logged into in a while.
|
||
|
|
And yeah.
|
||
|
|
So the thing with Git is that it is a virgin control system,
|
||
|
|
just like subversion or whatever,
|
||
|
|
except it is architecturally different
|
||
|
|
in that it is distributed, right?
|
||
|
|
There is no canonical.
|
||
|
|
This repository is the repository.
|
||
|
|
Instead, every repository is the full repository.
|
||
|
|
So you have it on your computer.
|
||
|
|
You clone.
|
||
|
|
You don't check out.
|
||
|
|
You clone.
|
||
|
|
You have the whole thing,
|
||
|
|
the whole history of the project on your computer.
|
||
|
|
You edit that history.
|
||
|
|
And then when you share commits with other people
|
||
|
|
in a distributed mesh fashion.
|
||
|
|
And that, you know, that way anyone can do as they please.
|
||
|
|
Right?
|
||
|
|
And this has many benefits and, you know, drawbacks.
|
||
|
|
But mostly benefits.
|
||
|
|
Once you understand it and use it properly,
|
||
|
|
you'll see that subversion
|
||
|
|
and other centralized virgin control systems are just awful.
|
||
|
|
There is some competitors.
|
||
|
|
The chief among them is Mercurial,
|
||
|
|
which is written entirely in Python.
|
||
|
|
You know, this all starts to arguments to be made
|
||
|
|
as one better is one worse.
|
||
|
|
The general consensus Mercuria is a little easier to use.
|
||
|
|
Git has slightly better performance.
|
||
|
|
They have a lot of feature parity.
|
||
|
|
It doesn't really matter that much.
|
||
|
|
But it seems to get his one, you know,
|
||
|
|
GitHub has destroyed Bitbucket.
|
||
|
|
So, I mean, Bitbucket still exists.
|
||
|
|
But GitHub is definitely winning.
|
||
|
|
GitHub is sort of the way of the future.
|
||
|
|
If you're not using Git now,
|
||
|
|
you should learn it.
|
||
|
|
Because if you're doing anything with software,
|
||
|
|
that's where it's at.
|
||
|
|
And such.
|
||
|
|
All right.
|
||
|
|
So, I mean, what's the, like,
|
||
|
|
what are the primary benefits for getting the architecture
|
||
|
|
that I doubt many of our listeners will know much about?
|
||
|
|
Well, the primary benefits of this distributed...
|
||
|
|
If you can tell, I don't know a lot about Git.
|
||
|
|
Well, do I mean, I could start from like the bottom up
|
||
|
|
if you want, but I might be a little boring.
|
||
|
|
No, let's, uh...
|
||
|
|
Maybe later, let's start.
|
||
|
|
You know what?
|
||
|
|
The listeners always want.
|
||
|
|
They're always like, well, the listener always wants us
|
||
|
|
to go in depth at our own level
|
||
|
|
and to not like pull back from our level of technological prowess.
|
||
|
|
So, here's how Git works.
|
||
|
|
Let's talk about this the way we talk about this stuff.
|
||
|
|
Okay.
|
||
|
|
So, here's how Git works.
|
||
|
|
You have a file.
|
||
|
|
Yep.
|
||
|
|
You hash the file with SHA.
|
||
|
|
Very strong hash.
|
||
|
|
Very unique.
|
||
|
|
Right?
|
||
|
|
Yep.
|
||
|
|
So, what you do is you take a file,
|
||
|
|
you hash it,
|
||
|
|
you create what's called a blob and get terminology.
|
||
|
|
Right?
|
||
|
|
So, that blob contains the contents of the file,
|
||
|
|
compressed, and whatever.
|
||
|
|
Right?
|
||
|
|
And the name of that blob will be the hash, the SHA one hash.
|
||
|
|
Uh-huh.
|
||
|
|
You update the hat, you update the file,
|
||
|
|
you update the blob.
|
||
|
|
It's that simple.
|
||
|
|
Right?
|
||
|
|
So, you create a new repository in that file,
|
||
|
|
in that repository, you have some files,
|
||
|
|
you add them all to what's known as the staging area,
|
||
|
|
the index.
|
||
|
|
Right?
|
||
|
|
So, basically, this advantage number one of Git is the index.
|
||
|
|
Most, uh, you know, things like subversion,
|
||
|
|
you edit files and you commit,
|
||
|
|
and it commits all your changes,
|
||
|
|
no matter what files they are.
|
||
|
|
Right?
|
||
|
|
So, if you want to say,
|
||
|
|
want to have two files that are edited,
|
||
|
|
and you want to commit one file and not the other,
|
||
|
|
you have to actually roll one of the files back
|
||
|
|
commit and then roll the file forward.
|
||
|
|
Right?
|
||
|
|
It's sort of annoying.
|
||
|
|
Uh, in Git, you actually add your changes to the staging area,
|
||
|
|
uh, the index,
|
||
|
|
and then when you commit,
|
||
|
|
the index is what is committed.
|
||
|
|
Right?
|
||
|
|
So, you can actually,
|
||
|
|
if you do an interactive add,
|
||
|
|
you can actually add part of a file.
|
||
|
|
So, if I edit a file and I change two functions,
|
||
|
|
I can actually add one of those changes
|
||
|
|
to the one of the functions to be committed,
|
||
|
|
and let the other one just stay as a dirty chain.
|
||
|
|
Wow.
|
||
|
|
It's pretty crazy.
|
||
|
|
So, you stage and then you commit.
|
||
|
|
Right?
|
||
|
|
So, that's the first advantage of Git,
|
||
|
|
just from the user perspective, right?
|
||
|
|
So, anyway, under the hood,
|
||
|
|
right, it's making blobs.
|
||
|
|
So, everything is uniquely hashed,
|
||
|
|
which means that whatever you put in to Git,
|
||
|
|
is what you're going to get out.
|
||
|
|
A lot of other version control systems
|
||
|
|
don't actually guarantee that what you put in
|
||
|
|
is what you get out.
|
||
|
|
With Git, whatever you put in,
|
||
|
|
guaranteed to get out,
|
||
|
|
because if the hash don't match,
|
||
|
|
ain't going to fly.
|
||
|
|
Right?
|
||
|
|
So, a commit in Git is what's known as a tree.
|
||
|
|
It's a tree.
|
||
|
|
And that tree is a list.
|
||
|
|
And the list is a list of trees and blobs.
|
||
|
|
That's all it is.
|
||
|
|
It's trees and blobs.
|
||
|
|
So, a tree would be the top-level of your repository,
|
||
|
|
which would be your commit.
|
||
|
|
And then underneath that would be trees,
|
||
|
|
which would be the sub-directories,
|
||
|
|
and in those sub-directories would be blobs.
|
||
|
|
And when you commit,
|
||
|
|
it just creates a new tree
|
||
|
|
with the new blobs and the new trees in it.
|
||
|
|
So, when I've pulled out, like I've brought down
|
||
|
|
the repository or whatever,
|
||
|
|
I've basically got the entire,
|
||
|
|
like everything in the project just local.
|
||
|
|
You have the entire history of every commit
|
||
|
|
that has ever been.
|
||
|
|
So, I could step back through to like
|
||
|
|
the hello world of the projects.
|
||
|
|
You absolutely could.
|
||
|
|
All right.
|
||
|
|
You wouldn't even have to step.
|
||
|
|
You would just reset to it.
|
||
|
|
Does this, I mean, does this cause
|
||
|
|
disk space issues ever for people?
|
||
|
|
It does.
|
||
|
|
I mean, it is highly compressed
|
||
|
|
and incredibly efficient.
|
||
|
|
Let me just, does anyone use Git
|
||
|
|
for the management of things that aren't code,
|
||
|
|
like large images or video
|
||
|
|
or anything like that?
|
||
|
|
Oh, it's actually incredibly efficient
|
||
|
|
at doing those things.
|
||
|
|
I mean, you are going to obviously
|
||
|
|
have to use a lot of disk space.
|
||
|
|
Yeah, but if I'm doing a video,
|
||
|
|
I have to use a lot of disk space.
|
||
|
|
But it is anywhere.
|
||
|
|
It is better at that
|
||
|
|
than the other Virgin control systems.
|
||
|
|
Well, I found it.
|
||
|
|
It will not crash under the weight.
|
||
|
|
It was originally Git was originally
|
||
|
|
going to be a file system.
|
||
|
|
So, you know, if you have 10...
|
||
|
|
I did not know that.
|
||
|
|
If you have 10 one gig video files,
|
||
|
|
sure, it's going to be a 10 gig download.
|
||
|
|
Yeah, but that's expected.
|
||
|
|
It's going to be 10 gigs if I use a version.
|
||
|
|
Yeah, but switching between versions
|
||
|
|
is like basically instantaneous.
|
||
|
|
Once you've downloaded it, you're all set.
|
||
|
|
The performance of Git is off the chart.
|
||
|
|
Well, considering that local disk space
|
||
|
|
is effectively infinite in the modern world, I mean.
|
||
|
|
Git is actually really useful
|
||
|
|
for things other than code, just because it's so good.
|
||
|
|
Like, if you go to GitHub,
|
||
|
|
all the wikis on GitHub are actually powered by Git.
|
||
|
|
And I'm actually, I've actually figured out a way
|
||
|
|
to do wiki show notes on our site,
|
||
|
|
powered by Git.
|
||
|
|
Ooh, we kind of need that.
|
||
|
|
It's pretty crazy when you once you see how it works.
|
||
|
|
It's intense.
|
||
|
|
All right, so where was I?
|
||
|
|
You're like, oh, yeah, can Git be used for you?
|
||
|
|
Yeah, you can use Git for anything you want a version.
|
||
|
|
Writing a book gets a great idea.
|
||
|
|
Anything that you need to basically have
|
||
|
|
another level of undoing in versions on Git
|
||
|
|
is a great way to go.
|
||
|
|
So, you make these commits.
|
||
|
|
And every commit is a tree.
|
||
|
|
And every commit has a hash of its own.
|
||
|
|
Right?
|
||
|
|
So, that's an easy way to identify a commit
|
||
|
|
is by its hash.
|
||
|
|
And a commit also has one other thing,
|
||
|
|
which is a pointer to the previous commit in the history.
|
||
|
|
Right?
|
||
|
|
So, commit number one points at nothing,
|
||
|
|
but commit number two points at commit number one.
|
||
|
|
And every commit is a full tree,
|
||
|
|
full of trees and blobs.
|
||
|
|
So, the main thing here that this allows you to do
|
||
|
|
that other version control systems don't allow you to do
|
||
|
|
is easy branching.
|
||
|
|
Right?
|
||
|
|
In subversion, making a branch is a big deal.
|
||
|
|
You've got one shared repository.
|
||
|
|
If you make a branch,
|
||
|
|
that's a branch for everyone, not just you.
|
||
|
|
Right?
|
||
|
|
And it's a big deal to make a branch.
|
||
|
|
And it's a merger branch.
|
||
|
|
Forget it.
|
||
|
|
Kill yourself.
|
||
|
|
Right?
|
||
|
|
I've never done it.
|
||
|
|
I've given up.
|
||
|
|
It's a different project.
|
||
|
|
Our people who have mastered it and can get it done
|
||
|
|
with a minimum of pain.
|
||
|
|
But if you do Git properly,
|
||
|
|
you can always avoid the pain.
|
||
|
|
Right?
|
||
|
|
So, you can just branch like a nut job.
|
||
|
|
Right?
|
||
|
|
You can just be like,
|
||
|
|
oh, yeah, I'll make a branch over here and a branch over there.
|
||
|
|
And what I tend to do,
|
||
|
|
which is a good best practice,
|
||
|
|
and that's another thing people can get confused about Git,
|
||
|
|
is that other version control systems,
|
||
|
|
because they're so limited,
|
||
|
|
there's only one workflow you can follow
|
||
|
|
if you want to use them.
|
||
|
|
But Git lets you do anything,
|
||
|
|
which means it's like,
|
||
|
|
what workflow do I have?
|
||
|
|
You have to make up a workflow,
|
||
|
|
and you have to enforce that workflow
|
||
|
|
with just people and talking to each other.
|
||
|
|
I imagine that's very difficult for many people.
|
||
|
|
There's no technological enforcement of the workflow,
|
||
|
|
but there are certain practices
|
||
|
|
that will sort of grease the wheels.
|
||
|
|
So, it's like you have to simultaneously know
|
||
|
|
the path to follow to grease the wheels
|
||
|
|
to have less conflicts and merge problems,
|
||
|
|
while simultaneously getting people to behave in a certain way
|
||
|
|
so that, you know, everything runs smoothly.
|
||
|
|
It is, however, I think, in the long run,
|
||
|
|
a more fruitful path than, say,
|
||
|
|
like, ticketing systems are an example of this,
|
||
|
|
where you need to enforce certain workflows.
|
||
|
|
And the only way people ever do it
|
||
|
|
is to make rules like,
|
||
|
|
a ticket cannot be set to a resolved state
|
||
|
|
unless x, y, and z have already happened to the ticket.
|
||
|
|
You cannot set it to a sign,
|
||
|
|
unless it actually has no signy,
|
||
|
|
because the thing is, once you go down that path,
|
||
|
|
you can't trust people for shit,
|
||
|
|
because if there is any way to do the thing
|
||
|
|
you don't want them to do,
|
||
|
|
they will do it and in their mind,
|
||
|
|
it's okay, because they'll let them do it.
|
||
|
|
It's like the difference between a ride with a car
|
||
|
|
where you're on a rails,
|
||
|
|
no matter what way you turn,
|
||
|
|
the car goes the straight way anyway,
|
||
|
|
versus an F1 car,
|
||
|
|
if you turn off the track, you just die.
|
||
|
|
Well, that's the thing,
|
||
|
|
because Git is distributed, right?
|
||
|
|
Subversion, a commit in subversion,
|
||
|
|
actually pushes your code to the central repository,
|
||
|
|
if there's a bunch of people working on the project together,
|
||
|
|
which means one person can just commit
|
||
|
|
and fuck the whole thing up.
|
||
|
|
In Git, everyone's working locally
|
||
|
|
with their own copy of the repository,
|
||
|
|
and they're only sharing when they explicitly share,
|
||
|
|
so committing making checkpoints
|
||
|
|
to reset and roll forward and back for your code,
|
||
|
|
is completely independent of sharing code.
|
||
|
|
So you can make checkpoints
|
||
|
|
to make your life easier locally
|
||
|
|
without sharing those checkpoints with anyone.
|
||
|
|
So that greatly reduces any chance of fucking things up.
|
||
|
|
Right, right up to get go.
|
||
|
|
Yeah, I mean, I can't imagine
|
||
|
|
the subversion I used to use at another company,
|
||
|
|
like pulling the repository down to my laptop,
|
||
|
|
working on stuff for a week,
|
||
|
|
like on a trip or something,
|
||
|
|
coming back to work,
|
||
|
|
and trying to put that back in.
|
||
|
|
Well, that's another thing, right?
|
||
|
|
Subversion, you only get the most current version of the code
|
||
|
|
when you check out,
|
||
|
|
which you can't work if you're not online,
|
||
|
|
if you're not connected.
|
||
|
|
Git, you have the whole thing,
|
||
|
|
you can work completely offline,
|
||
|
|
it doesn't matter where you are.
|
||
|
|
Oh, but in this version,
|
||
|
|
I could pull down what I'm working on
|
||
|
|
and lock it for everyone else.
|
||
|
|
You could do that.
|
||
|
|
Yeah, there's no locking in Git, right?
|
||
|
|
So when you do want to share something,
|
||
|
|
there's a whole bunch of different ways to do it.
|
||
|
|
You could share my email if you're freaking want to.
|
||
|
|
You could give someone a GZ file on a stick if you want to.
|
||
|
|
You can do whatever.
|
||
|
|
But generally, people tend to do things in two ways.
|
||
|
|
You could set up just a community agreed upon
|
||
|
|
central repository and push to it.
|
||
|
|
Right?
|
||
|
|
So push to be a separate command
|
||
|
|
and you would descend your commits to that,
|
||
|
|
you know, repository on whatever branch
|
||
|
|
you wanted to send them on to.
|
||
|
|
And then other people would pull them
|
||
|
|
and you would all be disciplined
|
||
|
|
and no one would mess it up.
|
||
|
|
That's what we do at work,
|
||
|
|
but it breaks down when you have too many people.
|
||
|
|
Right?
|
||
|
|
So when you have too many people,
|
||
|
|
like you do say on Linux,
|
||
|
|
what you do is you can do a pull request,
|
||
|
|
which is you email someone or call them on the phone
|
||
|
|
or say hi and you talk to them
|
||
|
|
and you say,
|
||
|
|
that's quite a difficult protocol for many developers.
|
||
|
|
I know. And you say,
|
||
|
|
look, my repository is over in this place.
|
||
|
|
And I have some commits on it
|
||
|
|
that I would like to submit for your consideration.
|
||
|
|
Please pull from my repository.
|
||
|
|
Right?
|
||
|
|
And this is how GitHub works
|
||
|
|
is GitHub as pull request.
|
||
|
|
So if you go on GitHub,
|
||
|
|
you clone someone's project,
|
||
|
|
you do some work on it,
|
||
|
|
you finish it,
|
||
|
|
you push your code back to GitHub from your local.
|
||
|
|
Right?
|
||
|
|
So you push it from your local to your GitHub,
|
||
|
|
then you do a pull request telling the other guy
|
||
|
|
to pull your GitHub into his GitHub.
|
||
|
|
You see how it's like everyone has
|
||
|
|
all these different copies of it?
|
||
|
|
Yep.
|
||
|
|
So he gets a pull request notification on GitHub.
|
||
|
|
He takes your code from your GitHub
|
||
|
|
to his local machine, hopefully.
|
||
|
|
Check, you know,
|
||
|
|
puts it on a separate branch
|
||
|
|
where it won't mess anything up.
|
||
|
|
Check your code out.
|
||
|
|
See how good it is.
|
||
|
|
See if it's working.
|
||
|
|
Merges it in with his code.
|
||
|
|
See how that works.
|
||
|
|
If he likes your code,
|
||
|
|
then he'll merge it in
|
||
|
|
and push it to his repository
|
||
|
|
there by accepting your pull request.
|
||
|
|
If he doesn't like your code,
|
||
|
|
he'll just throw that branch away
|
||
|
|
and give you the finger and ignore you.
|
||
|
|
All right.
|
||
|
|
And but the thing is,
|
||
|
|
your code isn't lost.
|
||
|
|
You still have it.
|
||
|
|
Right?
|
||
|
|
If you don't like,
|
||
|
|
if you like your thing a different way,
|
||
|
|
then he likes it,
|
||
|
|
then you maintain your own branch.
|
||
|
|
Good for you.
|
||
|
|
You forked it.
|
||
|
|
Congratulations.
|
||
|
|
So how does it handle merging?
|
||
|
|
Like if two people have edited,
|
||
|
|
like you're trying to merge two branches
|
||
|
|
where the fundamental difference is like,
|
||
|
|
one section of code,
|
||
|
|
it's just like two people implemented it way differently.
|
||
|
|
Okay.
|
||
|
|
So get merged is a pretty complex here.
|
||
|
|
But they're also the most powerful and the best.
|
||
|
|
Right?
|
||
|
|
So here's how it works.
|
||
|
|
Remember I told you a commit is just a tree
|
||
|
|
that has trees and blobs under it.
|
||
|
|
Yup.
|
||
|
|
Right?
|
||
|
|
So I want to merge two branches together.
|
||
|
|
Right?
|
||
|
|
So I take these two branches
|
||
|
|
and all it looks at really
|
||
|
|
is the top commits.
|
||
|
|
Because a branch is just a pointer
|
||
|
|
to a commit.
|
||
|
|
That's all it is.
|
||
|
|
And it just so happens
|
||
|
|
that if you are on a branch
|
||
|
|
and you commit,
|
||
|
|
it automatically moves the branch pointer
|
||
|
|
ahead to the new commit.
|
||
|
|
That's all it does.
|
||
|
|
So a branch is just a pointer
|
||
|
|
an easy way to specify a commit.
|
||
|
|
So I might say master.
|
||
|
|
Well, master is currently pointing at this commit.
|
||
|
|
So master is just an easy way of saying that commit.
|
||
|
|
Right?
|
||
|
|
A head is just an easy way of saying
|
||
|
|
the commit I'm currently looking at.
|
||
|
|
So head is just a pointer
|
||
|
|
that looks at the commit you're currently looking at.
|
||
|
|
And if you make a new commit,
|
||
|
|
head and the branch are on,
|
||
|
|
get both get moved forward to point at the new, right?
|
||
|
|
They're all just pointing,
|
||
|
|
all these names are just pointers to commits.
|
||
|
|
So if I merge,
|
||
|
|
let's say I have a production branch
|
||
|
|
and I go to the production branch
|
||
|
|
and I say get merge master.
|
||
|
|
Right?
|
||
|
|
Which would take the commit of the master branch
|
||
|
|
and merge it with the production branch.
|
||
|
|
Right?
|
||
|
|
Right?
|
||
|
|
What happens is it takes the top,
|
||
|
|
it takes production,
|
||
|
|
which remember it's just a commit.
|
||
|
|
Yup.
|
||
|
|
It takes master,
|
||
|
|
which again is just a commit.
|
||
|
|
And then it looks at their histories
|
||
|
|
and it rolls back
|
||
|
|
to find the common ancestor.
|
||
|
|
And it doesn't care about any of the commits in between.
|
||
|
|
All it cares about is the two commits you're merging
|
||
|
|
and the common ancestor.
|
||
|
|
So then it looks at each blob in both commits.
|
||
|
|
So let's say that all that's in there is a readme.text
|
||
|
|
and some other five readme.text.
|
||
|
|
So it looks at the first readme.text
|
||
|
|
and it says,
|
||
|
|
all right, this readme.text,
|
||
|
|
on production branch,
|
||
|
|
was there any difference between this readme.text
|
||
|
|
between production and the common ancestor?
|
||
|
|
No.
|
||
|
|
Okay.
|
||
|
|
Was there any difference between this readme.text
|
||
|
|
between master and the common ancestor?
|
||
|
|
Well, yes.
|
||
|
|
Yes, there was a change.
|
||
|
|
So in the master branch,
|
||
|
|
this file changed.
|
||
|
|
Yup.
|
||
|
|
But in the production branch,
|
||
|
|
it did not change.
|
||
|
|
Nope.
|
||
|
|
We're just going to take that master change, aren't we?
|
||
|
|
That easy merge.
|
||
|
|
Just take the master.
|
||
|
|
Done.
|
||
|
|
Easy.
|
||
|
|
So what if the two readme is diverged?
|
||
|
|
Ah, so both in the case,
|
||
|
|
where both readme files have changed,
|
||
|
|
there were edits on production
|
||
|
|
and there were edits on master.
|
||
|
|
Well, were they the same edits?
|
||
|
|
Exactly the same.
|
||
|
|
Because that case,
|
||
|
|
that case, we're just,
|
||
|
|
right?
|
||
|
|
Yeah, I'm assuming.
|
||
|
|
No, bro, because that's the more interesting case.
|
||
|
|
So no, they're not the same.
|
||
|
|
There were some edits on the production branch,
|
||
|
|
and there were some edits on the master branch
|
||
|
|
that were different.
|
||
|
|
Well, are these edits like on the same line?
|
||
|
|
You know, it has actually a bunch of different
|
||
|
|
merge algorithms it uses
|
||
|
|
that it tried, all right?
|
||
|
|
So let's say one of the things added to commit
|
||
|
|
at the top of the file,
|
||
|
|
and one of the things added a comment
|
||
|
|
at the bottom of the file.
|
||
|
|
It'll just merge them together.
|
||
|
|
No problem.
|
||
|
|
All right.
|
||
|
|
But let's say two people edited the same function.
|
||
|
|
The same line of code is two different lines, right?
|
||
|
|
Since the common ancestor.
|
||
|
|
It'll say, dude, conflict, yo.
|
||
|
|
And what you'll have to do is you have to open up the file
|
||
|
|
and you look through the file
|
||
|
|
and you see a bunch of chevrons.
|
||
|
|
And it'll basically say, hey, dude,
|
||
|
|
look, this line on the production branch looks like this
|
||
|
|
and on the master branch looks like this.
|
||
|
|
Manually edit me.
|
||
|
|
So you manually edit that one area of the file,
|
||
|
|
remove all the chevrons and all the extra crap
|
||
|
|
that threw in there, right?
|
||
|
|
Get the file just the way you wanted to look,
|
||
|
|
post merge, add it to the staging index,
|
||
|
|
the staging index, and commit.
|
||
|
|
And then it'll be merged.
|
||
|
|
Nice.
|
||
|
|
And of course, it keeps the versions of everything
|
||
|
|
along the way because it's good.
|
||
|
|
Yeah, of course.
|
||
|
|
All right.
|
||
|
|
So, you know, there's no way you could possibly lose anything
|
||
|
|
unless you intentionally try to lose something.
|
||
|
|
And even if you do lose something,
|
||
|
|
like you accidentally remove something,
|
||
|
|
you could actually check the get ref log
|
||
|
|
and bring it back.
|
||
|
|
Because unless the garbage cleaner has come along,
|
||
|
|
it won't actually be gone,
|
||
|
|
which is really the get ref log
|
||
|
|
and save my ass quite a few times, let me tell you.
|
||
|
|
So, yeah, merge is pretty fancy like that.
|
||
|
|
The other thing about get that's incredibly powerful
|
||
|
|
is the rebase.
|
||
|
|
A lot of people, if you look online,
|
||
|
|
they'll be like, don't use rebase.
|
||
|
|
That's a naughty thing to do.
|
||
|
|
They're totally wrong.
|
||
|
|
They don't know what they're talking about.
|
||
|
|
There's a reason the tools in there.
|
||
|
|
They wouldn't have made it if you weren't supposed to use it.
|
||
|
|
Linus Terval's wouldn't have made rebase
|
||
|
|
if you weren't supposed to use rebase.
|
||
|
|
All right.
|
||
|
|
So, what rebase does is it basically rewrites history.
|
||
|
|
It rebases.
|
||
|
|
So, say, for example, I start working on a new feature.
|
||
|
|
I'm going to add to the website the ability
|
||
|
|
to post on Facebook.
|
||
|
|
So, I make a branch called the Facebook branch
|
||
|
|
and I start working on it.
|
||
|
|
Meanwhile, you add the ability to post a Twitter, right?
|
||
|
|
And you finish.
|
||
|
|
And now you put it on the master branch.
|
||
|
|
So, I forked the master branch
|
||
|
|
and to add my Facebook feature.
|
||
|
|
But your Twitter feature is now on the master branch,
|
||
|
|
but it's not in my Facebook branch.
|
||
|
|
But it needs to be, right?
|
||
|
|
Because I need to build my stuff,
|
||
|
|
taking your stuff into consideration.
|
||
|
|
Because you finished your work first.
|
||
|
|
Therefore, I have to get my work to work on top of your work.
|
||
|
|
Right?
|
||
|
|
And I don't want to just try to merge the two together
|
||
|
|
when I'm all done.
|
||
|
|
That could be painful.
|
||
|
|
It might work.
|
||
|
|
But it could be painful.
|
||
|
|
So, what I do is I rebase my branch
|
||
|
|
onto the master branch.
|
||
|
|
What that does is it takes all my commits
|
||
|
|
on my Facebook branch
|
||
|
|
and sort of puts them in a bin on the side.
|
||
|
|
Okay?
|
||
|
|
So now my, right?
|
||
|
|
And then it takes your commits
|
||
|
|
and it puts them right there, right?
|
||
|
|
Where my Facebook commits just were.
|
||
|
|
So now my branch and master look the same.
|
||
|
|
Then it takes my Facebook commits
|
||
|
|
and it puts them right on top of your Twitter commits
|
||
|
|
on my Facebook branch.
|
||
|
|
So now I've rebased.
|
||
|
|
You see how I picked my stuff up?
|
||
|
|
I made a new base for my stuff.
|
||
|
|
Right?
|
||
|
|
Do you understand?
|
||
|
|
You get what I'm saying?
|
||
|
|
Yeah.
|
||
|
|
Right?
|
||
|
|
Now, this also has other fancy powers
|
||
|
|
and this is where the magic comes in.
|
||
|
|
The magic's.
|
||
|
|
The magic's.
|
||
|
|
I'm working on an open source project
|
||
|
|
saying I'm making a Linux kernel driver.
|
||
|
|
It's hard work.
|
||
|
|
So I make a lot of commits locally.
|
||
|
|
A lot of checkpoint commits.
|
||
|
|
You know, and a lot of these commits are just like
|
||
|
|
fixed a typo.
|
||
|
|
Added a line.
|
||
|
|
Testing this out.
|
||
|
|
Oh, that didn't work.
|
||
|
|
Revered it.
|
||
|
|
You know, and I just keep making tons and tons of commits
|
||
|
|
all locally.
|
||
|
|
And eventually, after 10 days and 100 commits,
|
||
|
|
I finished the driver.
|
||
|
|
Right?
|
||
|
|
Now, the Linux kernel doesn't want to see 100 commits.
|
||
|
|
Right?
|
||
|
|
I can't be like, hey, Linus, pull request.
|
||
|
|
100 little commits with typos and all this nonsense
|
||
|
|
for this one driver.
|
||
|
|
He'll be like, screw you.
|
||
|
|
I don't want your 100 commits cluttering up
|
||
|
|
the history of Linux kernel.
|
||
|
|
It's your, you're basically, you know,
|
||
|
|
as far as you're personally concerned,
|
||
|
|
those 100 commits have meaning.
|
||
|
|
But as far as it's basically one version,
|
||
|
|
like version 1.0.
|
||
|
|
As far as, you know, Linux, the kernel is concerned.
|
||
|
|
It's one commit that commit should have a message
|
||
|
|
like added new driver for a lousy webcam
|
||
|
|
that only Scott has.
|
||
|
|
Right?
|
||
|
|
That's all he wants.
|
||
|
|
One commit with that whole change in it.
|
||
|
|
So what you do is you rebase against yourself.
|
||
|
|
You rebase the branch against itself,
|
||
|
|
and you do an interactive rebase,
|
||
|
|
which is allows you to manually control the rebase.
|
||
|
|
And what you would do is you would actually squash
|
||
|
|
the commits with this rebase into just one commit
|
||
|
|
that you would then share.
|
||
|
|
So that you would, that allows you to rewrite
|
||
|
|
the whole history of what you just did on that branch.
|
||
|
|
And then merge just that one really pretty commit back in.
|
||
|
|
So you can make a whole bunch of messy commits
|
||
|
|
all on your own that make it really easy to do your work
|
||
|
|
because you have all these checkpoints.
|
||
|
|
You can roll them back and forward, take them in and out.
|
||
|
|
You can try to...
|
||
|
|
Teaching other people.
|
||
|
|
You can decide you don't like it, take it out,
|
||
|
|
replace it with something else.
|
||
|
|
And you can have this whole, your whole workflow history
|
||
|
|
is there to make it really easy to get the job done
|
||
|
|
and try all sorts of stuff out branches
|
||
|
|
and all sorts of merging and nonsense.
|
||
|
|
But when you're finally said and done,
|
||
|
|
you can rebase everything into one cozy commit
|
||
|
|
that can then be shared with other people that is clean and beautiful.
|
||
|
|
And no one will see all that mess you made
|
||
|
|
when you were working locally.
|
||
|
|
But you do.
|
||
|
|
And you still have that history.
|
||
|
|
It doesn't go anywhere.
|
||
|
|
It's hidden inside.
|
||
|
|
So you can always go back to it if you need to.
|
||
|
|
Oh, adding that one line was a mistake.
|
||
|
|
I'll just go and find that commit that got rebased in,
|
||
|
|
revert it and make a new commit.
|
||
|
|
That makes a lot of sense in light of like,
|
||
|
|
go back to my video example.
|
||
|
|
Say I wanted to use that for like video collaboration.
|
||
|
|
Well, I have a 1,000 one gigabyte commits of this video
|
||
|
|
and the project manager doesn't want 1,000 gigabytes of crap.
|
||
|
|
They want the final one.
|
||
|
|
Yeah, I'm not sure how exact I haven't done a lot with binary files
|
||
|
|
so much and get at least not big.
|
||
|
|
I don't know either.
|
||
|
|
So I'm not sure if it only stores the diffs of the binary files
|
||
|
|
or if it actually stores the whole files.
|
||
|
|
That diffs of binary files are often sub optimal.
|
||
|
|
Even though it will be expect exceptionally good
|
||
|
|
and at performance of saving space
|
||
|
|
and being very fast at executing commands.
|
||
|
|
Don't fool yourself, you know, with subversion
|
||
|
|
when you check something out,
|
||
|
|
you are only checking out the newest version.
|
||
|
|
So it's a pretty quick download.
|
||
|
|
If you try to clone the Linux kernel
|
||
|
|
and get the complete history from Git,
|
||
|
|
it takes a long time to download
|
||
|
|
because even though it's mostly just code,
|
||
|
|
in fact, it's almost all code, there's a lot of it
|
||
|
|
and the history is long.
|
||
|
|
It takes a long time to download that.
|
||
|
|
It's a big package.
|
||
|
|
Don't fool yourself.
|
||
|
|
So if you consider download time to be incredibly important,
|
||
|
|
you know, that isn't negative.
|
||
|
|
It's there.
|
||
|
|
There are tons and tons of fancy things.
|
||
|
|
I can go on for hours talking about Git Bisekt
|
||
|
|
and which like, with Git Bisekt,
|
||
|
|
I won't tell you how it works,
|
||
|
|
but what it does is you tell,
|
||
|
|
let's say you have a bug and you don't know
|
||
|
|
when the bug appeared,
|
||
|
|
you tell it the last known good commit
|
||
|
|
and it will roll forward one commit at a time
|
||
|
|
asking you, is this commit good?
|
||
|
|
Yes, no.
|
||
|
|
So I could run that through a regression tester
|
||
|
|
that regression tests every commit
|
||
|
|
until it hits the one that fails the test
|
||
|
|
and then I know that you know
|
||
|
|
which commit introduced the problem.
|
||
|
|
And yeah, you can run it through an automatic testing system
|
||
|
|
that will automatically mark the commits as good or bad.
|
||
|
|
So it will automatically just play,
|
||
|
|
oh, this is the bad commit.
|
||
|
|
This is where the problem came from.
|
||
|
|
It can do all sorts of crazy shit.
|
||
|
|
There's like hooks.
|
||
|
|
So you'd be like,
|
||
|
|
here's a shell script.
|
||
|
|
Whenever anyone commits,
|
||
|
|
automatically execute the shell script.
|
||
|
|
Whenever anyone pushes, execute the shell script.
|
||
|
|
So you can have like your Git repository email
|
||
|
|
everyone when there's new commit or stuff like that.
|
||
|
|
You can do tagging or releases.
|
||
|
|
You can do,
|
||
|
|
bringing tons and tons of ridiculous shit that most,
|
||
|
|
you can do Git Blame is really good.
|
||
|
|
It knows who edited every single line and every single file.
|
||
|
|
So you do a Git Blame when you see a bug
|
||
|
|
and see who exactly introduced that bug
|
||
|
|
because their name is right there on the line.
|
||
|
|
You know who did it.
|
||
|
|
I don't know, it's just, it's crazy shit.
|
||
|
|
But if you are,
|
||
|
|
you know, if you've never used version control
|
||
|
|
or even if you have been using it
|
||
|
|
or if you're coding anything,
|
||
|
|
even the simplest little project personal thing
|
||
|
|
just for yourself that might be one file,
|
||
|
|
it's worth the distort and Git.
|
||
|
|
Even if you're not coding,
|
||
|
|
if you're doing anything or versioning,
|
||
|
|
might be a good idea, right?
|
||
|
|
I mean, I know that like,
|
||
|
|
doesn't Microsoft Word do versioning in itself now?
|
||
|
|
Yeah.
|
||
|
|
And a lot of people use like WebDAV
|
||
|
|
and stuff to do that sort of thing.
|
||
|
|
Oh, good God.
|
||
|
|
Yeah.
|
||
|
|
You want to use,
|
||
|
|
if you're doing any work that needs to be versioned,
|
||
|
|
where you want to be able to roll back to old versions,
|
||
|
|
rolled in new versions.
|
||
|
|
If you're working collaboratively
|
||
|
|
on something with anyone that is in,
|
||
|
|
that is files,
|
||
|
|
especially text files,
|
||
|
|
you want to use Git and you want to learn it.
|
||
|
|
Even if you start out using it just really simply,
|
||
|
|
don't bother with the fancy stuff like rebase
|
||
|
|
and whatever.
|
||
|
|
Just do commits on one branch,
|
||
|
|
push and pull between two people,
|
||
|
|
but you know,
|
||
|
|
just use GitHub in the simplest way possible.
|
||
|
|
That's okay.
|
||
|
|
You're doing something
|
||
|
|
and even though you don't know the advanced features,
|
||
|
|
you might need them.
|
||
|
|
And when you do come to need them,
|
||
|
|
you can look them up,
|
||
|
|
how to use them to save your ass,
|
||
|
|
or you can get someone to help you save your ass.
|
||
|
|
If you're using something else,
|
||
|
|
saving your ass might not be a possibility.
|
||
|
|
And you know,
|
||
|
|
that's the thing with Git.
|
||
|
|
It's like, you know,
|
||
|
|
it's the whole hog of Neil Stevenson, right?
|
||
|
|
It's this incredibly powerful drill
|
||
|
|
that you could just fucking kill yourself at so powerful.
|
||
|
|
But it can always get the job done.
|
||
|
|
So you can shoot yourself in the foot,
|
||
|
|
but it can also unshoot yourself in the foot.
|
||
|
|
Of course, with the whole hog,
|
||
|
|
you can't undrill a hole.
|
||
|
|
That's true.
|
||
|
|
But Git, it's very hard to get to ruin it completely.
|
||
|
|
It might be also really hard to get it back to goodness,
|
||
|
|
but it's possible.
|
||
|
|
Almost always possible to fix anything.
|
||
|
|
And it's all,
|
||
|
|
it's definitely possible that no matter what problem you're in,
|
||
|
|
you can escape.
|
||
|
|
So kids, just remember,
|
||
|
|
it's treason blobs all the way down.
|
||
|
|
It is treason blobs all the way down pretty much.
|
||
|
|
This has been Geek Nights with Rim and Scott,
|
||
|
|
special thanks to DJ Pretzel for the opening music,
|
||
|
|
Cat Lea for Web Design, and Brand Ok for The Logos.
|
||
|
|
Be sure to visit our website at Frontro Crew.com
|
||
|
|
for show notes, discussion, news, and more.
|
||
|
|
Remember, Geek Nights is not one,
|
||
|
|
but four different shows,
|
||
|
|
Citech Mondays, Gaming Tuesdays,
|
||
|
|
Animacomic Wednesdays,
|
||
|
|
and indiscriminate Thursdays.
|
||
|
|
Geek Nights has distributed under a creative
|
||
|
|
comments attribution 3.0 license.
|
||
|
|
Geek Nights has recorded live with no studio
|
||
|
|
and no audience.
|
||
|
|
But unlike those other late shows,
|
||
|
|
it's actually recorded at night.
|
||
|
|
Thank you for listening to Hacker Republic Radio.
|
||
|
|
For more information on the show,
|
||
|
|
and how to contribute your own shows,
|
||
|
|
visit HackerPublicRadio.org.
|
||
|
|
Thank you for listening to Hacker Republic Radio.
|
||
|
|
For more information on the show,
|
||
|
|
and how to contribute your own shows,
|
||
|
|
visit HackerPublicRadio.org.
|
||
|
|
For more information on the show,
|
||
|
|
visit HackerPublicRadio.org.
|