Fork me on GitHub
#clojure-uk
<
2018-02-21
>
thomas08:02:42

moin moin morning

Rachel Westmacott09:02:49

Random core function of the day:

-------------------------
clojure.core/format
([fmt & args])
  Formats a string using java.lang.String.format, see java.util.Formatter for format
  string syntax

otfrom09:02:57

I love format

Rachel Westmacott09:02:14

FYI: my company (https://www.strategic-blue.com/) is looking to hire some devs to write Clojure, more info in #jobs.

maleghast09:02:52

Morning All 🙂

maleghast10:02:03

@peterwestmacott - Fascinating looking company / idea 🙂 I am not "in the market", but nice one 🙂

Rachel Westmacott10:02:17

Thanks. I’m certainly enjoying it here at the moment.

maleghast10:02:36

Excellent 🙂

yogidevbear10:02:28

Has anyone here implemented Apache Oltu before?

maleghast10:02:23

Anyone prepared to stick their neck out on recommendations for Project Coordination / Management tools / workflows for early stage but geographically distributed teams..? We are all slowly coming tot he conclusion that Slack is something we'll use, but we need something like Basecamp / http://Taiga.io / JIRA (*shudder* God no)... Is there some "cool new hotness" I don't know about that people recommend? Needs to work for all skillsets, not just Geeks, so Org-Mode is not on the table 😉

Olical10:02:10

I mean, trello is pretty neat for tasks and stuff 😐 (but yes, extremely basic)

maleghast10:02:13

@olical - I like__ Trello, but it lacks features that I know__ other people in the company want, and the way to fill that gap as far as Trello is / are concerned now is to adopt JIRA + Confluence, 'cos Trello is an Atlassian company / product now.

Olical10:02:45

Huh, I didn't know that, interesting.

Olical10:02:17

I haven't hit walls, but I don't usually need much other than the basics. I just thought it was something that devs and non-devs alike can easily use 🙂

maleghast10:02:20

Atlassian is too much too soon for us, we are a company of 5 which might__ have external / 3rd party engagements with up to another 4 or 5 people in the next 9-12 months.

yogidevbear10:02:29

We're currently a small entirely distributed team. We use slack and Skype for communication (although http://appear.in is pretty cool and worth looking into). We use a mix of Confluence and GitHub wikis for keeping a log of meeting discussion points and overview development planning, etc. We use GitHub issues for breaking down tasks into smaller objectives that can be assigned. You could also use http://Waffle.io for KanBan boards linked to your github issues. And trello is cool too

yogidevbear10:02:57

We tried using JIRA, but it was overkill for the small size of our team

maleghast10:02:28

Ooh... We already use Github, but only 2 out of 5 of us... If there is PM / Task tool (i.e. http://Waffle.io) that can fully integrate with Github Issues / MIlestones that could work...

maleghast10:02:46

Yeah JIRA is only the right answer once you have north of 50-100 people

maleghast10:02:57

(In my in no way humble opinion)

firthh10:02:25

I haven’t used it but I thought Github had some kind of “agile board” implementation now

Olical10:02:53

It does! It has project boards and they work quite well.

Olical10:02:06

They don't map to issues directly, but you can turn a card thing into an issue.

dominicm10:02:08

The github agile board sucks. It's a total pain to update, you have to use a mouse. There's no automation worth having. You can't create issues from the board view.

dominicm10:02:22

We're using Clubhouse, which I'm very happy with for issue tracking. We're a small-medium sized team (with lots of stakeholders invested in different aspects). It's very "agile". It doesn't support much in terms of data hiding though. The reason I chose it was it's tight git(hub) integration. The only columns I move from is Unscheduled -> Ready for Development. Everything else is automated. We use asciidoctor for a wiki, and we're going to hookup Gollum on top of it for authenticating non-github users. We're going to use Antora to generate a documentation site which is very nice.

yogidevbear10:02:35

I didn't really like the project boards on GitHub

dominicm10:02:40

Re github project view, we had more success using milestones & labels than we did using their kanban board.

maleghast10:02:08

I would be very interested in using http://Clubhouse.io if people are finding it good...

maleghast10:02:40

...after all it is built in Clojure, so it would feel good to be supporting it, as long as it's a good fit.

dominicm10:02:42

@maleghast if you ever used pivotal tracker, it's like that.

maleghast10:02:01

I haven't @dominicm, but I know a lot of people that ❤️ PT

maleghast10:02:20

How is Clubhouse at integrating with Slack?

dominicm10:02:42

It can send a message for every event in CH, filtered by project to different channels.

dominicm10:02:52

CH naming is a bit odd. They basically recommend that project = team.

maleghast10:02:14

Does that mean you need [project-name].http://slack.com for each "team"?

dominicm11:02:46

Nope. Just that a project inside Clubhouse is usually associated with a particular team. It becomes hard to manage a lot of cards where that isn't true.

danm10:02:00

Slack Enterprise does allow channels across workspaces. That's how the BBC are doing it

danm10:02:53

So I'm only in my team's Slack, but I can talk to people on the global channels, direct message anyone on any of the shared enterprise workspaces etc

maleghast10:02:00

@carr0t - That's interesting to know... We would have to pay for Slack as we would need to know that our channels were fully private and archived.

danm10:02:53

That's why we're paying for it too

danm11:02:04

Although there are... oddities

danm11:02:22

Like, if you've got user groups set up, they're only per workspace. So I can be in a channel from my team's workspace, with a load of the 247 ops team from their workspace, and if one of them says @247 in their channel they all get notified, but if I say it in the same channel nothing happens, because the alert is configured for their workspace

danm11:02:41

Notifications on arbitary text like #247 or whatever still work across workspaces, just not user groups

maleghast11:02:17

@carr0t - Hmmm... at our size that would not be an issue, but I can see how it would be an oddity at scale...

jasonbell11:02:47

Morning friends

yogidevbear11:02:08

So this one got a little lost in the chatter earlier... Figured I'd post it again 🙂 https://clojurians.slack.com/archives/C064BA6G2/p1519208848000040

dominicm11:02:18

I've never heard of it, what is it?

chrjs11:02:21

FWIW @maleghast, we’re also distributed, (little-a) agile and our “stack” is mostly slack, http://appear.in and trello. We don’t use github issues at all. In a small team, I’d be wary of too much machinery around issue tracking (for instance) in place of (gasp) talking to each other 😱

chrjs11:02:32

YMMV, obviously.

chrjs11:02:43

Morning ☀️

yogidevbear11:02:46

@dominicm it's an OAuth 2.0 server implementation

dominicm11:02:17

Interesting. How does it compare to the key- popular one

yogidevbear11:02:53

There are a few packages in it to support different approaches like server side authorisation server, client side for requesting from a server, resource server (when the app is on the same server as the authorisation, etc

yogidevbear11:02:13

I think it is pretty popular (being from Apache)

jasonbell11:02:28

@yogidevbear Never knew Oltu existed.

yogidevbear11:02:45

Other options would probably be "roll your own" 😱, or an auth-as-a-service option like http://auth0.com

yogidevbear11:02:44

I'm interested in the resource server option of OLTU (https://cwiki.apache.org/confluence/display/OLTU/OAuth+2.0+Resource+Server) as we have an API that lives on the same server as where the authorisation would be taking place and the app doing the consuming of the API is our own SPA

yogidevbear11:02:11

But there's been talk of supporting SSO, SAML, etc for some of our clients in the distant future

yogidevbear11:02:28

I think going with OLTU would give us the flexibility to switch to a different option like authorisation server (https://cwiki.apache.org/confluence/display/OLTU/OAuth+2.0+Authorization+Server) if those scenarios ever came to pass

maleghast12:02:20

@chrjs - Thanks for that, I agree that we should be "talking" to one another first__, but we need to make some decisions about tools that we are going to bake into our workflow / workculture before we hire on anyone, so that we have an approach before things get too big to apply on back retroactively.

maleghast12:02:19

I had no idea that Apache Oltu existed either

chrjs12:02:35

@maleghast Sure, you know your use case. Just my 2p 🙂

thomas12:02:17

I never heard of Oltu either... we use keycloak a lot.

yogidevbear12:02:22

@thomas that looks interesting

yogidevbear12:02:35

I see it's by redhat

thomas12:02:11

yes, and I my understanding is that you can use it for free... and if you want support you can pay for it.

thomas12:02:30

and there is community support as well

thomas12:02:57

ooh and there is an example out there on github that shows how to use keycloak with clj have a google.

thomas12:02:09

haven't tried that myself though

dominicm12:02:13

keycloak is something we've used.

dominicm12:02:21

You can use it directly from cljs.

thomas12:02:46

cool, I know there is a keycloak-js lib as well.

thomas12:02:59

but it doesn't seem to be on cljsjs page

dominicm13:02:15

we wrote our extern

yogidevbear13:02:24

Their docs also look pretty good

maleghast13:02:51

Very cool...

thomas13:02:54

@dominicm maybe add your extern to cljsjs so that other people can pick it up as well?

dominicm13:02:30

It's very limited to what we use, I have no idea how well it would hold up to scrutiny. I will if I get time though.

yogidevbear13:02:56

Sounds like a potential for a new blog post @dominicm 😉

dominicm13:02:20

The code is embarrassingly short.

yogidevbear13:02:58

I guess Rich would say short and sweet (and simple)

dominicm15:02:25

I find code-centred blogs quite boring myself. They're usually good for helping someone else solve the same problem though.

thomas15:02:55

or make a gist that has an example and tweet that... so that people can find it again.

chrjs15:02:35

Datetimes, amirite?

(def first-date ...)       ;=> #inst "2017-09-29T00:00:00.000-00:00"
(def seven-earlier ...)    ;=> #inst "2017-09-22T00:00:00.000-00:00"
(jt/local-date first-date) ;=> #object[java.time.LocalDate 0x11f859db "2017-09-29"]
(jt/local-date seven-days-earlier) ;=> ExceptionInfo Could not convert [#inst "2017-09-22T00:00:00.000-00:00"] to class java.time.LocalDate!

chrjs15:02:15

(For the interested reader, one is a java.sql.Date and one is a java.util.Date, which why the above happens. Just unfortunate that they have the same string representation in the REPL)

Rachel Westmacott15:02:02

eurgh java has too many sub-optimal date types

Rachel Westmacott15:02:49

I’ve got a multi-method for all the ones I’ve come across so far that converts input to java.time.OffsetDateTime.

Olical15:02:05

What we need is a new date type to unify them all /s

sundarj15:02:32

something something xkcd

otfrom15:02:38

I once created a code generator in emacs lisp to create java files from plsql function proc specs that allowed me to convert to from java.util.Date/java.sql.Date/String/long

otfrom15:02:14

it was about 400 loc of elisp and for one 100 paramater proc it generated a 3kloc java file

otfrom15:02:29

I probably still have it somewhere

Rachel Westmacott15:02:47

sorry, did you just say there was a procedure with 100 parameters?

Rachel Westmacott15:02:44

oh, that’s what I thought.

otfrom15:02:54

this was the height of software engineering at an international investment bank

otfrom15:02:17

I'll let you guess which one it might be. My CV might help.

bronsa15:02:19

100 parameters is scarily approaching the jvm limit

otfrom15:02:55

they kept changing the signature of the proc too

Rachel Westmacott15:02:56

doesn’t Clojure stop at about 20?

bronsa15:02:05

yes clojure stops at 20

bronsa15:02:22

the jvm at 254

bronsa15:02:41

the missing one being used for this

dominicm16:02:25

why does clojure stop at 20 if the jvm goes to 254?

bronsa16:02:29

because 20 is enough

practicalli-johnny09:02:00

20 parameters in my mind is usually 19 parameters more than enough... pass a collection, ideally a map, if you have a lot of parameters and keep everyone who has to work with the code happier

dominicm16:02:42

is it though? 😉

bronsa16:02:49

(no other technical reason)

bronsa16:02:11

apart from the combinatorial code explosion when generating RestFn.java

dominicm16:02:12

fair enough though. I'm surprised it was as high as 20 if it was for what's useful.

thomas16:02:45

if I have more than 3 arguments (or some other small number like that) I change it to a single map as argument.

firthh16:02:30

There is also a lower limit to the number of args you can pass to a clojure fn with type hints

firthh16:02:02

Small enough that I managed to hit it doing something that I thought was still sensible

practicalli-johnny23:02:32

@dominicm @olical can you recommend any Ergodox keyboard kits, especially any from the UK? The EZ looks great although with VAT and customs duties it will be an estimated £347 for the full kit (I've estimated £255 for the kit, £22 shipping, & £70 for customs & VAT). Still very tempted though to save a weekend of putting it together.

dominicm07:02:03

@U05254DQM I've never been cool enough to assemble myself. When I looked into it, you had to order them from the Netherlands if I remember correctly.

dominicm07:02:14

There's not many keyboard places in the UK

practicalli-johnny08:02:42

Ah, within the EU should work (tariff free trade for a few more months at least). Both kits and pre-assembled keyboards seem hard to find

Olical09:02:40

I bought and built mine from https://www.massdrop.com/buy/infinity-ergodox it's really not very hard to do if you have a cheap soldering iron.

Olical09:02:20

They are pricey and they do take a little time to put together, but it's worth it (imo). You'd also want to set aside some time for designing your own layout because something on the default will probably end up bugging you 🙂

practicalli-johnny07:02:11

Thanks for all the suggestions. After trying out a friends http://Keboard.io Model01 I ordered that. https://shop.keyboard.io/ I prefer the keyboard layout, the uniquely sculputured keys (even more than EZ) and the firmware has plugins so easier to tailor (add/remove features)

Olical10:02:35

👍 good choice! > Sent from my Keyboardio Model 01.

practicalli-johnny09:02:00
replied to a thread:because 20 is enough

20 parameters in my mind is usually 19 parameters more than enough... pass a collection, ideally a map, if you have a lot of parameters and keep everyone who has to work with the code happier