clojure-uk 2016-05-12

is glad dharrigan is here

is glad that /me is here too.

arrgh! it doesn't backfill

is glad that dharrigan is here too

đź‘‹

I use Riemann @agile_geek amongst others(don't ask)

i'm a logstash man

I also use logstash for logging...

Datadog also, but evaluating sysdig cloud

@gjnoonan: @martintrojer I don't think they are mutually exclusive. I would use both

I have no way of using Riemann on my current client but was thinking about how to monitor/manage microservices if I ever manage to do something of my own and wanted to know pros/cons

Indeed, although there are many different tools in play at the moment, I am trying to unify things.

has a lot of success with NewRelic

lots of pretty graphs and metrics

the de-bouncing, send-to-pagerduty etc that (some) people use riemann for I do in logstash

logstash is more than ingesting logs into elasticsearch

for pure metrics, i'd vote datadog.

Another provider might be https://www.dataloop.io/.

All written using Erlang afaik.

disclosure: I know someone there, but have never used their services.

oh, I only use services written in perl.

Errrr simple_smile

I don't know if you're serious or joking simple_smile

I invoke Poe's Law.

all I say is a joke.

👍 1

arrah that's worse

it's like "Everything I tell you is a lie"

also true

take my advice… don’t listen to me.

so, Github really screwed over most startups

Take my advice, buy Gitlab shares

Even more advice;

Keep only open repos on GH

move private stuff to gitlab hosted on a t2.nano

Why did they screw over?

10x monthly spend

(for all those 10x devs out there)

Quite happy with Bitbucket, we have dozens of repos on there

Do you find bitbucket slow?

well, bitbucket has the same per-user license as neo-github. so that wont fly

newrelic are aweful IMO, added a load of overhead too

we run both bitbucket and gitlab at the moment, much prefer gitlab

will be transitioning everything over

runs a local FreeBSD gitlab instance in a nice jail simple_smile

I don’t see how github changes should affect startups much? Client-services companies I’d expect to be hardest hit

A question. I'm attempting to override a Java class. I have my gen-class, extends and exposes set. In the function which overrides (the protected method of the java class), I have something like this:

(defn -getForegroundColorCode
  [this event]
  (condp = (event getLevel)
    Level/ERROR_INT (str ANSIConstants/BOLD ANSIConstants/RED_FG)))

(the function is incomplete, so ignore the fact that condp doesn't have a default...)

I'm puzzled and not sure. "event" has a type (ILoggingEvent) with a method called getLevel

1. do I have to tell clojure somehow about this type (a cast to ILoggingEvent?),

2. will the event getLevel do what I want it to do?

This is the protected method I'm attempting to learn how to override:

protected abstract String getForegroundColorCode(E var1);

I throw myself at the mercy of this wisened crowd.

don’t you want (.getLevel event) ?

Indeed I do, indeed I do

bah! postfix

still making mistakes simple_smile

🙂 repl is your friend

you can typehint to remove reflection, but it’ll work without the typehint

Does Clojure support generic types from Java?

(yup, I know everything is erased...)

But can you put into the "extends" of a gen-class that this type also has this generic type?

(or should I not worry my tiny brain about such things?)

generics only exist in javac, which clojure never deals with

so no, you just have to use the collection as the type

hoping to get another taste of @glenjamin 's haiku skills.

@dharrigan: re running gitlab in a jail.. awesome. I do similar but run in a SmartOS zone 🙂

look at all you OS hipsters

my Desktop at home currently consists of a thin client running NixOS with, resources provisioned from my SmartOS server

very nice!

I’m better with limericks

> when I try to use java from clojure > it's easy to lose my composure > there's plenty more dots > and some I forgot > which then made my program fall over

👏 7

managed to get my clojure code to override a java method

learnt a lot

i.e., prefixes and why you shouldn't leave home without them

using condp in a str function (functions upon functions...just like inception)

and then figuring out that cursive-ide doesn't recompile AOP classes unless you force it.

and the killer

thou seems to have to pass in "this" into the function of the overridden method

even although, the method only takes one param, you have to use [this blah]

that took a while to figure out

dharrigan: link if code is public?

There you go.

Simple, but functional

@dharrigan: the passing this in becomes more obvious if you think of the fact that the method in the Java world has to have an instance to be called on. So in Java interop we can write (.toUpperCase "hello"). Then if you think about the .toUpperCase as a fn it's taking as it's 'target' the String "hello". This translates to "hello".toUpperCase() in Java land.

So the this in the protocol is the target object itself. If that makes sense?

It does, it's a rule to learn. However, documentation to explain that wasn't very forthcoming.

Unless my google-fu was letting me down.

the examples on clojuredocs are usually a good place to look: http://clojuredocs.org/clojure.core/gen-class

Ay up UK...anyone out there?

BTW anyone using Riemann to monitor microservices?