Log of the #duraspace-ff channel on chat.freenode.net

Using timezone: Eastern Standard Time
* eddies1 joins00:33
* eddies1 leaves
* eddies1 joins
* eddies leaves
* eddies joins00:35
* eddies leaves
* eddies joins
* eddies1 leaves
* eddies1 joins00:46
* eddies1 leaves
* eddies1 joins
* eddies leaves00:48
* eddies leaves01:39
* kaarefc leaves04:22
* kaarefc joins05:45
* VincentNG joins08:36
* ajs6f joins10:10
* ajs6f leaves10:14
* barmintor_ joins10:30
* ajs6f joins
* github-ff joins10:35
[fcrepo4] ajs6f pushed 1 new commit to master: http://git.io/vnk2WQ
fcrepo4/master bb821ac ajs6f: Cleaned unused imports
* github-ff leaves
<barmintor_>I guess eddies is still in Shaghai?10:36
err… Shanghai.
<ajs6f>Dunno— he said he was there for his birthday weekend, which I guess is just beginning.
<barmintor_>Well, there we are.
<ajs6f>No he's there. We're here.
* barmintor_ has his mind BLOWN10:37
I started to play with PowerMock yesterday, since some of the static stuff just cannot translated into Predicate or Function objects10:38
Unfortunately, that branch is on my laptop, so it has to wait for the weekend10:39
<ajs6f>I was wondering about that. Some of those methods don't really make sense except as imperative messages.
<ajs6f>"CREATE THIS!"
<barmintor_>There's also an argument for reintroducing the static JcrTools members that I ahd taken out
as another mockable service proxy10:40
(and also to give us some flexibility re: inheritance)
<ajs6f>But JcrTools methods aren't static. They all hang off an instance object...
But a mockable one, so tha's cool.
<barmintor_>Hmm. They were definitely static in at least one case.10:41
Not the methods, the actual JcrTools object
like, FedoraDatastream had a static member that was a JcrTools object
* barmintor_ is actually starting to kind of hate static binding in Java10:42
<ajs6f>I believe you— I just meant that the methods on JcrTools are instance members.
<barmintor_>yes, yes, that is totally correct
<ajs6f>The thing that makes the static binding annoying is the lack of functions as values. (For my money).
I wonder if we can go back to in-memory ISPN for i-tests. (Or at least some.) That was a lot faster than on-disk, like it is now.10:43
<barmintor_>I think it depends on whether we can test the fixity stuff without a disk store, no?10:44
<ajs6f>Yeah, true. But everywhere that we're _not_ testing the fixity stuff, eh? :)10:45
<cbeer>i ran into problems trying to do that.
<ajs6f>To go back to in-memory?
<cbeer>to run one set of MODE configs for one test and a different set on another
maybe that's been fixed with the *IT reorg
but somewhere, something was holding onto the configuration across classes10:46
<ajs6f>Oh, I know about that. Let me find the link.
Spring testing framework caches contexts, in a very well-defined way. And you can control it.
Okay, from here:10:48
Oh, this:http://www.javacodegeeks.com/2012/09/spring-testing-support-and-context.html10:49
is really good— explains the whole thing.
<bljenkins>Project fcrepo-kitchen-sink build #114: SUCCESS in 3 min 48 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/114/10:50
Project fcrepo-fixity build #109: SUCCESS in 4 min 47 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-fixity/109/10:52
* travis-ci joins10:53
[travis-ci] futures/fcrepo4#298 (master - bb821ac : ajs6f): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/8b1ff8e033a2...bb821ac8e41d
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/5897772
* travis-ci leaves
<barmintor_>ajs6f: are you going to join the hangout today?11:03
<ajs6f>Can't, but I'll be here (IRC). I'll be on for reals next week.
<barmintor_>ajs6f: working on federation?11:08
<ajs6f>Slowly. Trying to get the MODE build going on Jenkins and11:09
deplyed to a Maven repo so that we can use it.
The "master" MODE build, that is, with bugfixes
Got it running, but it won't deploy to Maven repo.
I'll keep working on that, tho'.
<pivotal-bot____>Benjamin Armintor edited "Add automated code-quality checking" https://www.pivotaltracker.com/story/show/4654336711:12
<barmintor_>17 minutes. So close.11:17
<pivotal-bot____>Edwin Shin added comment: "Decided we won't be participating this year" https://www.pivotaltracker.com/story/show/4447662111:18
Edwin Shin edited "GSoC brainstorming" https://www.pivotaltracker.com/story/show/44476621
<ajs6f>I'm trying to get our MODE snapshot deployed. I copied the post-build deployment info from the fcrepo4 job in Jenkins, but I'm getting:11:28
http://stacktrace.jenkins-ci.org/search?query=org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to deploy artifacts: Could not transfer artifact org.modeshape:modeshape:pom:3.2-20130328.203852-1 from/to sonatype-nexus-snapshots (https://oss.sonatype.org/content/repositories/snapshots/): Failed to transfer file: https://oss.sonatype.org/content/repositories/snapshots/org/modeshape/modeshape/3.2-SNAPSHOT/modeshape-3.2
Any thoughts?
* github-ff joins11:49
[fcrepo4] ajs6f pushed 1 new commit to master: http://git.io/CSNp4w
fcrepo4/master ba66ff1 ajs6f: Changed FedoraObject.getObjectDSSize() to filter to counting only datastreams, not other nodes
* github-ff leaves
<bljenkins>Project fcrepo4 build #288: UNSTABLE in 6 min 35 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo4/288/11:56
A. Soroka: Changed FedoraObject.getObjectDSSize() to filter to counting only datastreams, not other nodes
* travis-ci joins12:03
[travis-ci] futures/fcrepo4#299 (master - ba66ff1 : ajs6f): The build has errored.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/bb821ac8e41d...ba66ff12b932
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/5899727
* travis-ci leaves
* github-ff joins12:07
[fcrepo4] ajs6f pushed 1 new commit to master: http://git.io/_F6e2A
fcrepo4/master f86e3eb ajs6f: Revert "Changed FedoraObject.getObjectDSSize() to filter to counting only datastreams, not other nodes"...
* github-ff leaves
<bljenkins>Yippie, build fixed!12:14
Project fcrepo4 build #289: FIXED in 7 min 44 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo4/289/
A. Soroka: Revert "Changed FedoraObject.getObjectDSSize() to filter to counting only datastreams, not other nodes"
* github-ff joins12:15
[fcrepo4] ajs6f pushed 1 new commit to master: http://git.io/ZoLgxQ
fcrepo4/master a8de4f9 ajs6f: Better change to FedoraObject.getDSSize(), also better type-safety in SimpleObserver
* github-ff leaves
* travis-ci joins12:39
[travis-ci] futures/fcrepo4#301 (master - a8de4f9 : ajs6f): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/f86e3eb33a1e...a8de4f951fa3
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/5900641
* travis-ci leaves
* ajs6f leaves13:06
* ajs6f joins13:09
cbeer/barmintor (et al.): I'm pretty well blocked on deploying a SNAPSHOT build of MODE for us. I can keep working on federation by using a SNAPSHOT build on my workstation, but I think we'd like to have a MODE SNAPSHOT available generally. When some who has knowledge of the Jenkins instance has a change, could that person give me a helping hand?13:16
<barmintor_>I need a few minutes before I can switch to somehting else, but I'll ping you?13:18
<barmintor_>(I have no real knowledge, but I have a user account :P)13:19
<ajs6f>You win!
<barmintor_>SWORD and FCRepo go together like coffee and toothpaste13:20
this is horrible
<ajs6f>I thought SWORD was the complete answer to all ingest problems anywhere ever...13:21
* ajs6f leaves13:28
* ajs6f joins13:29
* ajs6f leaves13:41
* ajs6f joins13:44
* BHSPiMonkey leaves13:48
* BHSPiMonkey joins13:51
<ajs6f>I'm not sure who wrote it, but I'm wondering why DatastreamIterator implements RangeIterator. Wouldn't it be better for it implement Iterator<Datastream>
<barmintor_>I wrote it. It's because we make use of the #size()13:52
<ajs6f>Okay, but why wouldn't that work with Iterator<Datastream>?
Oh, you mean RangeIterator.size().
this is why I was complaining that RangeIterator wasn't genericized last week13:53
<ajs6f>Yeah, I get that. But wouldn't we rather offer RangeIterator<T> to ourselves, complete with a size() (and skip() and whatever else is useful to us)?
<barmintor_>the RangeIterator interface doesn't accept a typ13:54
unless you mean completely reproduce the interface
<ajs6f>I know— I'm saying we shouldn't use JCR's crummy type. We should make our own awesome type.
* barmintor_ squirms uncomfortably13:55
<ajs6f>Because you're writing the concrete code for size() and so forth anyway...
What do we gain by implementing theirs?
Hey, check this: it's legal to say:13:57
public interface RangeIterator<T> extends javax.jcr.RangeIterator
So we can have both.
that's… interesting13:58
<ajs6f>Yeah, but erm. Not:
public interface RangeIterator<T> extends javax.jcr.RangeIterator, Iterator<T> {
That's not kosher because RangeIterator already extends Iterator. Gr....
^^ laaaaaaaaame
<ajs6f>Yesyesyes. Lame squared. But maybe 2.1 will make the pain stop.14:00
<barmintor_>it would be **so much easier** to have RangeIterator take a type, have NodeIterator implement RangeIterator<Node>, and just have nextNode delegate to next()
oh well14:01
* eddies joins
* eddies leaves
* eddies joins
<barmintor_>yay for JDK 1.4 compatibility or something
<VincentNG>anyone know a way to mock an httpserverletrequest so that it creates a valid servletcredentials14:07
ServletCredentials credentials = new ServletCredentials(httpServletRequest);
session = repo.login(credentials);
<barmintor_>I would consider moving that session logic into a Function object14:10
Function<HttpServletRequest, Session>
and then just returning a mocked session from the funciton14:11
<eddies>is Function a mockito thing?
not familiar w/ that one
<barmintor_>nope, it's in that google common library we're using
<barmintor_>look at FedoraTypesUtils for examples
<VincentNG>ya, i saw that. i'm not familiar with Function myself, but let me give that a look.14:13
<barmintor_>Predicates are function objects that resolve an object of type <T> to a boolean value
Functions take two types, and resolve the first into the second
one of the nice things about them is that they're actually objects, so if you want to mock FedoraTypeUtils.isOwned (a Predicate<Node>), you can just assign another Predicate<Node> object to it that returns your test data14:15
does that make sense at all?14:16
* barmintor_ goes back to sword
<VincentNG>ya, that's what i had to do for FedoraObjectsTests i think
does the implemented method always have to be " apply(Value v)"?14:18
<ajs6f>It's a really nice workaround, basically. Java has no functions-as-values, so you have to use inner classes (or the like).
Vincent: yes— you're implementing an interface.
It's boilerplate.
<VincentNG>gotcha, let me give that a shot
<barmintor_>it doesn't have to be Value, though
it's a generic
<ajs6f>If you really hate the name "apply", you can insert an abstract class or something.
<VincentNG>ya, i meant "apply(..)"14:19
<barmintor_>just be glad the first argument in apply() isn't "this"14:20
<ajs6f>Take a look at:
to see a more sophisticated technique.
is a better link.
Notice that:14:22
is basically Guava's Function<F,T>.
But LambdaJ offers some cool stuff like:14:23
http://lambdaj.googlecode.com/svn/trunk/html/apidocs/ch/lambdaj/collection/LambdaCollection.html#project(java.lang.Class, java.lang.Object...)
* ajs6f leaves14:26
* ajs6f joins14:35
barmintot: just to make a pain of myself, I want to point out that Scala's controllable [co/contra]variance would be just what we want for those iterators. SCALA FTW!14:36
eddies: How close (or far) are we to finalizing logistics for Boston?14:38
I'm just wondering about travel plans and timing and so forth.
<eddies>still waiting for feedback from FIZ and DGI14:39
<eddies>i'd say we're 80% confirmed for the week of 21 April
<ajs6f>Starting Monday?
(And ending Friday?)
<cbeer>eddies: i mentioned it to kcariani this week
<eddies>yah. but ready to start work on Monday, so i'm going to recommend ppl arrive by sunday night14:40
<ajs6f>Finally, a kindred spirit!
<eddies>cbeer: cool. i haven't checked w/ the karens yet to make sure folks will be avail then
the great firewall of china is killing me
everything seems blocked or slow-as-hell14:41
<ajs6f>Scalavangelist is part of the secret club, with Martin Odersky and me.
Sorry, eddies. I cut another Eqyptian cable. My bad.
<scalavangelist>Normally I would be rapt over then name "Martin Odersky"
but the Marquette U basketball team features guys named:14:42
Vander Blue
Junior Cadougan
<cbeer>(oh, and her cape house is only 3 bedrooms but sleeps 6-8)
<ajs6f>"Vander Blue" sounds like a Dutch pop band from the Seventies.
<scalavangelist>"Junior Cadougan" sounds like a guy who helped Capt America fight Nazis14:43
<ajs6f>Fedora: Fights bitrot _and_ Nazis!
Look at Martin Odersky:14:44
You can see the intelligence shining out of his eyes!14:45
Or maybe he's drunk. I don't know.
it's a combination layup/dismount
<ajs6f>I think Junior wants to give me a hug. That's so sweet!14:46
Architectural question: if we expect (and Eddie does) to try to provide federated persistence over BagIt directories...
should such a facility use the same contracts as serialization-for-export. I _think_ so— just want a sanity check.14:47
<eddies>ajs6f: i still haven't looked at what you did for serialization, but assuming it's sane ;-), i'd say yes14:48
<ajs6f>BIG assumption.
Okay, that means before I go much further with federation, I go back and make the serialization-for-export make more sense.
LoC's BagIt library is… what it is.
<eddies>ajs6f: for a first pass, i'd be less concerned about bilateral contracts between federated persistence and export14:50
just because i'm not sure what will shake out on the federated persistence14:51
<ajs6f>eddies: cool, but I want to make my life better with the hygienic power of REUSE! The product with Float.MAX_VALUE uses.
I'm going to have to do this work anyway.14:52
<eddies>i swear it's taking me ninety seconds *per* request to google
<ajs6f>I was about to make a joke about censorship, but maybe I won't. Not until Eddie is home.14:53
LoC, other people have done MultiMap. You should meet them. You could learn from them.14:55
Urg. So many implementations of abstractions for which perfectly good community-supported impls exist. It's like _I_ wrote this code!14:58
New Fedora rule: any method called "putList" should accept a List. Not two Strings that compose a third abstraction.14:59
Note on serialization: I'm working to the following design:15:03
Fedora Object bags are composed of a bag with bags in data/ for datastreams. This is because datastreams have their own properties. Does that make sense? Am I missing something about BagIt that would indicate a more idiomatic construction?15:05
<eddies>each datastream is its own (sub)bag?15:10
But I don't how to ascribe properties to something in data/.
<scalavangelist>bags in data?
<ajs6f>Yeah, yeah. Again, how else to record datastream properties.
<eddies>hmm…i think i was imagining something more akin to how the databank folks were laying things out, but i hadn't considered datastream props
<ajs6f>That's the sticking point. And I'm not screwing my courage to it.15:12
<scalavangelist>the bagit spec gives you no guidance on how to ascribe properties to a file in data
I don't think it contemplate that possibility.
Those bastards weren't thinking of the Fedora object model.
<scalavangelist>this is why I felt more comfortable regarding it as an infinispan cache: then you just need the hash (from the manifest) and the bytes
<eddies>i don't remember off the top of my head (and asking google is too painful) how databank was using rdf
<scalavangelist>databank's manifest was in rdf15:13
if I remember rightly
<ajs6f>We could overlay semantics on the tags for the object to represent datastream properties. That seemed kind of ookay to me, as well.
<eddies>so, could we have a rels-int style expression of datastream props?
Databanks manifest wasn't a BagIt tag file, tho;, right?
<eddies>that leaves the bag layout a little more "natural"
<ajs6f>Yes, it would.
At the cost of making ours bags different from all other bags.
Tag files in which describe only the primary artifact.
<eddies>and for a system (i.e. fedora) that can make sense of the extra rdf info, then it can run w/ it15:15
<ajs6f>True. How does another system know how to ignore it?
<eddies>good question =)
i'm assuming again
<scalavangelist>this is the space that bagit profiles operate in
you have tag files in the top level of the bag15:16
<ajs6f>True. DPN is assembling a profile.
<scalavangelist>which most systems will ignore, but you understand
wait, what I meant to say is:
<ajs6f>Yeah. Now I'm thinking that makes more sense.
<scalavangelist>"This is easier in SCALA."
<ajs6f>What isn't?15:17
<ajs6f>Is the semantic of a profile that
if you don't understand the tag files it proposes, you ignore them?
Or that you just don't get additional (monotonic) semantics from them?
Cause if the latter, people will still try to assign those tags to the object (WRONG!).15:18
Okay, I have to go refill my pipe. Back in a few. Y'all just work this out for me and do a sample impl, 'k?15:20
* ajs6f leaves
* eddies leaves15:25
* ajs6f joins
* eddies joins15:26
* eddies leaves
* eddies joins
<ajs6f>According to:15:27
Profiles won't help.
They just describe required metadata (and some other stuff). They don't overlay semantics. Darn.
Oh, well, what the hell. I guess I'll go back and work on getting simple filesystem federation to run.15:28
On a totally different topic… is it time yet to start breaking the modules that currently live in Git under fcrepo4 out into their own Git repos? E.g. fcrepo-jms?15:31
This is cool:15:45
Poorly documented, to say the least. But it claims to be able to translate between XML and RDF via OWL...15:46
Eddie, can we bring OWL into the mix? Huh? Can we!?
Well, I'm outta here. Have a good weekend, everyone.15:57
* ajs6f leaves15:58
* VincentNG leaves16:42
* scalavangelist leaves16:47
* kaarefc leaves17:28
* bljenkins leaves22:55
* bljenkins joins23:07

Generated by Sualtam