--- Log opened Wed Oct 02 00:00:09 2013 |
00:01 | < simon_> | ah, here's something nice. if I calculate all bridges before I remove any edges, if I remove a bridge, all bridges will continue to be bridges in their sub-graphs. |
00:01 | < simon_> | so I only need the heavy lifting of finding bridges once. |
00:01 | < simon_> | or do I... I could remove an edge that isn't a bridge and thus make other edges into bridges. |
00:04 | | Turaiel[Offline] is now known as Turaiel |
00:05 | < simon_> | thanks, RichyB. |
00:06 | < RichyB> | I don't think I did much but you're welcome. |
00:22 | | Derakon[AFK] is now known as Derakon |
01:00 | | ktemkin[coats] is now known as ktemkin |
01:05 | <&ToxicFrog> | It needs further testing, but thus far, bup owns. |
01:07 | <&ToxicFrog> | In particular "bup on" makes me very happy indeed. |
01:18 | < RichyB> | bup? |
01:18 | <&ToxicFrog> | A new backup program that uses the git packfile format as its backing store. |
01:18 | < RichyB> | oh that sounds quite nice |
01:19 | < RichyB> | I was going to ask what the advantage was over just using rsync, but rsync is only clever about *transmitting* block diffs, not about storing them. |
01:19 | <&ToxicFrog> | I ignored it earlier because it didn't support direct filesystem access, so you had to tar / | bup, which was kind of awful |
01:19 | <&ToxicFrog> | It has since been upgraded significantly |
01:20 | <&ToxicFrog> | Yeah, it uses the rsync rolling-checksum algorithm to generate the blocks and then packfiles to store them. |
01:20 | < RichyB> | "It requires python >= 2.4, a C compiler, and an installed git version >= 1.5.3.1" â uhhhhh. |
01:20 | < RichyB> | Maybe someone still has a RHEL4 box lying around? I can't think of any other distros where those would be a problem. |
01:20 | <&ToxicFrog> | It's not really "git based", but this does mean you can use git to get your backups back even without bup, because it stores enough git metadata for it to see the backups as commits. |
01:23 | <&ToxicFrog> | RichyB: not all distros *install those by default*, though. |
01:24 | <&ToxicFrog> | And knowing up front what the requirements are helps avoid the run -> read error message -> install package loop. |
01:24 | < RichyB> | The actual per-distro full installation instructions are listed below. |
01:25 | < RichyB> | What I meant by that remark is that listing "needs python >= 2.4" is not much of a reason to avoid bup, but it's on the " Reasons you might want to avoid bup" list. |
01:46 | <@himi> | Is it *nix only? |
01:47 | <@himi> | If not, then people might try to use it with an old python or git install |
01:47 | < RichyB> | It sounds like it might have only been tested on unixes but probably not. |
01:47 | <@himi> | . . . though I'm not sure if there /are/ current git versions for non-*nix |
01:47 | < RichyB> | msysgit. |
01:48 | <&ToxicFrog> | Windows, at least |
01:48 | <&ToxicFrog> | Both native and cygwin |
01:49 | <&ToxicFrog> | Anyways, my experience so far is that it is much faster than both duplicitty and obnam |
01:49 | <&ToxicFrog> | And unlike obnam its on-disk format requires relatively few files and can be read with other tools |
01:50 | <@himi> | TF: if you use git to access the backups, how do they present? |
01:53 | <&ToxicFrog> | himi: each backupset is a branch; each commit on the branch is a backup. The commit consists of the content of the backup plus some .bupm files recording ownership and permission information that the git packfile format doesn't record. |
01:55 | <@himi> | And the content is just a binary file containing the rsync diff data? |
01:56 | <&ToxicFrog> | Er. Content of what? |
01:56 | <@himi> | Content of the backup |
01:56 | <@himi> | I mean, it's not committing the whole files being backed up, is it? |
01:56 | <@himi> | If it is, what's the point of a rolling checksum approach? |
01:57 | <&ToxicFrog> | It is storing chunks |
01:57 | <&ToxicFrog> | But what this looks like at the commit level is a complete filesystem snapshot, just like git |
01:57 | <@himi> | Ah |
01:57 | <@himi> | It's been too long since I dealt with git |
01:58 | < Syka> | is bup usable now? |
01:58 | <@himi> | What version of bup meets your criteria for being nice? |
01:58 | <&ToxicFrog> | Syka: thus far, yes, although I'm not going to decommission my existing backup system until I've experimented with it more |
01:58 | <&ToxicFrog> | And it's extremely whiny if run on a filesystem that doesn't support xattrs, like zfs |
01:59 | <@himi> | zfs doesn't support xattrs? |
01:59 | < Syka> | as a backup target, or storage? |
01:59 | <&ToxicFrog> | (I have submitted a patch for that, but it's not in master yet) |
01:59 | <&ToxicFrog> | himi: not on ZFS |
01:59 | <&ToxicFrog> | Er, on linux |
01:59 | <@himi> | Ah |
01:59 | <&ToxicFrog> | There's only like three xattrs that are common between linux and solaris, so implementing the syscall isn't a priority |
01:59 | <@himi> | I was going to say, a modern *nix filesystem not supporting extended attributes is odd |
01:59 | <&ToxicFrog> | Syka: as a backup target |
02:00 | < Syka> | it spits out a normal git dir, doesn't it? |
02:00 | < Syka> | uh, normal git... whatever |
02:00 | <&ToxicFrog> | Syka: not quite, AIUI, but it spits out something that is enough of a git dir for git to read |
02:00 | < Syka> | goodnuff for me |
02:01 | <@himi> | There are fuse modules to allow you to mount a git repository, aren't there? |
02:01 | <&ToxicFrog> | Restoring using just git looks like it may be kind of a pain, because you need to git checkout the commit and then walk it and apply all the metadata from the .bupm files (and delete the .bupms as you do so) |
02:01 | <&ToxicFrog> | So it's easier to use bup fuse or bup restore |
02:01 | < Syka> | well, git enough for storage is fine imo |
02:01 | < Syka> | as long as it doesn't explode on my zfs :p |
02:01 | <&ToxicFrog> | But this does at least mean that if for some reason you can't use bup, you can get all the bits back if you at least have git. |
02:02 | | * himi has an rsync based backup system at home, but it sounds like bup might be a nice thing to consider |
02:02 | | * Syka adds that to her 'look into' |
02:02 | <@himi> | TF: version to use? |
02:03 | < Syka> | i have some duplicity backups somewhere |
02:03 | <&ToxicFrog> | himi: HEAD |
02:03 | < Syka> | they are just kinda buh though |
02:03 | <&ToxicFrog> | At least, that's what I'm using |
02:03 | <&ToxicFrog> | Syka: I hate duplicity :( |
02:03 | <@himi> | Well yes, but I like my backup system to be both stable and not requiring a pretty full install just to get running |
02:04 | <&ToxicFrog> | obnam is better, but is ass slow and its on-disk format uses millions of tiny files |
02:04 | <@Azash> | duplicity doesn't sound like it has a lot of integrity guaranteed |
02:05 | | gnolam_ [lenin@Nightstar-f7705974.cust.bredbandsbolaget.se] has joined #code |
02:05 | | gnolam is now known as NSGuest13031 |
02:05 | | gnolam_ is now known as gnolam |
02:05 | | mode/#code [+o gnolam] by ChanServ |
02:05 | <&ToxicFrog> | himi: well, the only version I've used is the current HEAD, so I can't really say how good other versions are |
02:06 | <@himi> | Okay |
02:06 | <@himi> | I guess I'll have to research things myself |
02:06 | <@himi> | So much easier to just let other people do that kind of hard work, though ;-P |
02:06 | <&ToxicFrog> | If you want a fully baked backup system I would honestly recommend waiting a year or so and then looking at bup again, it's still very much under development. |
02:06 | | * himi nods |
02:06 | <&ToxicFrog> | I'm experimenting with it because I've had so many problems with obnam that bup is seriously looking like a better option |
02:07 | <&ToxicFrog> | Even in its current avowedly unfinished state. |
02:07 | <@himi> | Well, if I do anything with it it'll be as an adjunct to my current backups - considering how slowly /that/ system changes I doubt I'd even get around to anything much in less than a year |
02:08 | <@himi> | (if it works, don't fiddle with it unless you need to . . . ) |
02:08 | | NSGuest13031 [lenin@Nightstar-f7705974.cust.bredbandsbolaget.se] has quit [Ping timeout: 121 seconds] |
02:08 | | * ToxicFrog nods |
02:08 | <&ToxicFrog> | Also, 'bup on', as noted earlier, makes me very happy and will make it much easier for me to set up proper backups for the laptops |
02:09 | <@himi> | What does that do? |
02:09 | <&ToxicFrog> | 'bup on <host> <command>' is roughly eqv to 'ssh <host> bup <command>', except that it also forks a local bupserver, tunnels a connection to that through ssh, and passes the necessary arguments to bup on the remote host to get it to use the server for storage |
02:10 | <&ToxicFrog> | So 'bup on thoth index / --exclude=...; bup on thoth save /' will take a backup of thoth but store it on the local system. |
02:10 | <@himi> | Ah, nice |
02:10 | <&ToxicFrog> | It makes backing up remote systems super convenient, provided that you can ssh into them and they have bup installed. |
02:11 | <&ToxicFrog> | Size usage report: I have now backed up 130GB worth of stuff. The bupdir is 68GB. |
02:12 | <@himi> | How much history do you have? |
02:13 | <&ToxicFrog> | None whatsoever; these are full backups of orias and thoth, plus conversions of backups from older systems that I keep for historical reasons. |
02:13 | <&ToxicFrog> | The latter backups were originally taken with rsync and thus have no history. |
02:14 | <&ToxicFrog> | The real test will be how big it is after a month of daily backups of thoth, isis, and orias. |
02:14 | | * himi nods |
02:15 | <&ToxicFrog> | (which are about 40GB, 10GB, and 25GB, respectively) |
02:17 | < simon_> | ToxicFrog, what's the URL for "bup"? |
02:17 | <&ToxicFrog> | github.com/bup/bup |
02:17 | < simon_> | ah, I know of him. |
02:18 | < simon_> | a friend of mine did a backup tool using git's packfile format as his master's thesis. |
02:18 | < simon_> | he never got it past the beta, apparently... |
02:18 | < simon_> | https://github.com/mortenbp/hindsight |
02:19 | | * himi laughs |
02:19 | <@himi> | Who'd have thought the proprietary nature of bitkeeper would lead to something like git taking over the world |
02:19 | < simon_> | heh :) |
02:20 | <@himi> | Also, a whole bunch of free vcs systems that are all better than bitkeeper ever was |
02:20 | < simon_> | yeah, it really forced a leap forward. |
02:21 | < simon_> | having lightweight version control systems really gives you some new options. |
02:24 | | VirusJTG_ [VirusJTG@BAD19E.09A45B.582A63.5AE998] has joined #code |
02:26 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [Ping timeout: 121 seconds] |
02:30 | | VirusJTG_ [VirusJTG@BAD19E.09A45B.582A63.5AE998] has quit [[NS] Quit: Program Shutting down] |
02:30 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code |
02:34 | <&ToxicFrog> | himi: ok, after reading the DESIGN doc, it's actually not quite as simple as that |
02:34 | <&ToxicFrog> | (if you want to restore using just git) |
02:35 | <&ToxicFrog> | It's actually something like: git checkout; walk tree and coalesce large files that got chunked; walk tree and restore metadata. |
02:35 | <@Reiv> | git is lightweight? |
02:36 | <&ToxicFrog> | Reiv: compared to the stuff it replaced? P4, SVN? Hell yes. |
02:38 | <&McMartin> | git is decentralized. |
02:38 | <&McMartin> | This is more lightweight iff you are the only person using it |
02:38 | <@himi> | Git isn't an easy tool to use, but the backend is conceptually very simple |
02:38 | <@himi> | This is why it's able to be used for a bunch of other things like bup |
02:39 | <&McMartin> | DVCS is an entirely different workflow and it's only been in the past few years that the description of it wasn't "yay! coherence is for losers! revision control systems don't need it!" |
02:39 | <&Derakon> | From what I remember of working with SVN and Perforce, Git (and Mercurial) basically mean "you can check in more often, but ultimately you'll have to merge your changes with other people anyway." |
02:39 | <&McMartin> | Git is basically a functional treemap |
02:39 | <&ToxicFrog> | McMartin: even if there are multiple people using it. |
02:40 | <&McMartin> | If you're simulating the centralized model with git, I'm not sure where you're getting "more lightweight than svn"; both are "have a program installed, be running sshd, have a directory set aside" |
02:40 | <&ToxicFrog> | Setting up a git server is trivial. Setting up an SVN server requires a complete Apache stack. Setting up a P4 server requires a large heap of proprietary software and licencing data and dependencies that the package manager is unaware of. |
02:40 | <&Derakon> | Since merges, and multiple branch heads, are basically the only complicated things 99% of people use source control for, using Git mostly just means "you can check in your stuff more often", which is in itself a massive win. |
02:40 | <&McMartin> | What the fuck are you talking about |
02:40 | <@himi> | Derakon: you can delay most of the merging, though - rather than having to keep track of everything that's happening, you can do whatever you want in your sandbox and only worry about merging your changes on your own time |
02:40 | <&Derakon> | Himi: true. |
02:40 | <&ToxicFrog> | McMartin: last time I used SVN, the procedure for running a server started with "install apache" |
02:40 | <&ToxicFrog> | And then at the bottom of the page there's "or I guess you could use svnserve, if you think your users are scum and stability is for losers" |
02:40 | <@himi> | The support in svn for stuff that makes your own little sandbox a lot easier came /after/ all the distributed vcs stuff showed how useful it was |
02:41 | <&McMartin> | Yeah, no, iodine has been an svn server since 2008 and it uses sshd as its transport layer. |
02:41 | <&ToxicFrog> | As recently as earlier this year the university SVN server was apache based and did everything over HTTP |
02:41 | <&McMartin> | Yes, this is definitely a thing you can do |
02:41 | <&ToxicFrog> | So, I have never actually seen SSH-transport SVN in the wild and until this conversation had no idea it existed |
02:41 | <&McMartin> | It is not, however, a thing you must do to stand up an SVN server |
02:42 | <@himi> | ssh+svn has been a common approach for ages |
02:42 | <&ToxicFrog> | It was not, I think, the case when git was first released |
02:42 | <&McMartin> | SVN can also be filesystem-backed instead of BerkeleyDB backed and this has also been the default for ages |
02:43 | <&ToxicFrog> | And I switched to git very shortly after its release because I was sick to death of both svn and p4 precisely because they were such pains in the ass to set up |
02:43 | <&McMartin> | I'm fairly certain I was using svn+ssh in 2003 |
02:43 | <&ToxicFrog> | It was certainly not prominently documented, then. |
02:43 | <@himi> | TF: a lot of the really useful stuff in svn is there because of the pressure from git/mercurial/etc |
02:44 | <&ToxicFrog> | All of the docs I read, including the ones on the svn website, were oriented towards apache-based serving, with svnserve-based as a very distant second place and no other options discussed. |
02:44 | | * himi will back up TF on that - svn doco /does/ tend to document the "hey, lets set up sourceforge" use case |
02:45 | <@himi> | I've struggled with it for exactly that reason myself |
02:46 | <&McMartin> | The ssh approach appears to technically be svnserve but I'm going to have to scoff at the idea that it's the completely unstable and unsupported approach because it's the one I've used for Everything Not Sourceforge for over a decade |
02:46 | <&ToxicFrog> | To be fair I used svnserve for a few years without difficulty |
02:46 | <&ToxicFrog> | But the documentation was quite obviously of the opinion that it was the option for filthy casuals |
02:47 | <&McMartin> | Yes, this tracks the git documentation until 2010 or so~ |
02:47 | <&McMartin> | All the git doco that existed the first three times I tried to learn it was "let's replicate the kernel development anarchy" |
02:47 | <&McMartin> | With four users all using different subsets of the patches of all the other users, with no master history, because why would a revision control system want one of those |
02:48 | <&McMartin> | It is self-evident that such an abstraction is valueless and unworthy of concern |
02:48 | <&ToxicFrog> | So, this was not at all my experience, although I was approaching it from the perspective of single user, multiple machines, not trying to coordinate a dev team |
02:49 | <&McMartin> | Neither was I |
02:49 | <&McMartin> | This is why I didn't actually use the thing until the fourth time I tried and learned it by *asking this channel* instead of reading anything. |
02:49 | | * himi recommends everyone just switch to mercurial ;-P |
02:49 | < Syka> | siiiiiiigh client work |
02:49 | < Syka> | implement a form that only displays stuff if it's required |
02:50 | < Syka> | get asked to make it all visible, all the time |
02:50 | < Syka> | so what goes from a simple, easily navigatable form |
02:50 | < RichyB> | «<McMartin> With four users all using different subsets of the patches of all the other users, with no master history, because why would a revision control system want one of those» |
02:50 | < Syka> | is a fucking 3x4 grid of text boxes |
02:50 | < RichyB> | Mhhhhhmmmm. |
02:50 | <&ToxicFrog> | I'm not sure what document I read first to learn git, but it was pretty straightforward and I found git vastly more convenient than svn. |
02:50 | < RichyB> | McMartin, if you want to do that on purpose, I highly recommend darcs. :) |
02:51 | <&McMartin> | ToxicFrog: By the time it was Actually Finished, which was after I started using it, the Git Book became sensible. |
02:51 | < RichyB> | If you want to do it by accident, use git and use the "rebase" command too often instead of merging. |
02:51 | <@himi> | Does darcs still want to use all 32GB of memory you (obviously) have installed ? |
02:51 | <&ToxicFrog> | I don't think I've ever read the Git Book. |
02:51 | < RichyB> | himi, um, no? It never did. |
02:51 | <&ToxicFrog> | I know Git for Computer Scientists was one of the first things I read, but not the first. |
02:52 | <&ToxicFrog> | I'm pretty sure it wasn't gittutorial(7) because that's kind of assbackwards. |
02:52 | <&McMartin> | That was the one that got me "oh, it's a functional treemap, OK, sure" |
02:52 | <@himi> | RichyB: back in the day darcs was notorious for consuming /enormous/ amounts of memory for some operations |
02:52 | < RichyB> | himi, darcs has always assumed that you were running on a Turing machine with an endless tape and access to an oracle for NP. A mere "32GB" is a laughable concept. ;) |
02:52 | <&McMartin> | gittutorial was probably where I started the first few times. |
02:52 | <@himi> | heh |
02:52 | <&ToxicFrog> | I'm so sorry. |
02:52 | <&McMartin> | This is why I had it filed with Ruby for some time~ |
02:52 | <@himi> | That's a cruel thing to say, McMartin |
02:52 | <&McMartin> | "Well, look who's got tickets on themselves" |
02:53 | < RichyB> | "Git for Computer Scientists" is seriously the easiest tutorial to follow. |
02:53 | < Syka> | git-scm's tutorial is pretty good |
02:53 | <@himi> | RichyB: darcs always looked nice to me, but at the time I had a fairly limited dev machine and so it just couldn't handle what I was trying to get it to do |
02:53 | < RichyB> | If you read that first then from day one it's just, "oh, it's a persistent DAG, easy enough" and from then on all you ever need to know is how to phrase the alteration that you want to make to the DAG in terms of git commands. |
02:54 | < Syka> | git is fast though |
02:54 | < Syka> | git is "call your mother a whore, punch a policeman and retire to cuba" level of fast |
02:54 | < RichyB> | himi, I used to use darcs on pokey little 1GHz / 1GB machines. |
02:54 | <@himi> | I'm sure it's improved a lot since then (and has significantly improved the main haskell implementations) |
02:54 | <&McMartin> | git is fantastic for non-collaborative version control. |
02:54 | < RichyB> | himi, but I used to use it with very linear history and very small amounts of code. I never happened to run into any of the real problems with it. |
02:54 | <@himi> | RichyB: I had 392MB |
02:55 | <@himi> | And I was trying to work on kernel code at the time |
02:55 | < RichyB> | with darcs? Darcs isn't rated for anything that bit. |
02:55 | < RichyB> | *big. |
02:55 | <@himi> | Yeah |
02:55 | <@himi> | Hence my not using it |
02:55 | <@himi> | But it /looked/ good! |
02:56 | < Syka> | i have been attempting to talk my project coworker over the phone how to use git |
02:56 | < Syka> | it's fun(tm) |
02:57 | < RichyB> | In retrospect, darcs' whole design is pretty much geared to being really not very fast. |
02:57 | | * himi played with git back when Linus was still the maintainer, but then found mercurial, learned it Well Enough(tm) in about thirty minutes, and hasn't looked back |
02:57 | < RichyB> | OTOH, darcs has the best command-line UI of any version control system that I've ever seen. |
02:58 | <@himi> | RichyB: yeah, it's a Very Haskell Project |
02:58 | <@himi> | I'm surprised that it's usable /at all/, given the way most Haskell projects seem to go |
02:58 | < RichyB> | It kicks git's bum at being easy to use. It kicks svn's bum at being easy to use (which I am actually impressed by). |
02:58 | < Syka> | how is svn easy to use |
02:59 | < RichyB> | It kicks CVS so hard that CVS ends up with chunks of splattered colon scattered across the moon's surface, but to be fair, that's not really difficult. |
02:59 | <@himi> | CVS does that to itself |
02:59 | < Syka> | I tried using svn once, and it made me cry |
02:59 | < RichyB> | What did you start out on? |
02:59 | <&McMartin> | CVS was an advancement over RCS. |
02:59 | < Syka> | RichyB: me? svn :D |
02:59 | <&McMartin> | RCS only allowed one person to be working on a file at any given time. |
03:00 | < Syka> | it was at werk because I wanted version control |
03:00 | < Syka> | and git on windows was bad |
03:00 | < RichyB> | So you went svn â cry â â¦? |
03:00 | < RichyB> | Keep crying? |
03:00 | < RichyB> | Hg? |
03:00 | < Syka> | svn -> cry -> git |
03:00 | < RichyB> | Ah. |
03:00 | < Syka> | bzr for Twisted projects |
03:00 | < RichyB> | ew, bzr. |
03:00 | < Syka> | i know :( |
03:00 | < Syka> | on that topic |
03:00 | < Syka> | launchpad is bad |
03:01 | < Syka> | and everyone who ever worked on it should feel shame |
03:01 | < RichyB> | I mean I'm assured that bzr was actually very good, but by now it's just unnecessary version-control-system proliferation. Better to get rid of it and focus the effort that would've gone into it on the survivors. |
03:01 | < Syka> | to me, bzr handles like a shitty version of git |
03:02 | < RichyB> | I have a colleague who once checked a bunch of bzr repositories into svn. |
03:02 | < RichyB> | I mean, yes. The whole .bzr directory and all. |
03:02 | <&ToxicFrog> | McMartin: at work we kind of have a best of both worlds thing where master version control is p4 but there's glue to support the use of git clients. |
03:03 | < Syka> | verion controlled version control |
03:03 | < RichyB> | himi, interestingly, there are a couple of semi-serious projects that have been working at "re-implement git (same file formats, protocols and algorithms) in Haskell". |
03:03 | <&ToxicFrog> | So you get all the local branching and merging and rebasing you want, and then when it comes time to review, test, and commit, the rest of the world sees a single p4 changelist. |
03:03 | < Syka> | RichyB: why don't they do a libgit2 and justdo ffi bindings? :S |
03:03 | < RichyB> | "Git, but written in Haskell" isn't an interesting goal in and of itself I think, but "Git's algorithms and protocols with a darcs-quality UI" would be amazing. |
03:04 | <&ToxicFrog> | (and the p4 server is protected from committing untested or unreviewed code by nuclear failsafes^W^Wpre-commit checks) |
03:04 | < RichyB> | How mature is libgit2? |
03:05 | < Syka> | https://github.com/libgit2/libgit2 says its about 4 years old |
03:05 | < Syka> | with some ~150 contributors and 5,500 commits |
03:05 | < Syka> | so I'd say purely based on that, that it'd be somewhat mature by now |
03:05 | < RichyB> | Actually, strike "semi-serious". The from-the-ground-up implementations are just hobby projects. |
03:06 | < Syka> | "libgit2 is already very usable and is being used in production for many applications including the GitHub.com site, in Plastic SCM and also powering Microsoft's Visual Studio tools for Git." |
03:06 | < Syka> | RichyB: libgit2 is ground up |
03:06 | <@himi> | RichyB: at th is point I think git has come far enough that there isn't that much point trying to shoehorn another UI onto it |
03:06 | < Syka> | I think |
03:06 | < RichyB> | It'd have to bein order to have the license that it has. |
03:06 | < RichyB> | *be, in order to |
03:06 | < Syka> | https://github.com/fpco/gitlib |
03:06 | < Syka> | have a haskell gitlib |
03:07 | < Syka> | RichyB: this is gpl2 with a linking exception |
03:07 | < RichyB> | Yeah, that's a big FFI binding for libgit2. Perfectly sensible. |
03:07 | <&ToxicFrog> | himi: as much as I like git, I freely admit that its UI is ass. |
03:07 | < RichyB> | Syka, indeed. But the original git is gpl2 with no linking exception. |
03:07 | <&ToxicFrog> | There is no consistency, even internally (foo delete vs foo rm vs foo -d/-D) |
03:07 | <@himi> | TF: yes, but at least it's vaguely /usable/ now, if you don't put a whole lot of effort into it |
03:08 | <&ToxicFrog> | A bunch of commands do multiple unrelated things (hi, checkout) |
03:08 | < Syka> | well get libgit2, implement your own :D |
03:08 | < Syka> | oh right |
03:08 | <@himi> | Back when it started the idea of a darcs/hg/whatever kind of UI for it would have been /awesome/ |
03:08 | < Syka> | urgh i cannot be arsed to do work |
03:08 | | * Syka fires up the bf4 beta |
03:08 | <&ToxicFrog> | I don't care quite enough to write one myself, but I find the idea of a non-terrible git UI attractive and would throw away all of my current git interface knowledge to learn one. |
03:09 | < RichyB> | Syka, what I meant by that is that they can't copy code from (gpl2 w/no exception) to (gpl2 w/linking exception) without getting permission from all of the committers. So libgit2 must have been a from-scratch implementation at some point. |
03:09 | <@himi> | TF: the "I don't care quite enough to do it myself" is the problem |
03:09 | < RichyB> | But that's cool. It's the "reimplement it from scratch in Haskell even when there are already stable C libraries that we could use" that's the only really silly idea. |
03:28 | | Kindamoody[zZz] is now known as Kindamoody |
03:43 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [[NS] Quit: Program Shutting down] |
04:01 | | ktemkin is now known as ktemkin[awol] |
04:31 | < RichyB> | Wow, dtach is really nice. |
04:31 | < RichyB> | Quite a bit more pleasant than running the whole of screen, assuming that I'm already happy with the terminal emulator that I have. |
04:59 | | gnolam [lenin@Nightstar-f7705974.cust.bredbandsbolaget.se] has quit [[NS] Quit: Gone] |
05:00 | | Stalker [Z@Nightstar-b920a19c.cust.comxnet.dk] has joined #code |
05:02 | | Derakon is now known as Derakon[AFK] |
05:22 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
05:22 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
05:30 | | Turaiel is now known as Turaiel[Offline] |
05:42 | | gnolam [lenin@Nightstar-a86e27d9.addr.tdcsong.se] has joined #code |
05:43 | | gnolam is now known as NSGuest32171 |
05:45 | | NSGuest32171 is now known as gnolam |
05:45 | | mode/#code [+o gnolam] by ChanServ |
05:53 | | ErikMesoy|sleep is now known as ErikMesoy |
06:13 | <~Vornicus> | oh god, php |
06:15 | < [R]> | ? |
06:17 | <~Vornicus> | my new job. we're using wordpress as a CMS for some crazy thing and I have to add like ten thousand options to the user profile page. ...fortunately this doesn't look quite that hard, but I have to figure out where things are coming form |
06:18 | <~Vornicus> | Fortunately, I am in fact getting paid The Big Bucks, so a little mucking in the muck won't hurt /too/ terribly. |
06:20 | < [R]> | "wordpress as a CMS" <-- spotted the WTF |
06:21 | <~Vornicus> | Yeah no shit |
06:34 | <@Reiv> | You has a job? |
06:34 | <@Reiv> | Congratulations, sir! |
06:37 | <~Vornicus> | I do. |
06:37 | <~Vornicus> | I am right now getting paid to wander the wordpress documentation, which is thank all the gods a lot less terrible than I was fearing |
06:38 | <@Reiv> | Yeah, no, Wordpress is pretty Not Shit when it comes to that |
06:38 | <@Reiv> | Which is blissful. |
06:39 | <@Reiv> | Also talk to Mahal, who used it a fair bit in the olde days. |
06:55 | | RichyB [RichyB@D553D1.68E9F7.02BB7C.3AF784] has quit [[NS] Quit: Gone.] |
06:58 | <~Vornicus> | Also every time I think I've found something I need to do it turns out I don't have to do that. |
06:59 | | RichyB [RichyB@D553D1.68E9F7.02BB7C.3AF784] has joined #code |
07:04 | <~Vornicus> | Adding tables to the database for custom user data? Nope! wp_usermeta meets all your needs. Adding code to handle specific fields in wp_usermeta? Nope! WP_User uses a __get and __set method for all its fields. Now I just have to name them all. |
07:07 | <~Vornicus> | ...and I can use _e at will for the display text and not worry too badly, because if it doesn't have a translation it will just send back the one I've got. |
07:12 | | celticminstrel [celticminst@Nightstar-5d0169f9.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
07:21 | | himi [fow035@Nightstar-36db723c.ffp.csiro.au] has quit [Ping timeout: 121 seconds] |
07:44 | < jeroud> | Vornicus: You have a job involving WordPress? My condolences, sir. |
07:44 | < jeroud> | (But it's better than no job at all.) |
07:46 | < jeroud> | (Make sure you keep everything up to date all the time. WP is made out of exploits.) |
07:48 | <~Vornicus> | Fortunately I'm not the sysadmin |
07:55 | <&jerith> | We, as an experiment, did a WordPress website for one of our clients because we had no dev capacity to do things properly. |
07:56 | <&jerith> | I think it was compromised within /hours/ of going live. |
07:56 | <~Vornicus> | dang |
07:56 | < Syka> | hahah |
07:58 | <&jerith> | Some of that was due to the ... less than stellar competence of the people we outsourced it to, though. |
08:01 | <&jerith> | So, people in another channel talking about kill-people-with-guns games. |
08:01 | <&jerith> | I wonder how long it'll be before some of these online FPS games are actually just telepresence links to androids in warzones. |
08:02 | < Syka> | jerith: never, I think |
08:02 | < [R]> | Yeah, WordPress pretty much reduces the utility of WebGoat from what I hear. |
08:02 | < Syka> | you could just use the players to train a battle AI |
08:03 | <~Vornicus> | webgoat? |
08:03 | < [R]> | jerith: Like the movie Gamer? |
08:03 | <&jerith> | [R]: I don't know that one. |
08:03 | < Syka> | or ender's game? |
08:03 | < Syka> | isn't that like the whole thing of ender's game |
08:03 | < [R]> | Vornicus: A program written by OWASP that intentionally violates all their best practices. |
08:04 | < jeroud> | Syka: That was an improvement suggested by one of the beta readers, actually. |
08:05 | < [R]> | jerith: basically there's two "games" produced by a company, both use the same tech: gamer controls a real person. The main on is a war-game using criminals. |
08:05 | < [R]> | The war-game one is also a major (e)sporting event. |
08:06 | < [R]> | It's lowly rated though |
08:07 | < Syka> | you know, i prefer that sort of story to be more like uh |
08:07 | < Syka> | Monday Night Combat |
08:07 | < Syka> | ie. they're literally people fighting to the death in giant stadiums |
08:07 | < Syka> | over the ruined remnants of society |
08:08 | < Syka> | with implications that food is heavily rationed, there's a population control lottery, and other creepy shit like that |
08:10 | | Kindamoody is now known as Kindamoody|out |
08:24 | < xybre> | Monday Night Combat is pretty dystopian, but fun. |
08:26 | < xybre> | And Gamer was a decent film. Sorta along the same message as Antitrust but with a little bit of social commentary that ventures into geek bashing. |
08:26 | < xybre> | Nothing new though, you'll note that a lot of villains are intelligent, mad scientists, and the like. Or else something that has gained some semblance of sentience. |
08:33 | <@Azash> | http://imgur.com/HK2sZfy |
08:49 | < xybre> | Gah. |
09:18 | | gnolam [lenin@Nightstar-a86e27d9.addr.tdcsong.se] has quit [Ping timeout: 121 seconds] |
09:27 | | AverageJoe [evil1@Nightstar-4b668a07.ph.cox.net] has joined #code |
10:01 | | AverageJoe [evil1@Nightstar-4b668a07.ph.cox.net] has quit [[NS] Quit: Leaving] |
10:08 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
10:08 | | mode/#code [+o himi] by ChanServ |
10:34 | | EvilDarkLord [jjlehto3@Nightstar-2ebc32b2.cs.hut.fi] has quit [Client closed the connection] |
10:40 | | EvilDarkLord [jjlehto3@Nightstar-2ebc32b2.cs.hut.fi] has joined #code |
11:17 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code |
11:42 | | thalass [thalass@Nightstar-4ab061cc.bigpond.net.au] has joined #code |
13:06 | | EvilDarkLord [jjlehto3@Nightstar-2ebc32b2.cs.hut.fi] has quit [Connection closed] |
13:44 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving] |
14:02 | | Stalker [Z@Nightstar-b920a19c.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
14:14 | | thalass [thalass@Nightstar-4ab061cc.bigpond.net.au] has quit [[NS] Quit: bon nuit, mes amis!] |
14:46 | | Stalker [Z@Nightstar-5aa18eaf.balk.dk] has joined #code |
15:49 | <&ToxicFrog> | Does python have shared locks/reader-writer locks? I can't find any. |
15:50 | < RichyB> | Huh. I'd assumed there was, but apparently not. |
15:51 | < RichyB> | http://bugs.python.org/issue8800 |
15:52 | < RichyB> | wtf they just sat on it for 2 years |
16:34 | <@Tarinaky> | "If you do single-process multithreading in Python you're going to have a bad time" |
16:34 | <@Tarinaky> | *ski instructor.jpg* |
16:45 | <&ToxicFrog> | It's this or C++ :( |
16:46 | <@Tarinaky> | You're gonna have a bad time. |
16:46 | <&ToxicFrog> | Yep. |
16:55 | <@Tarinaky> | Maybe you should consider a more rewarding line of work, like giving details instructions to blind retards on how to complete simple tasks like sorting items according to height? |
16:55 | <@Tarinaky> | No, wait... |
16:55 | <@Tarinaky> | *detailed |
16:57 | < RichyB> | Python threading works barely-okay if your use case for it is "I want to isolate some variables using thread-local globals" or "I want to write a GUI app that is responsive" or "I want to do network I/O with a few different peers simultaneously." |
17:16 | <&ToxicFrog> | RichyB: this is actually pretty much the second one. |
17:17 | <&ToxicFrog> | I have a web app, I'm spawning a background thread to refresh a cache every half hour. |
17:17 | < RichyB> | *nodnod* |
17:17 | <&ToxicFrog> | But I need to be able to handle the case where someone, by chance, visits the page halfway through a cache refresh. |
17:20 | <@Tarinaky> | Not at all serious answer: Fail. |
17:20 | < Syka> | why is your cache not atomic |
17:22 | < Syka> | have your cache in a list, append a fresh copy and purge the old copy, then just use whatever the first element is |
17:22 | < Syka> | i dunno |
17:22 | < Syka> | assemble your cache, then switch it out in one big go? |
17:26 | <@TheWatcher> | He's at google. For all we know that cache could contain millions of entries~ |
17:28 | < Syka> | oh, google |
17:28 | < Syka> | ...how is this not a fixed problem at google? |
17:49 | <@Tamber> | It may very well be, but he's not asked the right person yet, to gain that knowledge. |
18:38 | | Kindamoody|out is now known as Kindamoody |
19:09 | | celmin [celticminst@1AB00B.855209.73FD43.990C52] has joined #code |
19:11 | < celmin> | So I have a strange issue. |
19:14 | < celmin> | I have a pair of printf calls that don't seem to be reached, but it appears that the boolean set right after is reached, because when it's checked later a newline is output as expected. http://pastebin.com/k5UAsKV7 |
19:28 | <&ToxicFrog> | Syka: "assemble the cache, then switch it out in one big go" is in fact what I'm doing. |
19:28 | <&ToxicFrog> | And this is a solved problem, in fact...at Google scale. |
19:28 | <&ToxicFrog> | For an internal service used by <100 people, not so much. |
19:29 | | * celmin didn't solve the problem, but did solve the problem that the printf calls were intended to diagnose, so yay. |
19:30 | <&ToxicFrog> | ("There. Is my service production ready now?" "Of course. If you think your users are scum. Do you? Do you think your users are scum? Why do you hate your users?") |
19:57 | | Kindamoody is now known as Kindamoody[zZz] |
20:22 | | Turaiel[Offline] is now known as Turaiel |
20:54 | | celmin [celticminst@1AB00B.855209.73FD43.990C52] has quit [[NS] Quit: And lo! The minstrel departs, to spread the music to the masses!] |
21:19 | | Turaiel is now known as Turaiel[Offline] |
21:25 | | celticminstrel [celticminst@Nightstar-5d0169f9.dsl.bell.ca] has joined #code |
21:25 | | mode/#code [+o celticminstrel] by ChanServ |
22:03 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
22:03 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
22:04 | | AnnoDomini is now known as Firebeard |
22:17 | | Stalker [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds] |
22:37 | < RichyB> | ToxicFrog, the way I'd prefer to handle that requirement is to have the cache contents in an immutable map (frozendict?) with one atomic pointer to it, and then have the updating thread allocate a new immutable map with the new cached value and then atomically swap the new pointer in. |
22:39 | < RichyB> | So, { cache_ref = [current_cache_contents]; } and in the reader threads, { value_read_from_cache = cache_ref[0]; } and in the (single) write thread, { new_data = update_with_new_data(cache_ref[0]); cache_ref[0] = new_data; } |
22:40 | | ErikMesoy is now known as ErikMesoy|sleep |
22:40 | < RichyB> | ^- in the above I am abusing the fact that, since CPython's threads emulate a uniprocessor, a write or read to or from any location in a python list are atomic. |
22:41 | < RichyB> | In practice I might, instead of using a one-element mutable array, create a class called "MutableReference" with a single member which is a reference to the cache contents |
22:41 | < RichyB> | just so that it's obvious that this object is actually important to thread-correctness rather than just an ordinary list. |
23:01 | < xybre> | Anyone else play Kareteka back in the day? Apple II game (I played it on my Apple ][e). It's been released for Android is is shipping with the latest Humble Bundle. |
23:03 | <&McMartin> | That's not the Apple II game, that's Mechener's modern version, I suspect |
23:04 | < xybre> | Well it looks damn identical |
23:05 | | * McMartin checks |
23:05 | <&McMartin> | Ah, that is indeed the original. |
23:05 | <&McMartin> | Yeah, the remake looks nothing like that. |
23:06 | < xybre> | https://www.youtube.com/watch?v=T4Cj368Trlw |
23:06 | <&McMartin> | Ha ha ha, also QWOP |
23:06 | < xybre> | Oh yeah, I just found the "remake". wtf |
23:06 | <&McMartin> | Same designer, mind you |
23:06 | <&McMartin> | It's got some interesting design choices in it, but it's a different game |
23:07 | < xybre> | "Karateka will charm you with its classic love story set in feudal Japan. Fight to save the lovely Mariko from the evil warlord Akuma and reunite her with her True Love!" |
23:07 | <&McMartin> | Note: the True Love is only your first life |
23:07 | <&McMartin> | You have three lives who are progressively more unattractive men, and Mariko is progressively less happy to be rescued by them |
23:08 | < xybre> | lol |
23:09 | < xybre> | "Oh its just you then? Uh, thanks for saving me I guess. I uhm, I gotta go braid my hair for like the next week." |
23:09 | | * Vornicus tries to remember how to get an existing directory set up onto github. |
23:10 | <&McMartin> | Make it a local git repository, set yoru github project as the remote, push it up |
23:10 | <~Vornicus> | Ok. |
23:11 | < xybre> | If you have the "hub" command you can just do `hub create` and voila. |
23:11 | < xybre> | Then push. |
23:11 | < xybre> | Like you don't even need to create a repo on github first, hub does it for you. |
23:22 | | * Vornicus gnargs, discovers that to make a private repo he needs to pay. A little difficult without a bank account |
23:23 | <@Reiv> | ... you don't have a bank account, Vorn? |
23:24 | | * Reiv pauses. People can live without bank accounts? |
23:24 | < RichyB> | Vornicus, bitbucket will let you set up a few private git repos without charging you. |
23:24 | <~Vornicus> | Sure. Part of this involves not receiving any money from any source in nearly a year. |
23:24 | <@Reiv> | Oh. Right. Yes. |
23:24 | < RichyB> | How do you manage to eat while that is happening? |
23:24 | <@Reiv> | Bank fees suck, etc |
23:25 | <~Vornicus> | fiancee's parents |
23:25 | < RichyB> | You are not employed and are receiving no benefits of any kind? |
23:28 | < RichyB> | Sorry, I don't actually have any right to demand questions like that of you. |
23:34 | | ktemkin[awol] is now known as ktemkin |
23:38 | <~Vornicus> | Yay, bitbucket |
23:45 | | You're now known as TheWatcher[T-2] |
23:51 | | You're now known as TheWatcher[zZzZ] |
--- Log closed Thu Oct 03 00:00:24 2013 |