--- Log opened Thu Oct 13 00:00:03 2011 |
--- Day changed Thu Oct 13 2011 |
00:00 | | Tamber [tamber@furryhelix.co.uk] has left #code ["Fuck this. It's like bashing my head against a brick wall."] |
00:00 | < McMartin> | (I am distinguishing "cloned repos" - which I understand - from "local branches" - which I am skeptical about) |
00:00 | <@ToxicFrog> | (oh yeah, I also use local branches for testing and whatnot - for example, steamtools has a "test" branch which contains usernames and passwords and should never, ever be pushed) |
00:00 | < jerith> | McMartin: Reading the scrool, I think you and Tamber were talking past each other. |
00:00 | < McMartin> | (I flatly refuse to believe that cloned repos are an unadulterated good, because, well, UQM and its 3GB of deleted content in history) |
00:00 | <@ToxicFrog> | (the two are completely orthogonal to each other; a local branch is just a branch that doesn't exist in any clones of this repository yet.) |
00:01 | < jerith> | You were using the same words with different assumptions and context. |
00:02 | < McMartin> | So, if you branch locally, and experiment, are you going to have to hand-merge in trunk stuff? |
00:02 | < Namegduf> | No. |
00:02 | < McMartin> | Or are you deliberately avoiding that until "OK, it works, now reintegrate"? |
00:02 | <@ToxicFrog> | I think no, but I'm not sure what you mean by "hand-merge in trunk stuff" |
00:02 | < McMartin> | So, in SVN, if you make a branch instead of Just Never Committing, then changes made to trunk don't show up when you update, because it's a branch. |
00:03 | < Namegduf> | Branching, then merging, is the normal workflow for feature development with these tools |
00:03 | <@ToxicFrog> | Right. |
00:03 | <@ToxicFrog> | Same in git; merge or rebase will integrate changes between different branches (in different ways) |
00:03 | < McMartin> | There is a command (basically, svn merge $REPOURL/trunk) that you can use to put that stuff in halfway through. |
00:04 | < jerith> | McMartin: git and friends handle that much better than svn. |
00:04 | < McMartin> | And merge --reintegrate is fairly close to rebase and is the accepted way to put stuff back *in* trunk just before the other. |
00:04 | < McMartin> | jerith: This I do not deny either. |
00:04 | <@ToxicFrog> | (specifically, 'git merge branch' merges branch into the currently active branch. branch can be anything, it's not restricted to merging to/from master.) |
00:05 | < McMartin> | (There are similarly no restrictions on SVN, but given that rebasing is much more common in SVN there is some discipline necessary for the full effect) |
00:05 | < jerith> | (To the point where I actively avoided using those tools in svn most of the time, because they caused more pain than they relieved.) |
00:05 | < McMartin> | (This has been true at every point in svn until halfway through 1.6.x, where they finally got their metadata consistent.) |
00:05 | <@ToxicFrog> | (depending on project conventions, when the feature is done with, you'll either merge it into master, or rebase it onto master and then fast-forward master, and delete the feature branch afterwards in either case) |
00:05 | < McMartin> | (Right. The latter is SVN Best Practice) |
00:05 | < McMartin> | ANyway. |
00:06 | < McMartin> | My sole point of confusion is what never pushing your branches pre-merge buys one from a workflow standpoint. |
00:06 | < McMartin> | And the answer appears to be "anonymity". |
00:06 | <@ToxicFrog> | For a sufficiently loose definition of "anonymity". |
00:06 | < jerith> | svn is *particalurly* painful when you have more than one branch in flight and need to merge between them. |
00:06 | < McMartin> | "An incomplete record of what your underlings have actually been working on" |
00:07 | <@ToxicFrog> | See, I think we're approaching this from completely different angles, too. |
00:07 | <@ToxicFrog> | I'm "I use git for personal or open-source projects, and "push" is equivalent to "release" |
00:07 | < jerith> | Once you push something to a remote repo, you lose the ability to rewrite its history. |
00:07 | <@ToxicFrog> | You're "we have an organization-internal version control server, which should contain everything but which outsiders don't have access to" |
00:08 | <@ToxicFrog> | (although in that case I'd argue that you should be using p4~) |
00:08 | < McMartin> | (people not wanting to pay for p4 is why svn keeps getting developed~) |
00:08 | <@ToxicFrog> | That said. |
00:08 | < jerith> | So it's often useful to keep things local-only for a bit if you think you'll need to do that. (Note: you almost never do.) |
00:09 | < McMartin> | And yeah, TF has the use case I'm considering, without explicitly stating "and the organization has a command structure" |
00:09 | < jerith> | McMartin: p4 requires a high-bandwidth low-latency link to the server for /everything/. |
00:09 | <@ToxicFrog> | I would say that the more general answer is "it lets you keep stuff under version control, and merge in changes from master etc, even if it's stuff that should not be committed to the central repo" |
00:09 | < McMartin> | jerith: You can do svn over dialup though~ |
00:09 | <@ToxicFrog> | And it's reasonable for a project to declare "the set of stuff that should not be committed to the central repo is the empty set" |
00:09 | <@ToxicFrog> | But this is not true of all projects. |
00:09 | < jerith> | svn is painful over a transatlantic link, but p4 is effectively unusable. |
00:10 | < McMartin> | Well, once you're actually distributed, a distributed system is also going to be better. |
00:10 | <@ToxicFrog> | McMartin: you can do SVN over dialup if you're masochistic~ |
00:11 | < jerith> | When I worked at Amazon, we kept our svn server 10k miles away. |
00:11 | < McMartin> | That seems... problematic |
00:11 | < McMartin> | Especially given that svn's global repo lock is supposed to be a feature. |
00:11 | < McMartin> | If it wouldn't be, you shouldn't be using it -_- |
00:12 | < jerith> | It was initially local to the office, but that made it inaccessible from outside. |
00:12 | < jerith> | When we started having devs in the US who needed access, we moved it to Dublin. |
00:12 | <@ToxicFrog> | But yeah, I'm still not at all convinced of SVN's superiority here, even if you have a command structure. git adds new ways you can misuse it, but also removes avenues to misuse that SVN has, and it has one huge killer feature that SVN does not have and never will, which is the ability to operate detached from the network. |
00:12 | < McMartin> | This isn't "it's superior", and never has been. |
00:13 | < jerith> | Specifically Dublin rather than the US, because we wanted them to understand why we had issues using it remotely. |
00:13 | < McMartin> | This is "it now has the one feature that I had to switch to git for my personal projects for". |
00:13 | < McMartin> | Which is metadata centralization. |
00:13 | <@ToxicFrog> | (also, the "checks out the entire repo with all history" thing is not in practice that problematic, based on personal experience working on a project with 2GB+ individual checkouts and over a decade of history) |
00:14 | < McMartin> | (Those 200MB of oggs in the UQM checkout were all originally WAV and AIFF) |
00:14 | < McMartin> | (The attempted git conversion failed comically) |
00:14 | <@ToxicFrog> | (whups) |
00:14 | <@ToxicFrog> | (you can always rewrite history that they've always been OGG~) |
00:14 | < celticminstrel> | What's p4? |
00:15 | < McMartin> | Perforce |
00:15 | < McMartin> | (And then revision numbers that used to work, no longer do. PROGRESS) |
00:15 | < McMartin> | (As a semihistorical project, "imposes a linear abstraction on history" is a feature too~) |
00:15 | < McMartin> | (I do not claim this is universal) |
00:15 | < McMartin> | (But SVN literally could not version-control Inform projects on Mac, and now it can.) |
00:15 | <@ToxicFrog> | celticminstrel: Perforce, a commercial centralized version control system similar to, but not as frustrating as, SVN. |
00:16 | <@ToxicFrog> | (if you're accessing commits by revision number rather than by tag names You're Doing It Wrong, IMO) |
00:16 | < McMartin> | (That's because it only makes sense to do this when there's a global repo lock~) |
00:17 | < McMartin> | (But there is, so you can - the main thing is that you can look at the history of trunk and get a complete development history of the project back to 2002 and the mega-patch that made it compilable on modern systems at all.) |
00:17 | < McMartin> | (Git kinda does that if you're disciplined, but it seems breakable.) |
00:17 | < celticminstrel> | Why'd the git conversion fail on WAVs and AIFFs? |
00:17 | < McMartin> | (UQM is a small-committer project, though.) |
00:18 | <@ToxicFrog> | celticminstrel: because it means any checkout includes all god-knows-how-many-gigabytes of them, since any (non-shallow) checkout includes the entire revision history. |
00:18 | < McMartin> | celticminstrel: It meant that the local repository had a size amplification of a factor less like "2" and more like "300". |
00:19 | <@ToxicFrog> | (I'm not seeing how "rewrite history so that they were always OGGs" interferes with the "you get a complete development history" thing, unless you're concerned with the complete history also using the original commit IDs forever and ever) |
00:19 | < McMartin> | (If you rewrite it so they were always oggs, if you rewind to a point when they weren't *really* oggs, the code no longer runs as it did) |
00:19 | < McMartin> | A proper git conversion of something like UQM would actually remove the media content from revision control entirely, and manage it under separate cover. |
00:20 | < McMartin> | The media content is, after all, not meaningfully *edited*. |
00:20 | < celticminstrel> | "could not version control Inform projects"? |
00:20 | < McMartin> | Inform is a development system. It stores its stuff, in Mac, in a bundle. |
00:20 | < McMartin> | A bundle is a directory that is treated atomically. |
00:20 | < McMartin> | When saving a bundle, it first wipes out everything that was in it... |
00:20 | < McMartin> | ... including the per-directory SVN metadata you needed to keep it version controlled. |
00:20 | < celticminstrel> | Oh, and svn has that .svn stuff littering everywhere. |
00:21 | < McMartin> | As of 1.7, it no longer does. |
00:21 | <@ToxicFrog> | (well, you can also rewrite history so that everything is as it was except the media files aren't versioned~) |
00:21 | < McMartin> | (We'd like to keep access to the old AIFFs somehow, since the conversion to OGG was lossy~) |
00:21 | < McMartin> | (They just shouldn't be part of checkouts) |
00:21 | < celticminstrel> | By Inform you do mean the "interactive fiction" thing? |
00:21 | < McMartin> | Yes. |
00:22 | <@ToxicFrog> | (but in general I consider rewriting history to be kind of icky~) |
00:22 | < McMartin> | And specifically the Mac implementation of its IDE and debugger and test skein. |
00:22 | < McMartin> | (I swear, 90% of the git documentation is how awesome it is that you can, and how it's totally optional for any developers to have a coherent view of the code) |
00:22 | < McMartin> | (Coherent views of the code are an icky SVN thing!) |
00:22 | < Namegduf> | Uh |
00:23 | < celticminstrel> | Huh? |
00:23 | < Namegduf> | Only stuff I've seen about git rebase was full of telling me how bad an idea it was compared to merging, if at all possible |
00:23 | < McMartin> | I learned about the existence of the "master" convention from this channel, not from the official docs -_- |
00:23 | < Namegduf> | Same with other history rewrites |
00:23 | < McMartin> | That said, after this conversation, I think I can actually come up with a usable use case for why you'd want to do a DVCS for personal use. |
00:23 | < McMartin> | YOu have a dev machine, with a cloned repo. |
00:24 | < McMartin> | That guy pushes to another machine you control, which is your backup. |
00:24 | < McMartin> | You can then release by pushing to github, which will do all the relevant bits. |
00:24 | < Namegduf> | I use a DVCS personally just because it means I need absolutely no setup to start writing. |
00:24 | < McMartin> | That would actually work, right? |
00:24 | < Namegduf> | "git init", vim whatever.c |
00:24 | <@ToxicFrog> | It would, and that's basically how I use it. |
00:24 | < Namegduf> | No setting up a repo on a server somewhere, no running a server for that matter. |
00:25 | <@ToxicFrog> | I do most of my work on leela; I push to orias (my home server) when I'm on the LAN; I push to github for releases. |
00:25 | <@ToxicFrog> | And yeah, the other use case is "you can have version control for personal use at all without needing to be an Apache guru" |
00:25 | <@ToxicFrog> | (unless SVN has fixed that as well?) |
00:25 | < Namegduf> | Lets you get version control, immediately, for tiny stuff |
00:26 | < McMartin> | svn co svn+ssh://mcmartin@machine:svnroot/dir |
00:26 | < McMartin> | You can run SVN off of any machine you can ssh into |
00:26 | < McMartin> | It's still a server, so you can't do pure version control no backup |
00:26 | <@ToxicFrog> | I probably would not keep everything under version control if every single project required me to create a new repo on the server (setting aside the obvious problem of "I often have no network connection at all") |
00:27 | <@ToxicFrog> | But given how easy it is to version stuff under git, I version everything, and if it turns out to be worth keeping around, I push it to orias. |
00:27 | < McMartin> | Nah, I only kept one SVN repo (svnroot) and then each project was a directory underneath it that was svn imported. |
00:27 | <@ToxicFrog> | :gonk: |
00:27 | <@ToxicFrog> | See, that strikes me as just as bad if not worse than history rewrites~ |
00:27 | < McMartin> | The end result is that instead of going git init; vi blah.c |
00:27 | < McMartin> | You go emacs blah.c; svn import $SVNROOT/newproj |
00:27 | < McMartin> | IIRC |
00:28 | < McMartin> | As noted, I converted over to git because I started versioning Inform projects |
00:28 | | You're now known as TheWatcher[T-2] |
00:28 | < McMartin> | And I kept the filesystem structure identical, just so that it stays out of the way of everything else (the server machine is the one I IRC from, frex) |
00:29 | | Derakon[AFK] is now known as Derakon |
00:29 | < McMartin> | It's possible that my brain has been so broken by using traditional VCS that I literally cannot comprehend a better way |
00:29 | < McMartin> | But my memory of the git manual explaining DVCS was "Alice and Bob have cloned the same repository, but now Alice can take only the updates from Charlie, and Bob can take only the updates from David, and they never have to talk to a central server! Bob can even take updates from David while only telling Charlie about his edits!" |
00:30 | < McMartin> | "And all of this is awesome, not unusable chaos" |
00:30 | < McMartin> | "ps here is how you fake SVN workflows, which are way less fun" |
00:30 | < Namegduf> | That's because that is the scenario it was designed for |
00:30 | < Namegduf> | For the Linux kernel |
00:30 | < Namegduf> | It does not mean it is not useful in other workflows, but you are correct that it being a good tool for them is probably just an accident |
00:30 | < McMartin> | Yeah, I daresay this is not how you explain why anyone would want to use your product, or, indeed, teach them how to set something up |
00:31 | < Namegduf> | It sounds like exactly how you'd explain to people what the DVCS could do and how it could support a distributed setup |
00:31 | < Namegduf> | You're acting like they wrote this manual specifically to persuade you as the target audience, knowing your workflow |
00:32 | < celticminstrel> | It's not unusable chaos; it's managed chaos. ;) |
00:32 | < McMartin> | It does not, however, explain why you would want a DVCS, since as written it's a VCS that's harder to understand what's going on or what your operations do or whether you're up-to-date or, indeed, whether "up-to-date" is even a philosophically meaningful concept. |
00:32 | < Namegduf> | It doesn't explain why you'd want a distributed setup, no. |
00:32 | < Namegduf> | I don't think that was supposed to be its job. |
00:33 | < Namegduf> | The Linux kernel always had one of those, and up to date really isn't, for it |
00:33 | < McMartin> | The two use cases I've seen here that are both good and unsupported by traditional VCS are yours (so non-distributed there's not even a client/server model) and TF's (development, backup, publication) |
00:33 | <@ToxicFrog> | McMartin: er? I find it a lot easier to understand what's going on in git than I do in SVN. |
00:33 | < McMartin> | By "as written" I refer to the documentation for Git I was reading to try to learn how to actually use it. |
00:33 | < Namegduf> | Right, and the scenario I'm describing is the one it was originally designed to support, so it focusing on describing how it supports it... just makes sense. It means it isn't a sales pitch for you. |
00:33 | < McMartin> | I made the tremendous mistake of reading the official docs. |
00:34 | <@ToxicFrog> | Even before you get into the whole "the history for all branches and tags of the entire project" (or, in your case, every project you have under version control) "is one huge linear mush" |
00:34 | < McMartin> | WHich were, well, designed to talk about how much easier it made the lives of the set of kernel developers, with the serial numbers filed off. |
00:34 | <@ToxicFrog> | Aah. |
00:34 | <@ToxicFrog> | I forget what I learned git from. |
00:34 | < McMartin> | Also, uh, you can svn log subdirectories and it will happily filter them for you. |
00:34 | < McMartin> | If I sit in one project's homedir and type svn log I see only those commits that touched it. |
00:34 | | Attilla [Some.Dude@Nightstar-f29f718d.cable.virginmedia.com] has quit [Ping timeout: 121 seconds] |
00:35 | <@ToxicFrog> | But I do remember that I used the official docs as a reference manual rather than a learning resource. |
00:35 | < Namegduf> | I do not feel well equip to explain exactly why, when I'm editing a project, having a .git directory next to it with the version history |
00:35 | | * Derakon tries to remember where he learned Mercurial from. |
00:35 | | You're now known as TheWatcher[zZzZ] |
00:35 | < Derakon> | From setting up the Jetblade repo on Google Code, I think. |
00:35 | < McMartin> | Namegduf: That sentence seems to be missing some verbs? |
00:35 | < Namegduf> | Is a better architecture than having a .svn directory referencing a server which stores another copy of the project and the history |
00:36 | < McMartin> | Namegduf: Well, you're trading speed and locality for, well, locality. |
00:36 | < McMartin> | You want the server with the other copy so that if your computer explodes, your work isn't lost. |
00:36 | < McMartin> | This is the TF usecase. |
00:36 | < McMartin> | Git beats SVN there because if either computer explodes, you still have the whole history. |
00:37 | < Namegduf> | And if I backup my desktop anyway |
00:37 | < Namegduf> | Because surprisingly, not everything on it is under version control? |
00:37 | < Derakon> | Then you have triple redundancy. |
00:37 | < McMartin> | Well, there's your server, then~ |
00:37 | < Derakon> | For your projects. |
00:37 | < Namegduf> | Or I could have just regular redundancy (and add more backups) and a vastly simpler architecture |
00:37 | < Derakon> | The main benefit to distributed VCS, in my opinion, is that you can check in changes that are incomplete. |
00:37 | < Derakon> | Since you aren't hurting anyone else by doing this. |
00:38 | <@ToxicFrog> | That's the "local branching" case that McM disagrees with~ |
00:38 | < Derakon> | As long as you don't merge repos until you've finished your feature. |
00:38 | < McMartin> | Well, my initial challenge here was "how does this benefit you over the traditional diverge-and-reintegrate model" |
00:38 | < McMartin> | Since they shouldn't be checking out your divergence, it still shouldn't hurt them. |
00:39 | < Derakon> | It benefits by doing it implicitly, instead of having to manually set up a branch for each dev? |
00:39 | < McMartin> | Well, the 'implicit' part wasn't part of this; that branches were being made and then reintegrated before commit. |
00:39 | < McMartin> | I'm generally getting the idea that the rest of the world has been using some malicious malware version of SVN that is worse even than CVS, and that everyone was using it in a manner designed to cause the maximum possible number of conflicts. |
00:40 | < Namegduf> | My primary complaints with SVN are largely that its support for branching is ridiculously painful to use by comparison |
00:41 | < Namegduf> | And that I need to have a ridiculous amount of infrastructure setup to have a version history attached to a local project |
00:41 | <@ToxicFrog> | IME, this may in fact be the case, because SVN branches are (or were?) so expensive and awkward to use that most people just commited huge changesets to trunk. |
00:41 | < McMartin> | TF: well, my branch workflow is: |
00:41 | <@ToxicFrog> | "develop the entire feature and then make one commit" becomes easier than "create a branch, develop the feature in that, and then merge back into trunk" |
00:41 | <@ToxicFrog> | Wherease the latter is (a) explicitly encouraged (b) easy and (c) fast in git. |
00:41 | < McMartin> | svn branch $REPOURL/branches/mcmartin |
00:41 | < McMartin> | (switches to that as part of operation) |
00:41 | < McMartin> | (does edits) |
00:42 | < Namegduf> | With the SVN project I spend a large amount of time with |
00:42 | < Namegduf> | I have a second checkout so I can do smaller bugs and tweaks |
00:42 | < McMartin> | (periodic svn merge $REPOURL/trunk to ensure I'm not introducing conflicts/breaking other stuff) |
00:42 | <@ToxicFrog> | (granted, it has been something like three years since I had to use SVN for anything but "svn co $SOME_OSS_PROJECT'S_REPO && cd foo && make") |
00:42 | < Namegduf> | At the same time I'm working on the primary thing I'm working on |
00:42 | < McMartin> | svn switch $REPOURL/trunk |
00:42 | < Namegduf> | Because I can't save what I'm doing without committing a potentially very breaky, likely incomplete, potentially not even building thing to trunk |
00:42 | < McMartin> | svn merge --reintegrate $REPOURL/branches/mmartin |
00:42 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [Client exited] |
00:42 | < McMartin> | test, commit, done |
00:42 | < McMartin> | It's a rebase, yes |
00:42 | < McMartin> | Also, it's svn cp, not branch, sorry~ |
00:43 | < McMartin> | svn cp $REPOURL/trunk $REPOURL/branches/mcmartin, also, so I don't need a WC to do it |
00:43 | < McMartin> | Also, due to the nature of the project, perhaps, the merge rarely has conflicts |
00:44 | < McMartin> | I hear claims that git uses actual fairy dust to avoid conflicts, but have only anecdata on this point. |
00:44 | < McMartin> | But, "you have to be online to do the operations" aside... |
00:44 | < McMartin> | ... it seems like the normal branch/reintegrate workflow for svn has all of one extra command in its sequence. |
00:45 | < McMartin> | I'll give you two if you treat svn up as a separate command and don't treat fast-forwarding in git as one. |
00:46 | < McMartin> | And I'll give you that it's obnoxious that for simple commands you also need to make sure that nobody commits between your last committed merge to your branch and your switch to trunk for reintegration. |
00:46 | < McMartin> | But in a decade I've been burned by that... twice? |
00:46 | <@ToxicFrog> | git's merge resolution does seem to be a lot smarter than SVN's, but I'm not sure I'd call it fairy-dust good. |
00:46 | < McMartin> | The response seems disproportionate. |
00:46 | < Derakon> | And? |
00:46 | < Derakon> | You're dealing with CS geeks here~ |
00:46 | < Derakon> | "You don't agree with me? YOU ARE WRONG AND STUPID AND EDUCATED WRONG." |
00:46 | < McMartin> | Yes. The kind that like to sneer and go "incremental improvement, feh" |
00:47 | < McMartin> | (What little I grasped of git's merge resolution seems to be replicatable in an SVN-like system, but SVN doesn't do it AFAIK) |
00:47 | < Namegduf> | Yes, incremental improvement when you're an older project than another |
00:47 | < McMartin> | (Unless they added that in 1.7 too) |
00:47 | < McMartin> | Er |
00:47 | < Namegduf> | But that project has long-since leapfrogged you and you've sat on your ass for ages |
00:47 | < McMartin> | git being the incremental improvement. |
00:47 | < McMartin> | git is newer than svn. |
00:48 | < McMartin> | git was designed explicitly to hate SVN because Linus despises SVN. |
00:48 | < McMartin> | I'm fairly certain that this is why svn checkout is git clone, and git checkout is svn revert. |
00:48 | < Namegduf> | Oh, I thought you were talking about people being incredibly unimpressed with svn 1.7. |
00:48 | < McMartin> | Oh, no. |
00:48 | < McMartin> | 1.7 came out, like, last week. |
00:49 | < McMartin> | This is "why so hate for svn, the older project that appears to be, for the things that aren't specific usecases git was designed for, at worst incrementally inferior" |
00:49 | < McMartin> | And the answer appears to be "they've had to deal with malevolent idiots I'd have offered physical violence to" |
00:49 | < McMartin> | Taking out multiple branches with a single checkout is both o_O and >_< |
00:49 | < McMartin> | To say nothing of a single commit >_< |
00:49 | | celticminstrel [celticminstre@Nightstar-5d22ab1d.cable.rogers.com] has joined #code |
00:50 | < McMartin> | Anyway, the bit of git's merge that I could grasp that was better is that it applies the diff to the earlier version of the codebase, not the current one. Unless it's a rebase. |
00:50 | < McMartin> | And hey, git rebase fails nearly as often as svn reintegrate, by astounding coincidence. |
00:51 | < McMartin> | But svn should be able to get the earlier version, so that kind of thing ought to be sensibly backportable. |
00:51 | < McMartin> | (They did a little bit of that in the 1.6 timeframe, but it didn't help reintegration.) |
00:52 | < Namegduf> | Well, I wish them luck in catching up to 2005 |
00:52 | < Namegduf> | I guess SVN dev isn't too active nowadays? |
00:54 | < McMartin> | It's developed by smaller groups, usually companies that are invested in it. |
00:54 | <@ToxicFrog> | McMartin: re "why so hate" - for personal use, because I find SVN incredibly slow and awkward and inconvenient to use, to the extent that I did not regularly use version control except as required by work or school until introduced to git; for collaboration, because while they both have a lot of ways to screw things up, it seems to happen less with git. Or perhaps it's just easier to fix. |
00:54 | < McMartin> | It's still being developed, which deeply offends a lot of the DVCS people who get mad when it gets feature updates instead of being set on fire and used as an object of scorn and derision. |
00:55 | < Namegduf> | I'm sure they'll finish doing CVS right eventually. |
00:55 | < McMartin> | And, uh, also, it seems that the last time TF used it didn't have branch metadata, ssh tunneling, or autofiltered logs, so I can see where that would be annoying, but, um. |
00:55 | < Namegduf> | :P |
00:55 | < McMartin> | s/CVS/RCS/ |
00:55 | < McMartin> | And if you don't think Git is an RCS rewrite with improvements you're ignoring history~ |
00:55 | < celticminstrel> | I've used a lot of git rebase (not by choice) and it seems to work amazingly well, but does rely on you to resolve conflicts along the way. |
00:55 | < Namegduf> | Personally, I started on git, so the "svn hate" is just... "this is basically worse at almost anything I could want to do personally" |
00:56 | < McMartin> | celticminstrel: In short, it's not really any worse than svn merge reintegrate~ |
00:56 | < Namegduf> | Now, I use SVN from time to time willingly |
00:56 | < McMartin> | Namegduf: Well, it's explicitly not for your normal use case. |
00:56 | < Namegduf> | But this is because I also have to dev on Windows for work |
00:56 | < McMartin> | It's client-server. |
00:56 | < McMartin> | Ha, yes, that is definitely a place where Git needs to be kicked in teeth. |
00:56 | < McMartin> | "Could we maybe have commandline tools that can be called from something that isn't bash" |
00:57 | < Namegduf> | No CLI tools on Windows. |
00:57 | < Namegduf> | Just no. |
00:57 | < McMartin> | And Git's "windows explorer integration" appears to be "open an MSYS bash shell at this location" |
00:57 | < Namegduf> | I am a huge fan of the terminal on Linux, use aptitude, vim, etc |
00:57 | <@ToxicFrog> | ISTR hearing about a TortoiseGit existing |
00:57 | < McMartin> | ToxicFrog: Yup. |
00:57 | < McMartin> | The thing it puts in is "Git Bash here" |
00:57 | < McMartin> | I used it for FotH. |
00:57 | <@ToxicFrog> | But I do all of my windows development using a cygwin shell anyways, so |
00:57 | < Namegduf> | But the Windows command prompt is like being punched in the face repeatedly |
00:57 | <@ToxicFrog> | Aah. |
00:57 | <@ToxicFrog> | Unfortunate. |
00:57 | <@ToxicFrog> | Namegduf: rxvt for windows supremacy~ |
00:57 | < McMartin> | ^- |
00:58 | < McMartin> | MSYS even gives you native code that doesn't require the cygwin jackassery |
00:58 | < Namegduf> | It's more about entirely complete and reliable VS integration for me |
00:58 | <@ToxicFrog> | And yeah, one of the things msysgit does right is coming with the msys build of rxvt and defaulting to it. |
00:58 | < Namegduf> | Or, more to the point, for the other users |
00:58 | < McMartin> | But there's a reasonable set of tools at the IT level for Windows. |
00:58 | < McMartin> | Not so much for the end user level. |
00:58 | <@ToxicFrog> | If you must ship the windows version as a command line tool, that's the way to do it. |
00:58 | < celticminstrel> | I really need to prune about a third of my 143 Chrome tabs... |
00:59 | < McMartin> | TF: I'd have preferred actual shell integration a la TortoiseSVN. |
00:59 | < McMartin> | And, IIRC, TortoiseHg... |
00:59 | <@ToxicFrog> | McMartin: yeah, see, at that point I'm not calling it a command line tool anymore. |
00:59 | <@ToxicFrog> | It's a shell mod that may invoke command line tools under the hood. |
00:59 | < McMartin> | Right |
00:59 | < celticminstrel> | It makes Chrome startup rather slow and somewhat laggy. |
00:59 | <@ToxicFrog> | And I agree that this is the superior way to do it. |
00:59 | < McMartin> | So, the thing about WinGit is that it cannot run from any shell but MSYS bash. |
01:00 | < McMartin> | This goes beyond "restriction" and into "retarded" |
01:00 | < Namegduf> | I dunno why I'd want to use a shell on Windows, anyway |
01:00 | < McMartin> | Scripting stuff you want to automate |
01:00 | < Namegduf> | I would install Cygwin and write shell scripts before touching batch files |
01:00 | < McMartin> | (hilariously, Windows's native scripting language is actually JavaScript, renamed to avoid trademark conflicts) |
01:01 | < McMartin> | At the level of batch files, you'd use alias. |
01:01 | < McMartin> | Or should. |
01:01 | < Namegduf> | Oh, the other scripting system. Why would I use a CLI for those? |
01:01 | < McMartin> | ... because that way you can dump the output to a file or something? |
01:01 | < McMartin> | > and < all still work and stuff |
01:02 | < Namegduf> | To be clear, by "use a shell" I am referring to the user interface |
01:02 | < Namegduf> | Not the interpreter |
01:02 | < McMartin> | Oh, OK |
01:02 | < McMartin> | Yeah, that wasn't my intent up there |
01:02 | < Namegduf> | So your complaint is that you can't script it properly? |
01:03 | < McMartin> | It's more "that it only runs in a separate emulation layer instead of being either native, like SVN, or in a proper interpreted language that is deployed on the platform, like Mercurial" |
01:03 | < McMartin> | And yeah, that I can't right-click a directory and say "Git update" or "git commit" or "git push" |
01:04 | < McMartin> | Granted, this was last year |
01:04 | < McMartin> | Tortoise may have improved it some. |
01:05 | < McMartin> | But failing that, I *also* can't write a batch file that strings together a few commands involving git and put it somewhere where I can double-click and forget about it. I have to instead open a shell window and run a bash script from there. |
01:05 | < Namegduf> | But, yeah. From my perspective on a Linux machine, svn is just like git, except I need to set up a daemon and server before I can use it. I thought repo per project, but I'm not massively happy with the only way to avoid that being to glue all the histories together, either |
01:05 | < McMartin> | Which, unlike the scripts at that level of simplicity for things that that *aren't* git, won't run if invoked in cmd.exe |
01:05 | < Namegduf> | git also lets me actually email people the whole repo |
01:05 | < Namegduf> | Including the history |
01:06 | < McMartin> | Yeah, cloned repos are an obvious win when they are an obvious win. |
01:06 | < McMartin> | SVN hasn't required a server in at least five years. |
01:06 | < Namegduf> | And it is just a functional copy of the program, with history if they want to look. |
01:06 | < McMartin> | Er, a separate server daemon, that is. |
01:06 | < McMartin> | The SVN+SSH thing Just Happens if you have svn installed and are ssh-able. |
01:06 | < Namegduf> | And you set up a server directory structure somewhere, yes |
01:07 | < McMartin> | (caveat: This might be because Linux distro people aren't idiots and make the svn package do the necessary work, but there's no apparently svnd or anything on the system in default) |
01:07 | < McMartin> | Yeah, if you mean server *machine* there, go ahead. |
01:07 | < McMartin> | But you don't need the daemon. |
01:07 | < Namegduf> | I'm not saying it's not workable |
01:07 | < Namegduf> | Just that it's all this extra stuff for no win in the usecases I've ever worked with on Linux. And since git was the first one I used heavily, I've never had any reason to look at changing. |
01:08 | < Namegduf> | (I use hg a lot, for other projects which favour that flabour) |
01:08 | < Namegduf> | *flavour |
01:08 | | * McMartin ndos |
01:09 | < McMartin> | HG is better at crossplatform, worse at being used by projects I need to interact with |
01:11 | < McMartin> | Also, yeah, while you can also use file:/// repos, git handles local-only VCS a lot more cleanly. |
01:22 | | * ToxicFrog resyncs |
01:23 | <@ToxicFrog> | A lot of the issues with the windows version of git stem from the fact that, under the hood, it's actually kind of horrific; most of it is bash and perl. |
01:23 | <@ToxicFrog> | You can very clearly tell that it started off as a personal hack that evolved, rather than being something that people sat down and designed like Hg. |
01:23 | < McMartin> | Yeah. The bash bits are why it doesn't "go native" the way Hg does with Python. |
01:23 | < McMartin> | (Windows has a number of quite solid perl implementations) |
01:24 | <@ToxicFrog> | There is currently work on changing that and replacing the huge pile of bash and perl scripts with a platform-independent "libgit" that the command line tools are just frontends to, but last I checked this wasn't finished. |
01:25 | < McMartin> | That would certainly clean things up a lot. |
01:25 | < McMartin> | Git was also, IIRC, created under absurd time pressure |
01:26 | <@ToxicFrog> | Yes. |
01:26 | < McMartin> | Ha ha, OK, that's some evidence for your idiot students being a common use case -_- |
01:27 | <@ToxicFrog> | Oh, also - The Plot Thickens in 1044 clocks >.> |
01:27 | < McMartin> | TortoiseSVN 1.7 includes a "treat the subdirectories of this checkout as separate repos, to block operations that might cross them" checkbox. |
01:27 | <@ToxicFrog> | And 32 instructions. |
01:28 | < McMartin> | I forget which one The Plot Thickens is. |
01:28 | <@ToxicFrog> | Given C and H, produce (C2H4)N |
01:28 | <@ToxicFrog> | The requested output molecule contains 12 H and 6 C. |
01:28 | <@ToxicFrog> | Er. (C2H4)n |
01:29 | < McMartin> | Ah, your first polymer. |
01:29 | < McMartin> | That's (C2H2)n, though, isn't it? |
01:29 | < McMartin> | And yeah, that particular trick is also what made Suspicious Behavior be Not So Bad. |
01:29 | <@ToxicFrog> | ...924 clocks. |
01:30 | | * McMartin has no incentive to optimize it, though. |
01:30 | <@ToxicFrog> | (1044 was my first attempt~) |
01:30 | <@ToxicFrog> | (and it says (C2H4)n, the actual structure is a chain of H-C-H connected through the C) |
01:31 | < McMartin> | (Ah, OK) |
01:31 | < McMartin> | (Was thinking HCCH, but that's not until later) |
01:31 | < McMartin> | (I think |
01:31 | < McMartin> | (I'd have to recheck exactly what it was, but my solution there is *hilariously* inefficient; so much so I am loath to rewrite it) |
01:32 | <@ToxicFrog> | (yeah, the leaderboard lists you as being north of 3k clocks) |
01:34 | | * Vornicus sighs, opens spacechem, has a look at what he's at next. |
01:35 | < McMartin> | (No, I'm thinking of one in Chapter 7 in which I manage to run through the top row four times doing something different each time thanks to flip-flop abuse) |
01:35 | < McMartin> | (It is a thing of terrible beauty) |
01:38 | | * Vornicus shoots down the cargo ship first though |
01:38 | < Vornicus> | Sacre Bleu! |
01:39 | < Vornicus> | Which is cyanide + methane to hydrogen + acetonitrile. |
01:40 | < McMartin> | My two open levels at the moment involve nosuchium and unobtanium, though not by those names. |
01:40 | | * Vornicus gets a variety of stupid ideas, doesn't think any of them will work |
01:40 | <@ToxicFrog> | McMartin: remind me, is OUT X a no-op or a block if X is empty? |
01:41 | < Vornicus> | Noop |
01:41 | < McMartin> | It's a block, waits for the other waldo do to a drop |
01:41 | < McMartin> | ... though I don't know about in research stages |
01:42 | < Reiver> | McM: Wrong atomic numbers, or wrong names? |
01:42 | < Vornicus> | Noop. |
01:42 | < Vornicus> | I depend on the noop behavior in "removing bonds" |
01:42 | < McMartin> | Reiver: Generic greek letters, ??? for number and bond max. |
01:43 | < Vornicus> | OUT blocks n-1 cycles if there's n separate objects in the output bin. |
01:43 | < Vornicus> | Even on research stages |
01:43 | < McMartin> | Produces compounds like "Carbomega" and "Diatomic Sigma" and "Delta-pseudopolyethylene" |
01:44 | < McMartin> | OUT blocks until cleared in production if the pipeline is full and the other reactor isn't reading. |
01:45 | < Vornicus> | and empty X is noop in production too; my "There's Something In The Fishcake" hops over an out on its way through the setup cycle |
01:48 | | * Vornicus considers Molecular Foundry |
01:55 | | * ToxicFrog destroys Danger Zone in 249 cycles on the second try. |
02:01 | <@ToxicFrog> | I'm pretty happy with that one. |
02:09 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code |
02:13 | | gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
02:17 | < Vornicus> | Is there a highway there? |
02:31 | < Phox> | Confusing. I have a structure with a public method generatePoints(), and a private method allocArrays(). How do I call allocArrays() from within generatePoints? |
02:31 | < Phox> | It's saying it's not declared in this scope, which tells me it doesn't know where to look to find my function |
02:31 | | Kindamoody[zZz] is now known as Kindamoody |
02:32 | < Vornicus> | You should Just Be Able To. |
02:32 | < Vornicus> | What language though? |
02:33 | < Phox> | That's what I thought, as well. It works when I have a public method call a public method |
02:33 | < Phox> | c++ |
02:33 | < Vornicus> | Are you using this to call your methods? You don't have to, generally |
02:33 | < Phox> | What do you mean? |
02:35 | < Phox> | Yup, nevermind |
02:35 | < Phox> | Found the error. |
02:36 | < Vornicus> | Like if you're going int generatePoints() { ... this.allocArrays() ... } that may not work; just going allocArrays() should do it |
02:39 | <@ToxicFrog> | Vornicus: there was. |
02:39 | <@ToxicFrog> | I destroyed that too~ |
02:39 | < Vornicus> | Heh |
02:42 | < McMartin> | Vorn: even this->allocArrays() would work; private lets you get even at the internals of other instances of the same class |
02:42 | < McMartin> | Now, if allocArrays is in a superclass, it has to be protected. |
02:42 | < Phox> | It was definitely none of those things |
02:42 | < McMartin> | What was it? |
02:42 | < Phox> | Ehhhh..... it's embarassing |
02:42 | < McMartin> | Misspelled method name? |
02:42 | < Vornicus> | Oh, right |
02:43 | < Phox> | My method definition was generatePoints() {} rather than spoint::generatePoints() {} |
02:43 | < Phox> | Er, method implementation |
02:43 | < Phox> | That thating they call it |
02:43 | < Phox> | *thing |
02:43 | < Vornicus> | Definition |
02:44 | < Vornicus> | (is what I've always heard it called) |
02:44 | < Phox> | Okay. I didn't want to get that confused with the declaration |
02:44 | | Vornicus is now known as Vornicus-Latens |
02:48 | | ServerMode/#code [+o Vornicus-Latens] by *.Nightstar.Net |
02:49 | | mode/#code [+r] by ChanServ |
02:49 | | mode/#code [+q Vornicus-Latens] by ChanServ |
02:49 | | Vornicus-Latens changed the topic of #code to: Welcome to #Code! || RIP Dennis Ritchie || Rants and monologues are encouraged; many cores, no waiting || Pastebin: http://pastebin.starforge.co.uk/ (Note antispam question, answer 'Yes') || ? x, ich werde x Wissenschaft tun |
02:52 | < Derakon> | Ritchie died? |
02:53 | <~Vornicus-Latens> Apparently |
02:53 | <~Vornicus-Latens> Wikipedia sources it on Rob Pike's G+. |
03:14 | < Phox> | Hmm. So, I've got a method inside a struct inside a class. Any time I try and access a variable in the class from the method, I get a build error. |
03:14 | < celticminstrel> | It's not incorrect to call it "method implementation" though; it's just not the "C++ term" used for it. |
03:14 | < Phox> | The class is called ctriangle, the struct is spoints. So, my syntax from the struct's method is ctriangle.chordAngle, to access the cariable |
03:14 | < Phox> | *variable |
03:15 | < celticminstrel> | That's correct Phox, declaring a class in a class is no different from declaring them side-by-side. |
03:15 | < celticminstrel> | There's nothing like Java's "inner classes" that have privileged access to the enclosing class. |
03:16 | < Phox> | I've read some posts about this, and they say it's because there's no instance of the class, but how can that be when I'm working inside the thing? |
03:16 | < celticminstrel> | You're not working inside the class unless you're in one of its member functions. |
03:18 | < Phox> | So, a member function in a nested class isn't inside the top class? |
03:18 | < Phox> | I'm a bit confused |
03:22 | < Phox> | Lemme throw this in a pastebin, really quick. |
03:25 | < Phox> | http://pastebin.com/CRUYjLk4 I've marked the lines I'm getting a build error on. If what I'm reading is right, I need to have an instance of ctriangle already declared, and refer to that in the struct, but that's silly if the struct is inside ctriangle. |
03:28 | < Phox> | What I had expected was that the public variables in ctriangle would be visible inside the struct by name, rather than class.name |
03:30 | < celticminstrel> | I don't see the part where you have a class in a class... |
03:30 | < Phox> | spoints is inside ctriangle. A struct is a class too, right? |
03:31 | < celticminstrel> | spoints is not inside ctriangle. |
03:31 | < celticminstrel> | When you say "a class is inside a class", normally you mean the declaration of one class is inside the declaration of the other. |
03:31 | < celticminstrel> | (A struct is a class though, yes.) |
03:32 | < celticminstrel> | In this case, you just have to use points.var to access the variables. |
03:32 | < Phox> | I had no idea I could do that. So, I could take my declaration of spoints, and move that inside ctriangle? |
03:32 | < celticminstrel> | No, that wouldn't change anything. |
03:33 | < celticminstrel> | If it were Java, that would get the effect you want, but it's not Java. |
03:50 | < Phox> | Ha, what a hackjob this turned out to be. It runs, though, which is good because I should have been studying for a term test hours ago |
04:35 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
04:52 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has quit [Ping timeout: 121 seconds] |
05:42 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code |
06:18 | | Janus [NSwebIRC@Nightstar-74489505.res.rr.com] has joined #code |
06:19 | | celticminstrel [celticminstre@Nightstar-5d22ab1d.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
06:50 | | Derakon is now known as Derakon[AFK] |
06:53 | | Vornicus-Latens [vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
06:54 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
06:54 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:05 | | Kindamoody is now known as Kindamoody|out |
08:11 | | Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Client closed the connection] |
08:13 | | Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code |
09:00 | | Attilla [Some.Dude@Nightstar-f29f718d.cable.virginmedia.com] has joined #code |
09:05 | | AnnoDomini [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has joined #code |
09:23 | | You're now known as TheWatcher |
09:59 | | gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has joined #code |
10:01 | < gnolam> | ... Dennis Ritchie's bought the farm :o |
10:02 | < McMartin> | Indeed |
10:03 | < AnnoDomini> | Now that's someone to mourn about. |
10:10 | < jerith> | Maybe he just wanted to outlive Steve? |
10:11 | < AnnoDomini> | Achievement Unlocked! |
11:43 | | * AnnoDomini realizes he has 500+ MB of archived old versions of DF. |
11:45 | | * gnolam still hasn't gotten around to playing DF2010. |
11:46 | < gnolam> | (And I probably never will) |
11:47 | < AnnoDomini> | The latest bugfix version is pretty good. |
11:48 | < AnnoDomini> | I especially like the abundance of magma and adamantite. |
11:50 | | * gnolam is skeptical. |
11:50 | < AnnoDomini> | You might have different standards than I do. |
11:51 | | Janus [NSwebIRC@Nightstar-74489505.res.rr.com] has quit [[NS] Quit: I built a ramp of <<<<<<<< but they never used it. Then the Elephant happened.] |
13:36 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code |
13:41 | | AbuDhabi [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has joined #code |
13:41 | | AnnoDomini [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has quit [[NS] Quit: Reconnecting] |
13:47 | | AbuDhabi [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has quit [[NS] Quit: leaving] |
14:31 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code |
14:45 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
15:13 | | Stalker [Z@Nightstar-5aa18eaf.balk.dk] has joined #code |
15:45 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
16:43 | | Kindamoody|out is now known as Kindamoody |
17:04 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has quit [Ping timeout: 121 seconds] |
17:04 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code |
17:16 | | Vash [Vash@Nightstar-f03c5637.sd.cox.net] has joined #code |
17:17 | | Vash is now known as Vash[Maid|Packing] |
17:56 | | Vash[Maid|Packing] [Vash@Nightstar-f03c5637.sd.cox.net] has quit [Client closed the connection] |
17:56 | | cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code |
17:56 | | Vash[Maid|Packing] [Vash@Nightstar-f03c5637.sd.cox.net] has joined #code |
17:59 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [Ping timeout: 121 seconds] |
18:01 | | Serah [Z@Nightstar-5aa18eaf.balk.dk] has joined #code |
18:02 | | Stalker [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds] |
19:18 | | Derakon [chriswei@Nightstar-f68d7eb4.ca.comcast.net] has joined #code |
19:18 | | * Derakon does the happy coder dance. |
19:18 | < Derakon> | I got the camera to take an image, and successfully interpreted the result! |
19:18 | < Derakon> | Now I can start testing the mode where the data isn't byte-aligned! |
19:20 | < gnolam> | Congrats. |
19:21 | < Derakon> | ...it appears to have worked first try. Very suspicious. |
19:21 | < Derakon> | Well, not perfectly, but close. |
19:30 | < Derakon> | Here, have a scaled-down version of the image: http://derakon.dyndns.org/~chriswei/temp2/scmos2.png |
19:30 | < Derakon> | (Actual camera is black and white; that's false-color with blue = 0, red = max) |
19:30 | < Derakon> | (And it's upside-down) |
19:34 | < Derakon> | Okay, there's a sign that my code's buggy. The output data should be in the range 0-2^11, but I'm reporting a max readout value of 3834... |
19:34 | < gnolam> | What are we looking at? |
19:36 | < Derakon> | A slightly out-of-focus optical breadboard table. |
19:36 | < Derakon> | Or rather, the equipment mounted on one. |
19:36 | < gnolam> | ... also, is it really 0-2^11 and not 2^12 - 1? |
19:36 | < gnolam> | *0- |
19:36 | < Derakon> | 11 bits per pixel, but they use 12 bits to make it slightly less painful to unpack. |
19:36 | < Derakon> | The top bit is always 0, supposedly. |
19:39 | < Derakon> | (Optical breadboard tables are giant metal tables, very stable, with boltholes at regular intervals that you can screw mounts into to put your devices on) |
19:42 | < gnolam> | Laser lab-ish tables, in other words. |
19:42 | < Derakon> | gnolam: oh, right, the top is 2^11-1, my bad. |
19:42 | < Derakon> | I wouldn't be surprised if they're the same thing, yeah. |
19:48 | < gnolam> | Probably. |
19:49 | < gnolam> | The tables you use with FRIGGIN' LASERS are large, extremely stable and have attachment points everywhere. You want to be able to set up whatever experiment you want and also /not/ have someone entering the room triggering a stray reflection. |
19:50 | < Derakon> | Note that we do mount friggin' lasers to our tables. :) |
19:50 | < Derakon> | They're what we use to illuminate our samples! |
19:50 | < gnolam> | (Although, the last time I was in a laser lab, the responsible physicist wore her keychain around her neck. And tended to absent-mindedly lean over the table from time to time. :-/) |
19:51 | < gnolam> | (Ever been in one of those situations where you're just waiting for the screaming to begin? Yeah, that was it.) |
19:52 | < Derakon> | No goggles, huh? |
19:52 | < TheWatcher> | They do nothing~ |
19:52 | < gnolam> | No goggles. |
19:52 | < Derakon> | Notch filter goggles are actually very effective. |
19:52 | < Derakon> | But if you need to be able to see the laser light, then you can't wear them all the time... |
19:52 | < gnolam> | You do not actually need them if the setup is fixed. |
19:53 | < Derakon> | And doesn't shine onto a disco ball. :) |
19:53 | < gnolam> | Yah |
19:53 | < Derakon> | Of course, one of the reasons to use these tables is that you anticipate wanting to change your setup. |
19:53 | | * TheWatcher eyes the universe |
19:53 | < gnolam> | Unfortunately, no regulation can ever properly take human stupidity into account. |
19:54 | < TheWatcher> | This would be the point where I get a spam email with the subject "Explosive applications bench", wouldn't it? |
19:54 | < Derakon> | Hee. |
19:54 | < McMartin> | Oh hey, Ubuntu: Revolver Ocelot is out |
19:55 | < gnolam> | Radiation physicists, OTOH, wear goggles whether they're needed or not. Sure, you might be wearing shorts and a t-shirt otherwise, but at least your eyes are protected from beta rays! |
19:55 | < Derakon> | So is this a bench that you use when working on your TNT synthesizer, or is it a bench that you pack the outputs of that synthesizer into? |
19:56 | < gnolam> | (Beta goggles are so much uglier than laser goggles though) |
20:00 | | * Derakon heads to lunch. |
20:00 | < gnolam> | McMartin: what's it really called this time? |
20:00 | < McMartin> | Oneiric Ocelot. |
20:01 | < McMartin> | And before you ask, "of or related to dreams: see ONEIROMANCY" |
20:01 | < gnolam> | Pfft. Do people not know who the Oneiri were? |
20:02 | < gnolam> | *Oneiroi |
20:02 | < gnolam> | (Damn you, accidental latinization) |
20:04 | < McMartin> | I had in fact originally confused oneiro- with oeno- and thus originally guessed "wine-addled ocelot" |
20:04 | < McMartin> | And this keyboard has an EL mode and I have to resist switching to it >_> |
20:04 | | * gnolam snickers |
20:05 | < gnolam> | And suddenly I feel the urge to listen to some more Oneiroid Psychosis. |
20:06 | < gnolam> | (Obscure darkwave) |
20:07 | < gnolam> | A-ha! |
20:07 | | * gnolam finally finds and squashes a hard-to-find bug. |
20:07 | < TheWatcher> | \o/ |
20:07 | | Kindamoody is now known as Kindamoody[zZz] |
20:12 | | * Rhamphoryncus sees only Ornery Ocelots ;) |
20:13 | < gnolam> | Onanistic Owls. |
20:14 | | Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Client exited] |
20:15 | < gnolam> | Ozric Opossum. |
20:56 | < Derakon> | Ach, one of the biologists wants to generate some probabilities. Well. A few (hundred?) million probabilities. And each call takes about .5ms, and doesn't have sufficient precision anyway... |
20:56 | < Derakon> | And the calls are going out to the SciPy library so I can't really optimise that for her. |
20:57 | < Derakon> | Ended up pointing her at the scipy-users list. |
21:11 | <@ToxicFrog> | Time for a cluster~ |
21:11 | < Derakon> | She was pretty dead-set on improving the runtime of the code rather than letting the computer run for a few days. |
21:11 | < Derakon> | Maybe she anticipates needing to do this repeatedly. |
21:13 | <@ToxicFrog> | Back-of-the-envelope calculation says that running this on Requin or Saw would take the runtime from ~3 days to <5 minutes, assuming each generation is independent. |
21:13 | <@ToxicFrog> | this of course assumes you have a cluster with thousands of cores to make use of, though >>> |
21:14 | < Derakon> | Requin/Saw? |
21:14 | <@ToxicFrog> | Sharcnet clusters. |
21:14 | < Derakon> | Ah. |
21:14 | < Derakon> | And yeah, the example she showed me was "for i in xrange(0, bignum, 10000): make expensive call(i)" |
21:14 | <@ToxicFrog> | (running it on Mako, a smaller but much less heavily contended cluster, "only" gives you a factor of 200+ improvement~) |
21:15 | < Derakon> | Heh. |
21:15 | <@ToxicFrog> | (Requin and Saw have ~1500 and ~2700 cores respectively) |
21:15 | < Derakon> | Quick reminder for my sake: when doing math with a char, the char gets promoted up to int for the duration of the math, right? |
21:15 | <@ToxicFrog> | I -think- so but hell if I remember C coercion rules that well. |
21:15 | < Derakon> | E.g. "int foo = ((char) 8) << 10;" |
21:16 | < Derakon> | Hm, looks like it. |
21:16 | < Derakon> | So that's one source of error gone. |
21:23 | | celticminstrel [celticminstre@Nightstar-5d22ab1d.cable.rogers.com] has joined #code |
21:24 | | * Derakon eyes the byte sequence he's getting out. |
21:24 | < Derakon> | 6 68 6 6 70 6 6 53 6 6 69 6 6 69 6 |
21:25 | < Derakon> | Each number is a char; the pixel values are 12 bits each (e.g. 6 << 4 + 68 >> 4 should be the first pixel). |
21:25 | < Derakon> | That seems like a weird pattern though. |
21:25 | < Derakon> | Though I guess 68 is 0b01000100. |
21:27 | < Derakon> | So if I look at 4-bit values I'm seing "0 6, 4 4, 0 6, 0 6, 4 6, 0 6, 0 6, 3 5..." |
21:29 | | celticminstrel [celticminstre@Nightstar-5d22ab1d.cable.rogers.com] has quit [Operation timed out] |
21:52 | | * Derakon eyes http://derakon.dyndns.org/~chriswei/temp2/elevenbit.png and wonders how the hell that even happens. |
21:53 | < Derakon> | Compare to http://derakon.dyndns.org/~chriswei/temp2/scmos2.png |
21:53 | | * TheWatcher eyes that first one |
21:53 | < Derakon> | The latter is from doing memcpy on 11-bit pixels that have been aligned to every 2 bytes. |
21:53 | < TheWatcher> | ... looks like an old Dr Who special effect |
21:53 | < Derakon> | The former is from my attempt to manually unpack 11-bit pixels that have been aligned to every 12 bits. |
21:55 | < TheWatcher> | S'funny, looks like there's a figure at the right middle side of the image there... |
21:56 | < Derakon> | Yeah, I can kinda see it. |
21:56 | < Namegduf> | I see them. |
21:56 | < Namegduf> | They're just standing there, looking at me from inside the noise. |
21:56 | < Namegduf> | Weird. |
21:57 | < Derakon> | What I want to know is what that moire pattern is doing in there. |
21:57 | < Namegduf> | The guy is emitting it through telekinesis. |
21:57 | < Derakon> | I wouldn't think that the transformation I'm applying could achieve that kind of result. |
22:31 | < Derakon> | Argh, this shouldn't be %Bthat%B hard. |
22:31 | < Derakon> | Er. that |
22:31 | < Derakon> | From what I can tell, I'm doing the correct conversion. |
22:31 | < Derakon> | So why do the output images look so different? |
22:35 | < Derakon> | Oh, maybe this is a little-endian problem. |
22:36 | < Derakon> | ...oh what the fuck. |
22:36 | < Derakon> | From the documentation, which I should have checked first! http://derakon.dyndns.org/~chriswei/temp2/encoding.png |
22:36 | < Derakon> | Mono12Packed is the encoding I'm trying to deal with. |
22:37 | < Derakon> | Is that sensible? It doesn't look sensible. |
22:37 | < McMartin> | Can't you just run it through a standard codec and get unicode strings out the other end~ |
22:37 | < Derakon> | It's flipping between big- and little-endian depending on if the pixel is byte-aligned or not. |
22:37 | | * Derakon baps McM on the head with eta-methylene. |
22:38 | < Derakon> | (Which may not exist, but whatever) |
22:39 | < TheWatcher> | That's, um, a novel storage method, certainly. |
22:39 | < McMartin> | Omega-Pseudoethylene is the current issue. |
22:40 | < McMartin> | And I'm giving it a rest, it's driving me mad. |
22:40 | < Derakon> | The only reason I can think of to do things this way is that you can ignore every other pixel and only introduce +-8 counts of error. |
22:40 | < Derakon> | But that really doesn't seem like a good reason to do things this way. |
22:42 | < Derakon> | And yeah, that result looks about right. |
22:42 | < Derakon> | What the hell, Andor. |
22:42 | | Serah [Z@Nightstar-5aa18eaf.balk.dk] has quit [[NS] Quit: If the world didn't suck, we'd all fall off.] |
22:43 | < Derakon> | Though I think I'm losing some dynamic range somewhere. |
22:43 | < Derakon> | Compare http://derakon.dyndns.org/~chriswei/temp2/scmos2.png http://derakon.dyndns.org/~chriswei/temp2/scmos3.png |
22:43 | < Derakon> | Oh wait, pixels aren't getting truncated properly. I have a value over 2047. |
22:43 | < Derakon> | So the image scaling's off. |
23:00 | | * Derakon eyes his code. |
23:00 | < Derakon> | Okay, somehow I've managed to drop down to 8 bits of precision and I don't understand why. |
23:10 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code |
23:19 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has quit [Ping timeout: 121 seconds] |
23:20 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code |
23:28 | < Derakon> | Ah! Dur. |
23:29 | < Derakon> | The problem wasn't that my values were restricted to 2^8, it was that I was exposing so little light to the CCD that my counts weren't exceeding around 250. |
23:29 | < Derakon> | Amp up the gain a bit and we're taking full advantage of all 11 bits. :) |
23:30 | < Derakon> | (Or increase the exposure time, that works too) |
23:43 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has quit [Ping timeout: 121 seconds] |
23:43 | | cpux|2 is now known as cpux |
23:45 | | gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has quit [[NS] Quit: Blergh.] |
23:48 | | Reiver [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code |
23:59 | | Derakon [chriswei@Nightstar-f68d7eb4.ca.comcast.net] has quit [[NS] Quit: leaving] |
--- Log closed Fri Oct 14 00:00:25 2011 |