Re: complex made simple?

2016-10-18 Thread Rostislav Svoboda
1. Use Yoneda Lemma. Its intuitive explanation is:
You work at a particle accelerator. You want to understand some particle. All
you can do are throw other particles at it and see what happens. If you
understand how your mystery particle responds to all possible test particles at
all possible test energies, then you know everything there is to know about your
mystery particle.

2. Use Howard Curry isomorphism. It states something like:
A program is a proof that from a given business problem a certain solution
(proposed by a business domain expert) can really be derived. I.e. it's not the
programmer solving problems. All the solutions exist per se already. The
programmer just connects a problem with a particular solution by writing some
code.

So:
- For every method using global variables create its functional version with
  object types, e.g.:
old: int foo(int x) { return x + this.y;}
new: Integer fooFunctional(Integer x, Integer y) { return x + y;}

- For every function create its fully typed version:
old: Integer fooFunctional(Integer x, Integer y) { return x + y;}
new: FooType fooFunctionalTyped(XType x, YType y) { return x + y;}

where XType and YType may be e.g. only odd or even Integers and FooType is
an union of XType and YType.

- simplify your type system

- profit! :)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: complex made simple?

2016-10-14 Thread Raoul Duke
we need the TRIZ of software :-/

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: complex made simple?

2016-10-14 Thread Leon Grapenthin
Rich has mentioned Polyas "How to solve it" in several talks. It's a great 
book on the matter.

On Friday, October 14, 2016 at 11:59:56 AM UTC+2, Alan Forrester wrote:
>
> In Rich Hickey's talk "Simple Made Easy" he mentioned that there are 
> ways to take a system that somebody else wrote that is complex and 
> simplify it. 
>
> Can anyone recommend some resources on how to do this? 
>
> Thanks, 
> Alan Forrester 
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: complex made simple?

2016-10-14 Thread Colin Yates
It has been a while since I watched, but are you asking in terms of
solutions (e.g. process modelling) or implementations (e.g.
architectural styles). It is really hard to give any comprehensive
answer here but some 'tools' I have found useful are:
 - clear thinking
 - identifying abstractions - by abstraction I mean strictly
'something that removes ambiguity and allows you to talk more clearly
about it'
 - Domain Driven Design for a mechanism of breaking down complex
domains. The Ubiquitous Language alone is worth its weight in gold
 - Event Sourcing and hexagonal architectures for handling complex
implementations

By far and away though, "clear thinking" is the tool which had the
most effort. For this, I highly recommend the Theory of Constraints.

Another technique I use heavily is describing things to the duck and
noting how many times I have to use the word 'and' or, 'except in this
case when ...'.

Not sure this answered the question you were asking :-).

On 14 October 2016 at 10:59, 'Alan Forrester' via Clojure
 wrote:
> In Rich Hickey's talk "Simple Made Easy" he mentioned that there are
> ways to take a system that somebody else wrote that is complex and
> simplify it.
>
> Can anyone recommend some resources on how to do this?
>
> Thanks,
> Alan Forrester
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.