« first day (1670 days earlier)   

12:01 AM
@FaheemMitha Never say never.
 
12:13 AM
@SeanAllred Well, an example I would like to see.
 
@FaheemMitha a classmate at college used a variable number of spaces to sort the reference list in his editor how he wanted it. More spaces pushed it up to the top.
@FaheemMitha In addition to the fig: convention, I have to admit it was pretty to look at.
 
@SeanAllred What, including leading and trailing spaces?
 
@FaheemMitha Yeah, leading spaces
 
@SeanAllred Your classmate was obviously a freak.
No offense.
 
@FaheemMitha XD None taken – I'm pretty sure I said 'That's absurd' when I saw it at first
 
12:19 AM
We're taught in Kindergarten that syntactically significant whitespace is evil.
@SeanAllred Well, whatever works for you, I guess. After all, some people use PHP. To write programs, even.
 
@FaheemMitha IGUESSWESHOULDJUSTGOBACKTOLATIN
:)
 
@SeanAllred Not necessarily.
@SeanAllred you're the Git advocate here, right? Ever tried Mercurial?
 
@FaheemMitha I have
 
@SeanAllred And git still rules?
 
@FaheemMitha git still rules.
 
12:22 AM
@SeanAllred ok :-)
 
@FaheemMitha See importantshock.wordpress.com/2008/08/07/git-vs-mercurial. Boils down to versatility and stability.
 
@SeanAllred Yes, I've read that. It's pretty old.
 
@FaheemMitha Pretty old, but still pretty accurate IIUC.
Branching is still not as great as it is in git.
(for instance)
 
@SeanAllred I don't think so. Mercurial has changed a lot since 2008.
Don't know about git, but probably the same is true.
 
@FaheemMitha Do you use branches a bunch?
 
12:26 AM
@SeanAllred not really. I used to. I've moved more in the direction of history rewriting. Since I'm just one person.
Why?
 
@FaheemMitha Because branches are what I use on a day-to-day for my own personal development. I try out ideas, work out different solutions. It's like having the abstract solution to your problem run in multiple different threads and you get to access and work out all of them.
 
@SeanAllred Sure. Well, mercurial has branches.
The most recent implementation of which is bookmarks.
 
@FaheemMitha It certainly does, but they aren't as cheap and powerful as git's branches
From what i've heard, it's hell to just delete them
 
@SeanAllred Bookmarks are the closest equivalent to git's branches, afaik.
You might be interested in the new evolve extension. I think it is the way forward for distributed version control.
Are you a Git developer?
 
@FaheemMitha I would pin them as git's tags, which are basically static branches
@FaheemMitha Hardly a git developer XD
 
12:29 AM
@SeanAllred I don't follow. Pin what?
 
@FaheemMitha I would pin branches as git tags (that is, I would 'pin them together' as related.)
er
hg bookmarks, not hg branches.
hg bookmarks = git tags (in my mind)
because that's what tags essentially are: bookmarks. just a different word.
 
@SeanAllred Oh, I see. I was confused by your terminology. I don't think that is true, but I've actually never used bookmarks. And mercurial has a separate tag concept.
bookmarks move. Tags don't.
 
@FaheemMitha Well that at least is a misnomer :)
 
@SeanAllred What is?
 
@FaheemMitha Bookmarks
 
12:32 AM
@SeanAllred I don't follow. You don't like the name?
 
@FaheemMitha I think of bookmarks as 'stay put here – I want to come back some time later' – in my mind, they're static things.
 
@SeanAllred Oh, I see. Well tags do that.
It's not a perfect name, granted. Anyway, like I said, I've never used them, so don't have anything to say.
 
@FaheemMitha Yes, as you've said, but I still think 'bookmarks' is a bad name :) but names are ultimately unimportant. What's the difference between a bookmark and a branch in hg?
 
@SeanAllred As I understand it, bookmarks are temporary branches. Named branches are permanent - they're burned into history.
 
@FaheemMitha Ah, I see. Well I suppose that's a useful concept.
 
12:36 AM
@SeanAllred Sure it is. :-)
 
I still find it hard to justify a difference, though :)
 
Though like I said, I've moved away from using branches for my personal work.
 
If something simpler solves the same problem equally well, why make it more complex?
 
@SeanAllred what difference?
@SeanAllred I don't follow. What something simpler?
 
in hg between bookmarks/branches
 
12:37 AM
@SeanAllred Well, they serve different functions.
 
In git, branches are very, very simple
They're files with the contents of a commit hash – an identifier for any given commit.
 
@SeanAllred What makes you think they aren't in mercurial? Mercurial is actually very simple to use, and actually has a sane user interface. Which git doesn't.
@SeanAllred ok
 
same goes with tags actually, but they're protected from changes (arbitrary implementation to protect versioned releases)
@FaheemMitha Oh, git's interface is fine. I don't mind it one bit.
Besides, have you ever used magit?
 
@SeanAllred Ugh
@SeanAllred No. Though I am an Emacs user.
 
@FaheemMitha You do yourself a disservice
 
12:40 AM
@SeanAllred how so?
 
@FaheemMitha Magit is perhaps the most polished piece of software I've ever used
 
@SeanAllred Ah, Ok. I'll keep that in mind.
Though I don't really use Git. Or only if I have to. Usually kicking and screaming.
 
@FaheemMitha it's a fantastic, fantastic interface to git. Recommend you try it out during a lunch hour sometime.
Check out the emacs sources and poke around the history with magit
 
@SeanAllred Ok, thanks for the recommendation.
 
@FaheemMitha And I'll give hg another look. It has been a few years, though I fear I'm a bit entrenched :) (even seeing as a few interop services are around these days)
 
12:43 AM
Do you mostly interact with git via emacs then?
@SeanAllred I'd give the evolve extension a look. It is quite impressive.
Though not yet in general usage. The surrounding concepts have been planned since around 2010/2011, so it's been a while coming.
 
@FaheemMitha will do :)
 
@SeanAllred ok
@SeanAllred how open is the Git project to patches?
 
@FaheemMitha I'm not sure – what kind of patches are we talking about?
 
@SeanAllred I guess I was speaking generally. Some projects are more open. Some are les open.
Maybe it's too general a question. Never mind.
 
@FaheemMitha I'd say the project is pretty open to patches, but that's just a hazarded guess based on my recollection of the mailing list
@FaheemMitha Most things can be done with on-the-fly aliasing though
 
12:53 AM
@SeanAllred Ok.
@SeanAllred Not sure which things you mean. :-)
 
@FaheemMitha something like hg uncommit is attractive, but it's ultimately a moot point with a git alias. you could make exactly the same command do the same thing.
 
@SeanAllred um, there is no such thing as hg uncommit. Actually, there is in evolve, but that is almost certainly not what you are referring to. Also, uncommit means history rewriting.
 
@FaheemMitha Whoops, yes I meant evolve. I was just reading the docs :)
@FaheemMitha Well even better – it's not rewriting history in git :)
Just as a consequence of how the history is represented
 
@SeanAllred Actually, it's technically not rewriting. Mercurial obsoletes the original commit.
That's an important distinction. Mercurial doesn't do rewriting. I was speaking loosely.
Since no other vcs does anything like this, I didn't want to complicate matters.
 
@FaheemMitha Oh, ok then :) Yeah, git does something similar. You just point HEAD to a different commit. The commit will still exist until the tree is 'pruned' – unneeded commits are removed from the repo then
@FaheemMitha "no other vcs" is a very broad (and very inaccurate) statement
 
12:59 AM
@SeanAllred Counterexample, please.
@SeanAllred Yes, I'm aware of that. It's that index thing. It's along the lines of the same idea, but mercurial has a proper implementation. Or it will.
 
@FaheemMitha Basically everything before git, honestly.
@FaheemMitha "proper implementation" hehe
 
Though, I haven't used git enough to really say what it does and doesn't do. I find its user interface so annoying I have a hard time using it.
 
@FaheemMitha Well then don't use its user interface, make a new one :)
 
@SeanAllred Sorry, I'm not sure what that was a response to.
@SeanAllred No.
 
@FaheemMitha But more seriously, rewriting history is an important idea if any mistakes are made. Sensitive information is, well, sensitive.
@FaheemMitha git's concept of rewriting history was less-than-well-received at the time
 
1:02 AM
@SeanAllred Sure, it should be possible. But I think the notion of obsoleting history is a good one.
That way, nothing gets lost.
 
@FaheemMitha What if you want it to get lost?
 
Though it does have fair amount of overhead in the current version.
@SeanAllred Then sure, you can. Mercurial doesn't stop you. But in its default setting, it doesn't make it easy for you either.
The basic tool in mercurial is strip. Though there a bunch of ways you can do such things.
 
@FaheemMitha so, looping back, hg isn't the only VCS that doesn't allow rewriting history. The very premise is flawed: it does allow it.
(I might sound like I'm getting heated but I want to clarify that I'm not :))
 
@SeanAllred Not mercurial itself. strip is an extension.
 
@FaheemMitha Are you saying that hg was missing something in the defaults!? :O
 
1:06 AM
By project policy, mercurial itself does not allow history rewriting. If you want to, you have to enable an extension to allow it.
@SeanAllred Yes, the extensions have to be enabled.
 
@FaheemMitha And by similar project policy, git doesn't allow rewriting except in extreme cases (leaked passwords, keys, tokens, etc.).
 
In practice they are a big part of mercurial's functionality. Including basically all the "unsafe" stuff. With mercurial in it's default setting. It's very hard to trash your repos. I'm sure it is possible if you try enough.
 
It just doesn't make it difficult if you decide that's what you want to do.
 
@SeanAllred I had the impression that it was fairly easy/routine with git.
 
@FaheemMitha Oh, no. Think about it this way: If all the examples I ever saw of LaTeX were things like {\Large\bfseries 1. Section One}\normalsize In the beginning…, this would still make it wrong.
Similarly, some people using git use it improperly. Rewriting is an important part of git, but it's not something we really like.
 
1:10 AM
@SeanAllred Ok, fair enough. Like I said, I don't actually use it.
 
In the end, git is a Build Your Own DVCS in the same way that Emacs is a Build Your Own Editor: it gives you everything you need to create your ideal workflow and then gets out of the way.
 
@SeanAllred That definitely doesn't describe mercurial.
 
@FaheemMitha I'm aware, that's why I'm explaining :)
 
@SeanAllred ok
Though Mercurial is fairly extensively customizable.
 
@FaheemMitha Of course; mercurial has a very set way of doing things and if what you want to do isn't in that set, it's very hard (or nigh impossible) to get it to actually do what you want to do
@FaheemMitha I'd expect any professional tool to be :)
 
1:12 AM
@SeanAllred I don't think that is actually true. I've never experienced that.
Did you have a specific use case in mind?
 
@FaheemMitha Nothing in recent history. Last time I used hg was over five years ago.
 
The extensions have quite extensive functionality. You can do all sorts of things with them. Including things the Mercurial project doesn't recommend. E.g [defaults].
@SeanAllred Yes, that's half of Mercurial's history.
 
"The extensions have quite extensive functionality" hehehe words :P
 
@SeanAllred to be clear, there are two categories of extensions. (a) extensions bundled with mercurial, and (b) not
 
@FaheemMitha you lost me
 
1:14 AM
(a) extensions here have compat guarantees. (b) do not. evolve is currently under (b).
@SeanAllred ?
@SeanAllred Which part? Sorry, typo. better?
 
@FaheemMitha "extensions bundled with extensions"
@FaheemMitha Oh, that makes more sense :)
I was very confused
 
I'm not the best typist, sorry.
 
Oh no, I make similar mistakes all the time. I rarely mistype keys, but I'll very often mistype entire words.
Strange phenomenon
And then I stumble upon this piece of gold: vvv
SCM tools are there to help me do my job, not punish me for failing to meditate long enough before pressing return. Besides, if you never make mistakes, presumably you don't need one in the first place. — Useless Jan 16 '13 at 18:05
 
@SeanAllred that last sentence isn't actually true.
A VCS has many purposes.
 
@FaheemMitha The original purpose for VCS was to protect against catastrophic failure
@FaheemMitha It wasn't to chronicle the development of a piece of software
 
1:20 AM
@SeanAllred Maybe, but it has evolved beyond that.
 
Although an interesting and educational side-effect, it's ultimately useless.
 
@SeanAllred what is?
 
@FaheemMitha Alright, if you never make mistakes, what is the purpose of a VCS?
@FaheemMitha Viewing detailed change history
 
@SeanAllred Hah, is that a serious question?
 
@FaheemMitha Yes, it is.
 
1:21 AM
Backups, keeping a record, structuring your repos. Trying different changes in an organized way.
 
@FaheemMitha As someone who works on a 3000-developer project under around 40 environments.
 
@SeanAllred which is?
 
@FaheemMitha Invalid, I made the right choice the first time.
 
@SeanAllred Um, what?
 
@FaheemMitha Rather not say, to be honest.
 
1:22 AM
@SeanAllred oh
 
@FaheemMitha I don't need backups because I never make mistakes; I don't need to try different changes because I always make the right choice the first time.
Keeping a record, as I've said, is ultimately useless sans these points.
 
@SeanAllred backups don't have much to do with mistakes. If a flaming meteorite hit your house, you didn't make a mistake, but your computer will go up in smoke none the same.
 
@FaheemMitha I can make backups without a VCS. rsync boom done.
 
@SeanAllred If you don't like the term "trying different changes" try "feature development" instead.
 
@FaheemMitha All features I make will be included in the release because they're all the right way for the project to go.
@FaheemMitha And I will do them one at a time, perfectly.
 
1:25 AM
@SeanAllred Sure, but vcs are a much more intelligent way of doing so. Preferably in every way. rsync doesn't know anything about the data.
 
@FaheemMitha Neither does your VCS in the end.
@FaheemMitha What's the point of being intelligent when you're already the most intelligent person on earth (in making no mistakes)?
 
@SeanAllred Doing it wrong isn't the issue. It's about incremental development. There will be a period when the feature isn't working completely. You probably want to work on it separately to avoid clashing with other stuff.
@SeanAllred sure it does.
 
@FaheemMitha Lies, my code is perfect!
 
for one thing, it knows that all your commits are safely stored on the remote. rsync doesn't know or care about remotes.
@SeanAllred Again, not about perfection.
 
put/get can solve that problem.
 
1:27 AM
@SeanAllred I don't know what you mean.
 
The idea of automated remote backups were around long before what anyone would call a VCS
Trust me, I've used one… –.–
 
@SeanAllred That's not what I meant. At all.
 
@FaheemMitha vvv
11 mins ago, by Faheem Mitha
@SeanAllred that last sentence isn't actually true.
@FaheemMitha I think there may be a fundamental miscommunication going on here…
If I never make mistakes, I don't see the purpose in keeping a detailed changelog.
A CHANGES is more than enough information for my users.
Thus, rewriting history is useful because it allows you to make mistakes.
 
@SeanAllred It's a record. records aren't about making mistakes. History isn't about making (or not making) mistakes.
 
At least locally.
@FaheemMitha But what if that mistake would eventually cost me my job?
I'm pretty worried about the mistake at that point
 
1:35 AM
@SeanAllred I didn't say you can't get rid of stuff if you needed to. That isn't incompatible with keeping history.
I've changed things when I made a mistory. But I still have the history.
 
@FaheemMitha But that history is extremely sensitive information. You can't apply that logic to proprietary code (and God rest your soul if you try it with classified/secret/top-secret/TS-SCI anything. That will get you in some interrogation room.)
 
@SeanAllred Sure, take out the bit that is sensitive. If your code is so sensitive that you don't want to keep any history at all, that's way outside my experience, so I can't say anything.
 
@FaheemMitha It's not that you don't want to keep history of the project, but there are certain parts that absolutely cannot be put on most networks, for instance, and to do so would be a serious breach of security. Keep the history of the code, but leave out the sensitive information. (We often worked with 'dummy data'.)
 
@SeanAllred Fair enough. Do whatever you want.
 
@FaheemMitha I'm just trying to understand why keeping history is necessary if you can't ever change that history :/
 
1:43 AM
@SeanAllred Why does history exist? In part, to help people understand the present. Have you ever read a history book? Did you think to yourself - I'm not going to be able to change this history, so I don't want to know about it?
Actually, Americans aren't all that keen on history, come to think of it. For example. They tend to think it's something that started 20 years ago.
 
@FaheemMitha Whether or not I've ever thought that is a different matter from what I actually think :)
 
@SeanAllred ok
 
@FaheemMitha Chill, man. :(
 
@SeanAllred Oh, I see you are actually American. Sorry, pretend I didn't say that last one.
 
@FaheemMitha History is useful for understanding the present, but in software, we have all sorts of supporting documentation to explain the current state of software. Design documents, architectures, SRS, SDS, SSS, (seriously, they get obnoxious), … all of these support understanding what is and why decisions were made.
@FaheemMitha In any case, I don't go around mocking other nations :P
Except France, but I think that's a holdover from being a part of England.
(kidding)
 
1:47 AM
@SeanAllred Certainly, but nobody is forcing you to keep anything. You asked why one would want to keep it.
@SeanAllred The US is generally very mockable (if that is a word). Having said that, I had no intent to offend. You, or indeed, anyone else.
 
@FaheemMitha Anyways, if there is so much supporting documentation out there in the real world, there isn't need for the version history to be an educational tool. It's interesting to look at it from a metrics perspective, but that data can be transient if that was the only use.
 
@SeanAllred I find vcs history useful because it is quite fine-grained, by its nature.
In a way a design document wouldn't be, for example.
But ymmv.
 
@FaheemMitha Have you ever used this fine-grained nature?
 
@SeanAllred Of course.
 
@FaheemMitha And as an aside, a good deal of code does make it into our design documents, but whether I think that's a good thing or a bad thing…
@FaheemMitha as have I.
@FaheemMitha to be perfectly honest I'm not sure where I was going with that one XD
I haven't eaten yet.
…at all today, actually…I'll be back shortly; going to get some groceries :)
I'd be interested in keeping this discussion going, but I think out of deference to the others in this room, we should move it to email if you'd like :) my email can be found in the termmenu documentation.
 
1:56 AM
@SeanAllred Ok, but I'm not really sure where we were going with it. And SE chat isn't a bad place for this kind of interaction. One can use a different room. I'd probably not be able to sustain such an interaction over email.
 
2:14 AM
I don’t mind you talking here, guys, it seems no one else is following what’s happing here anyway ;-)
Though I’ll have to go to bed soon anyway.
 
@ArthurReutenauer: they are talking about stuff, I guess. :)
 
@PauloCereda Yes, and for hours on end, look at the history ;-)
 
@Arthur: oh no! :)
At the bus station. I want to go home.
Expected time of arrival: 3AM
 
2:29 AM
@PauloCereda 3am, São Paulo time? That’s late :-(
 
2:43 AM
Did I write “happing” instead of happening earlier? That’s funny :-)
 
@Arthur: it is my fault for living in the countryside and studying in the capital. :)
 
But seriously, over three hours to get home? That’s harsh.
 
Night trips usually take longer. In general, it should take 2,5 hours. :)
 
So where exactly do you live, if you don’t mind me asking?
 
ohnooosbhakingevgbusagainheeeelppp
I live in Analândia. :)
 
2:52 AM
Trouble with the bus? ;-)
 
The shaking bus is back! :)
The shaking bus is back! :)
Exactly! :)
Small Android phone doesn' help. :)
 
Ha :-)
Analândia seems to be about twice larger than the village I grew up in Southern France :-)
I mean in terms of population. In area it’s considerably larger, of course ;-)
I now understand better how you could see a capybara while going to the university this morning; when you said that earlier, I imagined you saw one in a city park from a town bus, I was a little surprised.
 

« first day (1670 days earlier)