fun fact
fun factThis talk was a bet with a friend:
fun factThis talk was a bet with a friend:
X: “I bet you won’t submit a soft talk!”
fun factThis talk was a bet with a friend:
X: “I bet you won’t submit a soft talk!”
Me: “True - I normally wouldn’t! Let’s do it.”
fun factThis talk was a bet with a friend:
X: “I bet you won’t submit a soft talk!”
Me: “True - I normally wouldn’t! Let’s do it.”
this talk is
fun factThis talk was a bet with a friend:
X: “I bet you won’t submit a soft talk!”
Me: “True - I normally wouldn’t! Let’s do it.”
this talk is meta.
_ @
Konrad `@ktosopl` Malawski
_ @
Konrad `@ktosopl` Malawski
_ @
Konrad `@ktosopl` Malawski
_ @
Konrad `@ktosopl` Malawski
“disrupt”
“disrupt”dis·rupt
• To throw into confusion or disorder
• To interrupt or impede the progress, movement, or procedure of
• To break or burst; rupture.
“disrupt”dis·rupt
• To throw into confusion or disorder
• To interrupt or impede the progress, movement, or procedure of
• To break or burst; rupture.
“disrupt”
“disrupt”• don’t “just break stuff”
• don’t “disrupt only to disrupt”
• don’t ignore “helpful”
• don’t disrupt others (most of the time)
“disrupt”
“disrupt”
• experiment!
• focus on “interesting”, not “new”
• un-limit yourself
What’s the problem?
What’s the problem?It’s when we stop learning.
My motivation
The good ol’ Dreyfus model…
The good ol’ Dreyfus model…
“Rise of the Expert Beginner”
www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
“Rise of the Expert Beginner”
www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
It’s a tra
p!
“Rise of the Expert Beginner”
disrupt!
www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
failing happens.
failing happens.
Sure, we have JUGs.
Sure, we have JUGs.X: “We don’t have such a community for Haskell!”
Sure, we have JUGs.X: “We don’t have such a community for Haskell!”
Y: “Here’s your meetup account. 1st meeting in a week?”
Sure, we have JUGs.X: “We don’t have such a community for Haskell!”
Y: “Here’s your meetup account. 1st meeting in a week?”
delete(“smartest person in room problem”)
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…• interesting!
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…• interesting!
delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”
Me: “Find a reading club!”
delete(“smartest person in room problem”)
delete(“smartest person in room problem”)Reading ClubsCode RetreatsHackathons
Online Courses (Coursera?!)Open SpacesCode Dojos
Prepared KataUn-Conferences
BOFsCorridor Discussions
Something else!
Disruptive company structure
https://softwaremill.com/20-ceos-in-one-company/
20 CEOs in one Company
Disruptive company structure
https://softwaremill.com/20-ceos-in-one-company/
20 CEOs in one Company
Disruptive company structure
https://softwaremill.com/20-ceos-in-one-company/
• No managers!• Full transparency!• Fully distributed company!• Trust, responsibility & awesome!
20 CEOs in one Company
Disruptive company structure
https://softwaremill.com/20-ceos-in-one-company/
• No managers!• Full transparency!• Fully distributed company!• Trust, responsibility & awesome!
20 CEOs in one Company
!
That moment when you can!
“Been there, done that”,!
and then compare and learn even more!!
(book by 37signals guys)!
!
!
!
!
Determination
And a “do” attitude
And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”
And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”
Y: ” ”
And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”
Y: ” ”
And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”
Y: ” ”
http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html
http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html
really “nerdy” “hackers” teaching kids how to code.
!
Everybody learned a lot!
http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html
really “nerdy” “hackers” teaching kids how to code.
!
Everybody learned a lot!
Introvert as a waiter
Introvert as a waiter
Felt more like
Introvert as a waiter
Felt more like , not as cool as
Try living somewhere else
http://en.wikipedia.org/wiki/Dymaxion_map
Bold statement?Try living somewhere else
http://en.wikipedia.org/wiki/Dymaxion_map
Bold statement?Try living somewhere else
http://en.wikipedia.org/wiki/Dymaxion_map
functional
http://www.brics.dk/RS/96/37/BRICS-RS-96-37.pdf
functional// Figure 3, page 7!trait BinomialHeap extends Heap {!! type Rank = Int! case class Node(x: A, r: Rank, c: List[Node])! override type H = List[Node]!! protected def root(t: Node) = t.x! protected def rank(t: Node) = t.r! protected def link(t1: Node, t2: Node): Node = // t1.r==t2.r! if (ord.lteq(t1.x,t2.x)) Node(t1.x, t1.r+1, t2::t1.c) else Node(t2.x, t2.r+1, t1::t2.c)! protected def ins(t: Node, ts: H): H = ts match {! case Nil => List(t)! case tp::ts => // t.r<=tp.r! if (t.r<tp.r) t::tp::ts else ins(link(t, tp), ts)! }!! override def empty = Nil! override def isEmpty(ts: H) = ts.isEmpty!! override def insert(x: A, ts: H) = ins(Node(x,0,Nil), ts)! override def meld(ts1: H, ts2: H) = (ts1, ts2) match {! case (Nil, ts) => ts! case (ts, Nil) => ts! case (t1::ts1, t2::ts2) =>! if (t1.r<t2.r) t1::meld(ts1,t2::ts2)! else if (t2.r<t1.r) t2::meld(t1::ts1,ts2)! else ins(link(t1,t2),meld(ts1,ts2))! }!
http://www.brics.dk/RS/96/37/BRICS-RS-96-37.pdf
functional
X: “But I know functional programming!”
functional
X: “But I know functional programming!”
Y: “Great! Try something different!”
functional
logic - prolog
logic - prolog
likes(mary, food).
logic - prolog
likes(mary, food).likes(mary, wine).
logic - prolog
likes(mary, food).likes(mary, wine).likes(john, wine).
logic - prolog
likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).
logic - prolog
likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).
logic - prolog
likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).
| ?- likes(mary,food).
logic - prolog
likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).
| ?- likes(mary,food). yes.
logic - prolog
logic - prolog
logic - prologreverse(List, Reversed) :-
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
reverse([], Reversed, Reversed).
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
reverse([], Reversed, Reversed).
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
reverse([], Reversed, Reversed).
reverse([Head|Tail], SoFar, Reversed) :-
logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).
reverse([], Reversed, Reversed).
reverse([Head|Tail], SoFar, Reversed) :- reverse(Tail, [Head|SoFar], Reversed).
From “I won’t use that!”,
From “I won’t use that!”,To “That helped me later on!”
From “I won’t use that!”,To “That helped me later on!”
prolog (1972) !!
inspired datalog (1977)!!
datomic (2012)
Tons and tons more…
The point being… Have a “quick look” into other things!
Erlang, Haskell, Scala, Prolog, Standard ML, OCaml,
Go, JavaScript, TypeScript, Pascal, ADA, Common Lisp,
Fortress, F#, Eiffel, Cobol, R, D, Ruby, C++, Python,
Clojure, ELM, Scala, and lot’s of emerging languages!
or maybe read about VHDL!
Tons and tons more…
The point being… Have a “quick look” into other things!
roll-your-own
roll-your-own
X: “I know all these languages!”
roll-your-own
X: “I know all these languages!”
Y: “Awesome! Let’s implement one!”
roll-your-own
X: “I know all these languages!”
Y: “Awesome! Let’s implement one!”
roll-your-own
println("Handling simple return, one value: " + s) // todo remove and make multi return possible!! // todo very naive still - can only return a string literal! val l0 = new Label! mv.visitLabel(l0)! mv.visitLineNumber(10, l0) // todo random number here...! mv.visitLdcInsn(s.substring(1, s.length-1)) // todo only handling one value for now! mv.visitInsn(ARETURN)! val l1 = new Label! mv.visitLabel(l1)! mv.visitLocalVariable("this", "Lpl/project13/jo/" + pack + ";", null, l0, l1, 0)! }! X: “I know all these languages!”
Y: “Awesome! Let’s implement one!”
roll-your-own
!
X: “I know all these languages!”
Y: “Awesome! Let’s implement one!”
X: “Uhm, I meant spanish!”
roll-your-own
If you’re into that, start out with Charlie Nutter’s:
https://github.com/headius/indy_deep_dive
roll-your-own
window management
window management
window managementX: “How do you manage your windows?”
window managementX: “How do you manage your windows?”
Y: “Oh, I program my window layouting system”
window managementX: “How do you manage your windows?”
Y: “Oh, I program my window layouting system”
X: “Awesome, show me!”
tiling window management <<= XMonad
tiling window management <<= XMonad
culture differences
culture differencesin places I lived
A road-trip style vacationAlthough mine wasn’t as “exotic” as other’s :-)
culture differences ( )
culture differences ( )(don’t generalise, but be aware of it)
culture differences ( )(don’t generalise, but be aware of it)
culture differences ( )(don’t generalise, but be aware of it)
Example from my work-life:
culture differences ( )(don’t generalise, but be aware of it)
Example from my work-life:
very direct!historically cunning!
(because of old. communism gov.)
culture differences ( )(don’t generalise, but be aware of it)
Example from my work-life:
very direct!historically cunning!
(because of old. communism gov.)
not direct, it’s being polite!historically peace > personal stuff
culture differences ( )(don’t generalise, but be aware of it)
Example from my work-life:
very direct!historically cunning!
(because of old. communism gov.)
not direct, it’s being polite!historically peace > personal stuff
And it’s the same with other countries!!Everybody has different “styles” of interaction.!
!
And software is a lot of human interaction.
back to now()
back to now()
You’re at
back to now()
You’re at
Jump out of your comfort zone.!!
Try a “weird” session!
Just do it.
Just do it.
You’ll get a simple “thanks”.!!
And that’s the best.
Just do it.
You’ll get a simple “thanks”.!!
And that’s the best.
groups:!sckrk.com
hackerspace-krk.pl java.pl
gdgkrakow.pl meetup.com/Paper-Cup
!
images: XKCD
zen.pencils.com “Golden Boy” manga / anime
!
kudos & links:!Adam Pohorecki for SCKRK SoftwareMill for being so flat
All friends that helped to create our communities Erik Dietrich for his blog @ daedtech.com (expert beginner post)
http://en.wikipedia.org/wiki/Ralph_Waldo_Emerson
PREFERRED TYPING:
!STRONG
AND STATIC
LIFE IS
STUDY!
FAVOURITE MONAD:
!FUTURE[+A]
!!
TWITTER: @KTOSOPL
thank you!BIO:
KONRAD MALAWSKI
!T: KTOSOPL GH: KTOSO
BLOG.PROJECT13.PL GEECON.ORG
@ DEVOXX 2013