Have you always secretly wondered what the heck 'monads' are? How about 'Tail-call recursion?' or 'monomorphic dispatch'? If this sort of terminology has ever left you with self-doubts or seething with anger because someone is confusing you with elitist terminology, then this is the talk for you! Dr Richard Warburton and the Diabolical Developer + James Gough will take a humorous look at the wide range of incomprehensible terminology in our industry today. They'll cover the concepts behind the jargon with simple examples and some practical tips on how to blend the terminology into your day to day technical conversations without scaring everyone off. At the end of the talk you'll be ready to battle it out on tough mailing lists (Scala!) and have a new appreciation for some of the academic principles behind our craft. Oh and as for monads? Well they're just like burritos, except they're not...
14. What is it like working in a large corporation?
What’s it like working in a large
Corporation?
Can be a lot of fun!
Politics and red tape
Lots of buzz words!!
14
15. Buzz Word Bingo
?
Reach Out Synergy
Touch Base Leverage
Circle Back Around Cross Pollination
Bleeding Edge Flying Blind
15
16. Why should we care about buzz words?
• Increases complexity of the problem domain.
• Causes confusion when specifying requirements.
• Someone won’t know the acronyms or buzz words.
• In house - more training needed for new starts.
16
17. Financial Terms
• Exchange
– Market place, people buy things and sell things.
• Arbitrage
– If it’s cheaper at Best Buy and you sell it on Ebay for more...
• Execute (or hit)
– Buy or sell it
• Hedge
– Buy something else to minimize impact of massive price
movement
17
18. Accounting Terms
• Acid Test Ratio
– Assets that can be converted to cash to cover current
liabilities
• Bad Debts
– All debts are bad?
• Intangible Assets
– Long term value but no physical identity.
– Eg. Patents, trade marks or brands
• Bootstrapping
– Make your own money to start a firm
18
19. Enough!
Too much business talk
This is a technical conference!
19
20. Hotspot
It can also be easy to get tied up in
management.
A compiler that runs at runtime
Uses info about programs execution
Focusses on compiling small parts of
the application, the “hotspots”
20
21. Lambdas
Ah yes, what about this Java 8
stuff.
What are Lambdas?
A function without a name
(x, y) -> x + y
21
23. Abstract Syntax Tree
Sounds a bit abstract... Is it like an
abstract syntax tree?
A way of representing a program as a
tree, used inside a compiler.
A Node = a construct in the program.
An Edge = Being a child in the AST
means that you're "inside" something.
23
25. Latch
Do you know anything? What is a
latch?
A concurrency primitive implemented as
a class.
Holds all threads up until they’ve reached
a certain point
25
26. Memory Barrier
• A type of ordering barrier on memory operations.
• CPUs reorder instructions
• Can change behaviour of multi-threaded programs
• Fences enforce an ordering.
• Example: the volatile keyword (since Java 1.5)
26
35. False Positives
• “Are there any Java Developers in
the room?”
• False Positive
• “Yes” for an empty room.
• False Negative
• “No” for this room.
35
36. Monomorphic Dispatch
• A method call has only one possible
implementation
• In Java we can call methods on:
– Interfaces
– Virtual methods on Objects
• Not all methods are monomorphic
36
37. Monomorphic Dispatch
List<String> strings = new ArrayList<>();
strings.add(“a”); // monomorphic
if (randomNumber > 0.5)
strings = new LinkedList<>();
strings.add(“b”); // polymorphic
37
38. Tail Call Recursion
int factorial(int n) {
return fact(n, 1);
}
int fact(int n, int acc) {
if (n == 0)
return acc;
else
return fact(n - 1, acc * n);
}
38
39. Not Tail Call Recursion
int factorial(n) {
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
39
41. NO - I mean indirect jump vectors!
• A memory location holding an address.
• Execution Jumps to the memory location and then
immediately jumps to that address.
• Why?
• Interrupt Routines
• Code performing low-level I/O
• Avoids assuming that these programs are
located in one place.
41
42. Or maybe I mean in LISP?
Doubly overloaded - this is the 'high level'
meaning
• An approach to implementing Tail Call Recursion
• Problem: if you recurse a lot you eventually run
out of stack space and your program crashes
• Your paying customers are now sad pandas.
•
42
43. What is Trampolined Style?
A trampoline is a function whose purpose is to
call other functions in a program.
• All functions are called via the trampoline.
• Program functions:
• don't call other program functions
• return the address of the function to the trampoline
• return the arguments to the trampoline
•
43
44. Conclusions on Complex Terminology
• Complicates our domain.
• Confuses our developers.
• Software Engineering
– Domain driven design
– Pitching at the right level
• See if you can spot the bluffers this week!
44
It&#x2019;s the Community night tonight, so come on down\n
\n
\n
\n
\n
\n
\n
\n
\n
Enter stage for Job Interview.\n\n5 mins\n
JG: Leaning towards other and in the most earnest tone possible, "Wow, this guy sounds like he knows a lot about vim. If he has such passionate opinions backed up such complex terminology then he must be a really well informed and good developer."\n\nRW: leaning in "I've met this guy before - he's a bluffer!"\n\nJG: "You know, we've got a position open at work, would you be interested in interviewing?"\n\n- How do you do your source control and build management?\n\n10mins\n\n
\n
http://en.wikipedia.org/wiki/Buzzword_bingo\n\nAsk audience for some of their favourites\n