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.
