These are chat archives for nrinaudo/kantan.csv

10th
May 2017
Nicolas Rinaudo
@nrinaudo
May 10 2017 05:24
@aroberts alright, new artifacts are up. These shouldn't have weird dependency issues
thanks for spotting them, by the way. With my setup, I wouldn't have been able to, and you prevented a messed up release
Andrew Roberts
@aroberts
May 10 2017 15:32
:+1: glad to hear it. switching over to test now
Andrew Roberts
@aroberts
May 10 2017 16:40
ok, am I somehow an idiot?
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
[warn]     ::          UNRESOLVED DEPENDENCIES         ::
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
[warn]     :: com.nrinaudo#kantan.csv_2.11;0.1.19-SNAPSHOT: not found
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
I have .settings(resolvers += Resolver.sonatypeRepo("snapshots"))
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:40
I just created a very simple project in which I didn't even specify a new resolver - the only line it contains is:
libraryDependencies += "com.nrinaudo" %% "kantan.csv" % "0.1.19-SNAPSHOT"
and it resolved fine...
I'm really not sure what to tell you here
Andrew Roberts
@aroberts
May 10 2017 17:42
yeah, this is almost certainly on my end
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:42
(also, the way you added the resolver is perfectly correct)
Andrew Roberts
@aroberts
May 10 2017 17:42
I can clearly see the jar in the resolver
just kind of a wtf moment
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:43
welcome to the joys of ivy and its cache
rm -rf ~/.ivy2/cache/com.nrinaudo/ ?
Andrew Roberts
@aroberts
May 10 2017 17:44
:cry: :gun:
already tried that, but I’ll do it again
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:44
and if you set it back to 0.1.18, does it work?
Andrew Roberts
@aroberts
May 10 2017 17:44
good question
do you see these lines?
[info] Resolving com.nrinaudo#kantan.csv_2.11;0.1.19-SNAPSHOT ...
[warn] Unable to reparse com.nrinaudo#kantan.csv_2.11;0.1.19-SNAPSHOT from sonatype-snapshots, using Wed May 10 01:19:08 EDT 2017
[info] Resolving com.nrinaudo#kantan.codecs_2.11;0.2.0-SNAPSHOT ...
[warn] Unable to reparse com.nrinaudo#kantan.codecs_2.11;0.2.0-SNAPSHOT from sonatype-snapshots, using Wed May 10 01:10:27 EDT 2017
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:45
yeah but that's fine
unable to reparse means "it's a SNAPSHOT, I'm going to reload"
erm.. but the date is wrong though..
Andrew Roberts
@aroberts
May 10 2017 17:46
0.1.18 resolves
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:46
:poop:
Andrew Roberts
@aroberts
May 10 2017 17:46
seriously
also, I am pretty sure that it was resolving the other day when all the tut stuff was happening
because without resolving kantan.csv, there’s no way it could look through it to know about the tut dep!
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:47
yeah, it at the very least downloaded the pom file
it's weeks like this that make you want to give up OSS
Andrew Roberts
@aroberts
May 10 2017 17:49
haha
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:49
usually in these cases, I just say fuck it and trash my entire ivy cache, reload SBT and go grab a cup of coffee while it downloads the internet
can you share your build file so that I can try it locally?
Andrew Roberts
@aroberts
May 10 2017 17:50
hmm
sbt is telling me about all the places it tried
and none of them are sonatype
I’d have to go get permission to share the build file
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:51
maybe at some point you have resolvers := ..., which would override your previous setting?
even the build file? I mean the code, sure, but the build file is...
well, who am I to judge another company's IT policies
Andrew Roberts
@aroberts
May 10 2017 17:51
shrug...
yeah I’m right there
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:52
alright, let's do this another way
is it alright for you to run code provided by a third party? :)
Andrew Roberts
@aroberts
May 10 2017 17:52
1 sec, I’m just asking
(about build.sbt)
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:52
it's fine
let's do it another way first
let me give you a project, see if it resolves then
Andrew Roberts
@aroberts
May 10 2017 17:53
sure
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:53
wow, I didn't know you could do that. Do you see a download link to a csv.tgz file?
unpack, cd into csv, sbt, update
Andrew Roberts
@aroberts
May 10 2017 17:55
K, one sec
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:55
this works fine on my local setup
one of the possible differences is that I'm forcing sbt 0.13.15
Andrew Roberts
@aroberts
May 10 2017 17:56
I’m on 13.15
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:56
alright
Andrew Roberts
@aroberts
May 10 2017 17:57
huh, I’ll be
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:57
resolves?
Andrew Roberts
@aroberts
May 10 2017 17:57
same error in csv.tgz
nope
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:58
try adding that to the SBT file: resolvers := Seq(Resolver.sonatypeRepo("snapshots"))
does it change anything?
Andrew Roberts
@aroberts
May 10 2017 17:58
yep, that fixes it
Nicolas Rinaudo
@nrinaudo
May 10 2017 17:59
ok. So. The problem is definitely with your build.sbt then, isn't it?
Andrew Roberts
@aroberts
May 10 2017 18:00
looks like
what’s the difference between := and += in sbt’s dsl?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:00
at this stage, if you're not allowed to share it, there's not much left I can do for you, and I would understand if you just said too bad, can't test your snapshots for you mate
  • := set
  • += append
resolvers is a List[Resolver] or something like that, so:
  • resolvers += someResolver appends someResolver to the list
  • resolvers := List(someResolver) replaces the old list by a new one containing someResolver only
Andrew Roberts
@aroberts
May 10 2017 18:02
gotcha
hmm
added the resolver to the very top of my build.sbt
and it looks like it’s working
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:03
so, you added a resolver down the list that somehow conflicts with sonatype snapshots...
Andrew Roberts
@aroberts
May 10 2017 18:04
the only other mention of resolver is some twitter repo
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:04
can you type in show resolvers in SBT and share the output?
(unless there's a company private repo in there)
Andrew Roberts
@aroberts
May 10 2017 18:04
sure can
do you want to see the broken ones, or fixed?
or both
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:05
both if possible - in theory they should be the same, just in a different order
Andrew Roberts
@aroberts
May 10 2017 18:05
ok - give me a few minutes
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:05
but at this stage this is mostly for my understanding - we got to the point where you could make sure the SNAPSHOT behaved the way it should and I've already taken more of your time than I intended
Andrew Roberts
@aroberts
May 10 2017 18:06
not at all, I appreciate your help
working:
> show resolvers
[info] core/*:resolvers
[info]     List(sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots, sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots)
[info] jobs/*:resolvers
[info]     List(sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots)
[info] rest/*:resolvers
[info]     List(sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots, twttr: https://maven.twttr.com/)
[info] perseus/*:resolvers
[info]     List(sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots)
>
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:08
the project that uses kantan.csv is perseus, right?
Andrew Roberts
@aroberts
May 10 2017 18:08
perseus/core
perseus is just a container project
I set all this up when I had no idea how things should be organized in sbt
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:08
I see
Andrew Roberts
@aroberts
May 10 2017 18:08
I still basically don't
not working
> show resolvers
[info] core/*:resolvers
[info]     List(sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots)
[info] jobs/*:resolvers
[info]     List()
[info] rest/*:resolvers
[info]     List(twttr: https://maven.twttr.com/)
[info] perseus/*:resolvers
[info]     List()
>
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:09
no that's pretty standard, that's what I do as well
are you 100% it's core that depends on kantan.csv, not another one?
or not any other one?
Andrew Roberts
@aroberts
May 10 2017 18:10
yes
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:10
can you run dependencyTree?
Andrew Roberts
@aroberts
May 10 2017 18:11
in the broken one?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:11
Not that I doubt you, but if you're right, then something makes no sense
yeah
well, in either
Andrew Roberts
@aroberts
May 10 2017 18:11
haha- it fails of course
wait
now it doesn’t fail?
wtf?
is it using a cached copy?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:12
yeah - you've downloaded kantan.csv once, it's in your cache, so it does not need to resolve it again
trash your cache and it'll start misbehaving again. At least this bit makes sense
Andrew Roberts
@aroberts
May 10 2017 18:12
ok, I think I found the issue
jobs is also using canton.csv
kantan
autocorrect….
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:13
there we go
Andrew Roberts
@aroberts
May 10 2017 18:13
but - it’s getting it transitively
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:13
that makes sense now
Andrew Roberts
@aroberts
May 10 2017 18:13
from core
so why does it need the resolver?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:14
well now we're getting the innards of SBT and I can only make guesses :)
but, I say this as a friend, it's pretty bad practice to have different resolvers for different subprojects unless you have a very good reason to
for the very reason you're witnessing right now
Andrew Roberts
@aroberts
May 10 2017 18:14
yeah, no kidding - what a pain
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:15
alright, so - mystery solved and I'm now a few years older
Andrew Roberts
@aroberts
May 10 2017 18:15
I just assumed that resolution was scoped to the project, and transitive deps would be transitively pulled in, not re-resolved
seriously, the both of us
I’m building the app now to try the serialization
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:15
reasonable assumption, but not everything is reasonable in SBT-land
great, thanks!
this seems to enable the expected behaviour
Andrew Roberts
@aroberts
May 10 2017 18:20
interesting
hmm
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:25
uh oh
Andrew Roberts
@aroberts
May 10 2017 18:25
I’m seeing some possible transitive dependencies not being found
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:25
what now...
Andrew Roberts
@aroberts
May 10 2017 18:26
[info] com.fuze.perseus.serialization.hbase.ByteEncodingSpec *** ABORTED ***
[info]   java.lang.NoClassDefFoundError: scoverage/Invoker$
[info]   at kantan.codecs.CodecCompanion$class.from(Codec.scala:37)
[info]   at kantan.csv.RowCodec$.from(RowCodec.scala:22)
[info]   at kantan.csv.RowCodecInstances$class.$init$(RowCodec.scala:26)
[info]   at kantan.csv.codecs$.<init>(Codecs.scala:20)
[info]   at kantan.csv.codecs$.<clinit>(Codecs.scala)
[info]   at com.fuze.perseus.models.CELRecord$.<init>(CELRecord.scala:246)
[info]   at com.fuze.perseus.models.CELRecord$.<clinit>(CELRecord.scala)
[info]   at com.fuze.perseus.models.CELRecord.<init>(CELRecord.scala:112)
[info]   at com.fuze.perseus.fixtures.CELRecordFixture$.<init>(CELRecordFixture.scala:10)
[info]   at com.fuze.perseus.fixtures.CELRecordFixture$.<clinit>(CELRecordFixture.scala)
[info]   ...
[info]   Cause: java.lang.ClassNotFoundException: scoverage.Invoker$
[info]   at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[info]   at kantan.codecs.CodecCompanion$class.from(Codec.scala:37)
[info]   at kantan.csv.RowCodec$.from(RowCodec.scala:22)
[info]   at kantan.csv.RowCodecInstances$class.$init$(RowCodec.scala:26)
[info]   at kantan.csv.codecs$.<init>(Codecs.scala:20)
[info]   at kantan.csv.codecs$.<clinit>(Codecs.scala)
[info]   at com.fuze.perseus.models.CELRecord$.<init>(CELRecord.scala:246)
[info]   at com.fuze.perseus.models.CELRecord$.<clinit>(CELRecord.scala)
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:26
what the hell?
OH WHAT THE HELL
damn you scoverage
jesus christ
sorry. This is driving me mad.
I know exactly what happened. I must have published artifacts after having full local tests - which involves computing code coverage
Andrew Roberts
@aroberts
May 10 2017 18:27
no worries
I can’t even imagine how that gets dragged into the freaking classpath though
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:27
which involves instrumenting the byte code, which apparently adds scoverage.Invoker$ to classes
Andrew Roberts
@aroberts
May 10 2017 18:28
ahhh
yup
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:28
this one is kind of my fault, but it's a really sneaky bug to come up
don't even really know how to protect myself against it, aside from remembering to publish on a clean SBT run...
Andrew Roberts
@aroberts
May 10 2017 18:30
it seems like jvm languages accumulate a lot of those “just remember to…” caveats
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:31
it's usually better with scala, you can get most things checked at compile time, but serialisation is strictly a runtime concept
Andrew Roberts
@aroberts
May 10 2017 18:31
right
(let me know when to try again with the snapshot, and do I need to add changing() to the dependency?)
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:32
it's uploading right now, and in theory SNAPSHOT in the version implies changing()
but just to be sure I'd trash ~/.ivy2/cache/com.nrinaudo/
Andrew Roberts
@aroberts
May 10 2017 18:33
do you know if intellij also uses that cache?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:33
I think it does
Andrew Roberts
@aroberts
May 10 2017 18:34
alright, experiment time...
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:34
but IntelliJ is weird with Scala. Some versions seem to have their own cache
Andrew Roberts
@aroberts
May 10 2017 18:34
yeah… a nice tool for some things and complete trash in other arenas
I’m a vim user, and I tried to make ensime cut it for me, but couldn’t get it to tell me enough
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:35
I find it to be an amazing editor, if really, really resource heavy. But I wouldn't use it for building or anything else than editing, really
right - I tried Ensime a while ago, it felt... overtly hostile
I think it's better now and I've been meaning to give it another go - it's apparently quite good in my editor of choice, Emacs
Andrew Roberts
@aroberts
May 10 2017 18:36
yeah, I think it’s a little better supported there
still uploading?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:36
yeah, there are a lot of files
Andrew Roberts
@aroberts
May 10 2017 18:37
k
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:37
and I'm republishing kantan.codecs and kantan.csv
Andrew Roberts
@aroberts
May 10 2017 18:37
no prob, just checking
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:37
(also, uploading for 2.10, 2.11 and 2.12)
Andrew Roberts
@aroberts
May 10 2017 18:37
oh, right
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:38
should be finished pretty soon, only kantan.csv 2.12 left
done
Andrew Roberts
@aroberts
May 10 2017 18:40
alright
let’s see if I can get this to go
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:40
fingers crossed
Andrew Roberts
@aroberts
May 10 2017 18:41
first test passes
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:41
oh good, something finally going right :)
Andrew Roberts
@aroberts
May 10 2017 18:42
running the whole suite and then booting the system
seriously!
what a saga
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:42
and the bug you found with tut, that was stressful - the release was mostly my work, and it's a tool used by a lot of people
this might very well have turned into my claim to infamy
Andrew Roberts
@aroberts
May 10 2017 18:47
suite passes!
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:47
w00t!
Andrew Roberts
@aroberts
May 10 2017 18:48
it’ll take me like 5 minutes to fully confirm
but it’s looking good
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:48
that's great. Thanks for taking the time to do this, I really appreciate it
Andrew Roberts
@aroberts
May 10 2017 18:49
hey man, my pleasure - I really appreciate your responsiveness in getting this done. If I can get our csv machinery over to kantan that’ll be a significant victory
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:49
wait - you're not even actually using kantan.csv ?
Andrew Roberts
@aroberts
May 10 2017 18:49
one of my favorite things about the scala community is responsive devs :)
I’m using it in one place
but I have two more
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:50
Interesting - what other library are you using?
Andrew Roberts
@aroberts
May 10 2017 18:52
circe, finch, flink (for stream processing), scalikejdbc (not a huge fan of this one), and then a bunch of non-scala-specific stuff
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:52
I meant csv :)
Andrew Roberts
@aroberts
May 10 2017 18:52
hbase, kafka, etc
oh
uhhh
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:52
but interesting - what's your experience with finch?
Andrew Roberts
@aroberts
May 10 2017 18:52
totoshi?
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:52
oh - that's pretty bad
Andrew Roberts
@aroberts
May 10 2017 18:52
yeah
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:52
I mean, it's very java like
Andrew Roberts
@aroberts
May 10 2017 18:53
yup - runtime exceptions and everything
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:53
it's also the most popular Scala CSV library, which hurts a bit :)
I'm using Scalatra for web APIs at work, but I'm really regretting that choice and looking for a replacement. Is Finch any good?
Andrew Roberts
@aroberts
May 10 2017 18:54
it depends a little bit on what you want to do
from a type safety standpoint, yes - finch is great
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:54
it looks pretty good, type class based and all, but...
twitter
weird Futures
Andrew Roberts
@aroberts
May 10 2017 18:55
it’s heavily skewed towards delivering a json API though - recently support to do other things is improving, but there are still some holes
and yeah, I didn’t understand how weird the twitter ecosystem was when I made that choice
not sure I’d make it again
well...
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:55
well I mean Travis Brown, the creator of Circe, is basically the mentor of the author of Finch, so it's no big surprise
Andrew Roberts
@aroberts
May 10 2017 18:55
actually that’s not true
it’s worth it for me
yup
I’ve learned a lot of scala from that guy (travis)
(in a few short interactions, haha)
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:56
yeah he's pretty incredible. To think he's not even from a technical background...
Andrew Roberts
@aroberts
May 10 2017 18:56
crazy
shit - I have failures that I am pretty sure are unrelated to you (stale data cached in redis)
but I have to flush it and try again
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:56
and do you use anything in particular for HTTP queries?
Andrew Roberts
@aroberts
May 10 2017 18:57
we recently added scalaj-http
but we barely have a need for it
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:57
If your tests pass and you think the current failures are unrelated, I think I'm fine with deeming the experience a success
Andrew Roberts
@aroberts
May 10 2017 18:57
sounds good
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:58
I'll try and release everything - maybe not tonight, but by the end of the week
Andrew Roberts
@aroberts
May 10 2017 18:58
great, I’ll look forward to it
Nicolas Rinaudo
@nrinaudo
May 10 2017 18:59
thanks again for a/ spotting the problem and b/ helping me make sure it's properly fixed
Andrew Roberts
@aroberts
May 10 2017 18:59
you have other stuff you’re trying to get into the release?
any time!
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:00
not really. Dependency upgrades, support for 2.12.2 and 2.11.11... but that's already done
Andrew Roberts
@aroberts
May 10 2017 19:01
gotcha - well, I’ll be looking forward to it!
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:02
I'll let you know when it's done, hopefully you can get rid of totoshi soon :)
Andrew Roberts
@aroberts
May 10 2017 19:09
oh - one more thing: I’m looking for an easy way to go from <nested case class> to <flat csv> - is there a pattern for that in kantan, or should I just make a transfer object?
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:10
I usually just make custom decoders / encoders
Andrew Roberts
@aroberts
May 10 2017 19:10
easy enough
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:11
implicit val myEncoder: RowEncoder[MyType] = RowEncoder.from { m => 
  RowEncoder[Value1].encoder(m.value1) ++ 
  RowEncoder[Value2].encode(m.value2) ...
}
but it's not the most pleasant thing in the world and I'm sure I can think of a way of dealing with that in a better way
Andrew Roberts
@aroberts
May 10 2017 19:12
oh, that’s not bad though, if the sub-pieces can be composed
I suppose it could be derived automatically, but meh
might be an edge case
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:12
they're not exactly composed - their output is concatenated
Andrew Roberts
@aroberts
May 10 2017 19:13
well, yea
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:13
it's alright for encoding, decoding is more painful
Andrew Roberts
@aroberts
May 10 2017 19:13
right
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:13
you have to take sub-sequences, it gets messy
Andrew Roberts
@aroberts
May 10 2017 19:13
my use cases are one-directional thankfully
i believe scodec-messagepack solves this (or similar)
if you ever get curious
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:14
I'll have a look, thanks!
it's one of these things that I know I want to tackle someday - that and decoders that work on headers rather than indexes, or safe serialisation (yeah, serialisation is currently unsafe :( )
things keep getting in the way though. Recently, I've sunk a lot of time in kantan.mongodb - and now that this is finally getting somewhere, we've stopped using mongodb at work ...
Andrew Roberts
@aroberts
May 10 2017 19:19
ah, I know that feeling, that’s frustrating
though, mongodb is tough to bet on long-term, anyway
(in my opinion, at least)
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:20
it is, but it's great for data exploration
Andrew Roberts
@aroberts
May 10 2017 19:20
true
Nicolas Rinaudo
@nrinaudo
May 10 2017 19:20
like I love python to analyse and play with data, but would never think of using it in production
do your research with python / mongo, implement the conclusions with scala / acid storage :)
Andrew Roberts
@aroberts
May 10 2017 19:24
:+1: totally