Fork me on GitHub
#clojure-uk
<
2018-04-30
>
dominicm05:04:40

That looks super cool

dominicm05:04:51

The domain modelling aspect sounds really interesting

jasonbell07:04:32

Morning friends

dominicm08:04:49

@yogidevbear please let us know how the book is and what you felt was really strong. I'm sure you can squeeze a book review / blog out of it 😉

💯 4
yogidevbear08:04:29

@dominicm will do. Looking forward to a lot of the chapters in the book

dominicm08:04:59

Did a chapter on spec make it in?

yogidevbear08:04:04

Yes it did 🙂

dominicm08:04:21

Interesting

yogidevbear08:04:07

Introduction

    Who This Book Is For
    What’s in This Book
    How to Read This Book
    Notation Conventions
    Web Resources and Feedback
    Downloading Sample Code

Getting Started

    Simplicity and Power in Action
    Clojure Coding Quick Start
    Navigating Clojure Libraries
    Wrapping Up

Exploring Clojure excerpt

    Reading Clojure
    Functions
    Vars, Bindings, and Namespaces
    Metadata
    Calling Java
    Comments
    Flow Control
    Where’s My for Loop?
    Wrapping Up

Unifying Data with Sequences

    Everything Is a Sequence
    Using the Sequence Library
    Lazy and Infinite Sequences
    Clojure Makes Java Seq-able
    Calling Structure-Specific Functions
    Wrapping Up

Functional Programming excerpt

    Functional Programming Concepts
    How to Be Lazy
    Lazier Than Lazy
    Recursion Revisited
    Eager Transformations
    Wrapping Up

Specifications

    Defining Specs
    Validating Data
    Validating Functions
    Generative Function Testing excerpt
    Wrapping Up

State and Concurrency

    Concurrency, Parallelism, and Locking
    Refs and Software Transactional Memory
    Use Atoms for Uncoordinated, Synchronous Updates
    Use Agents for Asynchronous Updates
    Managing Per-Thread State with Vars
    A Clojure Snake
    Wrapping Up

Protocols and Datatypes

    Programming to Abstractions
    Interfaces
    Protocols
    Datatypes
    Records
    reify
    Wrapping Up

Macros

    When to Use Macros
    Writing a Control Flow Macro
    Making Macros Simpler
    Taxonomy of Macros
    Wrapping Up

Multimethods

    Living Without Multimethods
    Defining Multimethods
    Moving Beyond Simple Dispatch
    Creating Ad Hoc Taxonomies
    When Should I Use Multimethods?
    Wrapping Up

Java Interop

    Creating Java Objects in Clojure
    Calling Clojure From Java
    Exception Handling
    Optimizing for Performance
    A Real-World Example
    Wrapping Up

Building an Application

    Getting Started
    Developing the Game Loop
    Representing Progress
    Implementing Players
    Interactive Play
    Documenting and Testing Your Game
    Farewell

dominicm08:04:01

I may have got a little mixed up with Clojure Applied also, but I'm no longer certain.

guy09:04:41

Morning!

guy09:04:48

Hows everyone doing today? 😄

alexlynham09:04:05

2 two-hour meetings punctuated by a two hour meeting

guy09:04:53

Smells like retro and planning? 😂

alexlynham13:04:24

inception for one team, planning for another, then planning again for the first

guy13:04:49

damnnn haha oh well. At least its over now?

alexlynham13:04:18

in the third one now

guy13:04:02

oh noooo

alexlynham13:04:32

the charmed life of working in a legacy large retailer

dominicm09:04:41

You need a 2 hour meeting to plan the meeting right? If you don't plan the meeting how will anything get done?

thomas09:04:34

... how can you go into a planning meeting all unprepared? surely you need to prepare for that in a pre-pre-meeting?

guy09:04:55

Is this an example of meeting recursion?

😂 4
dominicm09:04:17

:stackoverflow:

💥 12
thomas09:04:43

maybe we need a lazy meeting sequence.... :thinking_face:

alexlynham13:04:50

at least then we won't run out of memory

3Jane09:04:27

tbh I hate people coming unprepared into meetings. there’s always a lot of faff that people could do on their own, and this stretches the meeting

guy09:04:47

thats fair as well

guy09:04:55

depends on the context of the meeting invite really

3Jane09:04:58

rather than send out materials, everyone reads them, preps their own feedback, then meet only for the purpose of collating it

3Jane09:04:29

you can tell it’s an inefficient meeting when there are 6-10 people but only like 2 talk, and the rest activate once in the meeting when it’s time to vote or something (if at that)

3Jane09:04:29

(But I’m fully aware that it’s a pipe dream - nobody reads meeting prep materials because there’s no bad consequences to doing so. Similar to documentation.)

guy09:04:07

I mean its a good point to make, can you get people to prepare for meetings in the right way

guy09:04:16

i would say meeting prep is a skill in itself

3Jane09:04:44

True, a lot depends on the context of meetings 🙂 I used to do Toastmasters though, and I find myself missing that efficiency. You had people responsible for timing, everyone knew to prepare themselves, no faff (even though it was a storytelling/entertainment focused group).

3Jane09:04:03

Yep, it’s definitely a skill that you need to train in.

guy09:04:22

Ah i was really interested in going to toastmasters, thats the public speaking thing isnt it?

3Jane09:04:45

It’s known for public speaking, but it’s also amazing for leadership skills (which I think people don’t realise)

guy09:04:31

mmm that sounds great

guy09:04:59

I hope one day to have enough free time to go to events like that again haha

guy09:04:17

was it like once a week or something like that?

3Jane10:04:39

depends on the group you’re in, we had meetings twice a month

guy10:04:53

thats not too bad

3Jane10:04:00

every meeting is very structured

dominicm10:04:27

Amazon's meeting approach was interesting.

3Jane10:04:29

the first half consists of: - “table topics”: a fun challenge, someone gives you a starting topic and you blab whatever comes to mind for 2 minutes - prepared speeches: usually about 3, 5-15 minutes each the second half consists of: - evaluations of speeches: each speaker has an assigned evaluator who gives them feedback - evaluations of table topics (one person) - meta: evaluations of evaluators, how smoothly meeting was led etc

3Jane10:04:08

It’s the evaluation/organisation part that helps you build leadership skills; you find out how to best encourage people, how to analyse performance, how not to overwhelm with feedback, how to ensure things go smoothly

3Jane10:04:28

I’d say it significantly improved my ability to deliver appropriate code reviews.

👍 4
3Jane10:04:00

You get workbooks for each “skill tree” (public speaking and leadership separately), which have explanatory essays as well as projects in them to complete. Once you complete the basics, you can specialise (there is a “Technical presentations” workbook, but also one for entertainment, storytelling, etc)

3Jane10:04:53

If you’re interested, I’d advise coming as a guest (you can come to whichever groups are close to you, as many times as you like, no joining necessary) and seeing which group you mesh with. Every group is going to feel different since people work towards different goals, and you will learn best from people who are more experienced in whatever you want to work towards.

3Jane10:04:06

Oh, and they’re big on being welcoming and helping each other out. (My old group was especially good, that’s why I joined.) There is always a person responsible for welcoming guests. When you come as a guest someone will be asked to join you for the duration of the meeting and explain things to you. New members get to ask an experienced member to be their mentor, challenge them and help them get better.

3Jane10:04:15

</ad> I feel like a marketer now XD but I recommend it honestly, because it helped me in multiple ways.

guy10:04:55

Ok thanks for the information! It sounds great 😄

maleghast12:04:08

Morning everyone - I am in our new office. A proper, actual__ permanent office!

maleghast12:04:26

Does feel nice tbh

maleghast12:04:35

It's only taken 11.5 months since I started...

guy12:04:12

wow but at least u got there in the end!

maleghast12:04:46

Yeah, it's nice to be all moved in 🙂

maleghast12:04:11

We had a temporary space since Feb, but it was not "home", in that we knew we were there for a limited amount of time.

dominicm12:04:34

AWS sucks. Edge cases to so many things. Health checks only work in N. Virginia if you want to create alarms is my annoyance today. I now have to re-deploy a tree of things to N. Virginia so I can alert if the site goes down.

peterwestmacott12:04:16

I would tend to agree that AWS get a lot of things wrong… but have you tried the alternatives?

😅 4
dominicm12:04:29

The problem is that AWS offers consolidated billing. If there was consolidated billing across "Cloud infrastructure", pingdom, DNS providers, etc. then this would be less of a problem

peterwestmacott12:04:03

AWS does DNS don’t they?

dominicm12:04:26

they do, yeah.

dominicm13:04:16

https://stackoverflow.com/questions/46080884/multiple-file-provisioner-in-json-terraform terraform requires that you generate JSON with repeated keys in order to have multi-region AWS deployments

8
dominicm13:04:44

My day is not going well

dominicm13:04:59

All I want is an alarm in slack when the site goes down

peterwestmacott13:04:24

IIRC we use wormly for that

dominicm14:04:44

https://www.terraform.io/docs/providers/type/monitor-index.html looks like StatusCake is the only one which doesn't have a horrible website

peterwestmacott14:04:43

I wonder if having a good website in any way correlates with being a reliable service…

peterwestmacott14:04:31

I used LogEntries in a previous job and we weren’t much impressed by it. That was a couple of years ago though.

dominicm17:04:09

Some of them don't do uptime monitoring

dominicm13:04:53

A lot of companies want to go "AWS only" for convenience, consolidated billing being one of those conveniences.

peterwestmacott14:04:29

we’re the opposite - we don’t want to be tied to any one provider

dominicm13:04:00

Also, staying within AWS means that CloudWatch dashboards continue to work.

thomas13:04:07

my god... Java 8's map and filter functions suck... I build up a long one with the help form Eclipse and all the various things it suggests... and when I press enter at the end it decides it is invalid syntax... but can't tell me what is wrong.

thomas13:04:37

mind you.... might be more Eclipse fault then the streaming stuff... but it still feel convoluted.

thomas13:04:30

my line is over 160 chars long... no wonder it thinks it is wrong.

peterwestmacott14:04:44

when I was using Java 8 streams we found that splitting the ops each onto it’s own line really helped readbility - and we also found that there were cases where you were better off not using it

peterwestmacott14:04:37

We were all using IntelliJ rather than Eclipse though - I don’t know what Eclipses lambda support is like.

peterwestmacott14:04:18

There were certainly some places where it seemed quite nice - but it’s nothing like using a first-class functional language I’m afraid.

rhinocratic14:04:03

Heavens, yes - I found Java 8 streams painful to use. Lots of little incantations that needed to be included to deal with boxing/unboxing, and a plethora of class-specific "Collectors". .Net's LINQ seems like a model of clarity in comparison, let alone Clojure.

peterwestmacott14:04:41

@rhinocratic many Java APIs suffer from the fact that eight types of primitive are not Objects

peterwestmacott14:04:06

it’s a great big scar across the language as far as I’m concerned

peterwestmacott14:04:09

(which makes Clojure’s ability to operate on primitive arrays as if they were ordinary sequences seem all the more welcome)

rhinocratic15:04:28

Indeed - Java's not short of scars, but that one's particularly disfiguring. It was my primary language for about 10 years, and I used to love it. I returned to it after a 6-year sojourn in .Net-land (during which time I discovered Clojure), and now find that I can hardly bear to look at it. 🙁

alexlynham15:04:38

#smugthativeavoidedjavathusfar

3Jane15:04:47

it’s C++ inheritance, isn’t it?

rhinocratic15:04:28

Similar, except that all Java classes inherit from Object (however indirectly).

jasonbell15:04:06

@alex.lynham One day you'll need to do a Java bootstrap into Clojure

3Jane16:04:04

(ahhh programming, where words get redefined XD I meant philosophical inheritance. but yes)

😂 4
rhinocratic08:05:26

Sorry that I misconstrued - I did wonder if I had done so! Yes, in spirit Java's part of the whole C / Algol lineage.

richhuwtaylor18:04:18

hey all, I wondered if anybody knew of any opportunities to get involved in volunteering as a clojure developer? I'm thinking something along the lines of donatecode, but Clojure(Script) specific