code logs -> 2013 -> Wed, 02 Oct 2013< code.20131001.log - code.20131003.log >
--- 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
code logs -> 2013 -> Wed, 02 Oct 2013< code.20131001.log - code.20131003.log >

[ Latest log file ]