8. From punch cards to Javascript
more than 35 years of daily programming
Co-Founder of two companies :
Winwise (1993-2008)
Aspectize (2007- always running)
@FredyFadel
http://www.scoop.it/t/web-tools-and-technologies
16. Automating
As much as possible but not more
Human Machine
Valuable information Irrelevant details
17. The computer revolution hasn't happened yet.
OOPSLA - Alan Kay : 1997
The real computer revolution hasn't happened yet.
Education - Alan Kay : 2007
Software is eating the world (Marc Andreessen : 2011).
Books, Music,Video, Entertainment, Photography, Recruitment…
And it’s just the beginning.
First time in history we have a global many to many communication system
and it’s software.
18. While describing your job, would you use the word growing ?
Do you grow software ?
Things that grow
Cities, plants…
Networks :The internet, theWeb, communication end points…
Data : it’s shape, it’s volume
Ceremonial complexity : Often due to code it’s shape, it’s volume
Cars don’t grow : they are “born” dead
19. I'm not against types, but I don't know of
any type systems that aren't a complete
pain, so I still like dynamic typing.
Actually I made up the term "object-oriented",
and I can tell you I did not have C++ in mind.
Alan Kay
22. Is about automating
What is repeatable and valueless
Machines are good at repeating
Valuable best practices
It could be business oriented or technical.
But yet not interfering with intelligent choices
It’s distinguishing the invariant from the variable.
29. Do you have the impression of repeating yourself ?
30. Repeating can be fun and lucrative
You gain knowledge and expertise (at least in the beginning)
You can maintain an impression of knowledge and expertise
The widespread Not Invented Here syndrome
You can easily mess up reuse
left-pad story in node community
“A little copying is better than a little dependency”
32. Is reusable what is reused
We reuse every day
tools, ideas, code others have written, resources…
We reuse because it’s seamless and has value
33. Habit
Even when it’s not seamless
Changing habits is expensive
Imitation
Surfing the buzz waves
34. Best example
Operating system
▪ Language independent
▪ Code independent
Even better example
Browser
▪ “Language independent”
▪ Operating system independent
35. Every piece of knowledge must have a
single, unambiguous, representation
within a system.
The Pragmatic Programmer
37. Reuse is impossible if the reusable is not identified
If the invariant is not identified
If the independent is not identified
Orthogonal is just a fancy way of saying independent
The reusable won’t be reused if reuse is not more or less
seamless
38. The invariant is what can be reused if it’s totally separated
from the variable (from the non reusable)
The reuse of the invariant can be automated to make it
seamless
AOP is a technique of automating the invariant.
39. Separating what
Business oriented code
Technical code
Because they are clearly independent
Each have their own invariants
Each evolve in their own pace
40. Some technical invariants
Network, bytes and clicks
JSON, HTTP, SQL,Authentication, Browsers, Devices…
Some business variable
UX
Data (it’s shape)
Processes
47. The mighty TransparentProxy
A transparent proxy is an object that can simulate any interface !
Easy to implement
▪ Less than 50 lines of C#
▪ You just need to implement it once in your life
Enables you to intercept all calls and provide valuable orthogonal
technical services through aTechnical Engine.
48. .net attributes are fine for technical aspects that require a
small amount of information
For more sophisticated aspects a DSL can be used to load
information into theTechnical Engine.
DSL example : Gherkin in Cucumber.
49. Integrated inVisual Studio
Graphical DSL for describing
▪ The shape of Data
Textual DSL for describing bindings
▪ Data
▪ Command
▪ Layout
50. A JavascriptTechnical Engine that automates
Producing HTML in the browser
Sending/Receiving Data
Manging State
A .netTechnical Engine that automates
Reading/Writing Data
Azure integration