devday.lk - bare knuckle web development

49
Bare-knuckle web development DevDay.LK Johannes Brodwall, Chief scientist Exilesoft Global @jhannes

Upload: johannes-brodwall

Post on 24-Apr-2015

1.036 views

Category:

Technology


1 download

DESCRIPTION

Can you go faster with less weight? In 45 minutes, I build a web server with an address book with tests firsts and no frameworks. What can you do if you really understand what's going on?

TRANSCRIPT

Page 1: DevDay.lk - Bare Knuckle Web Development

Bare-knuckle web development

DevDay.LKJohannes Brodwall, Chief scientist

Exilesoft Global

@jhannes

Page 2: DevDay.lk - Bare Knuckle Web Development

It can be fun and productive to use the basic

tools

Page 3: DevDay.lk - Bare Knuckle Web Development

• Philosophy• Demonstration

• Ruminations

Page 4: DevDay.lk - Bare Knuckle Web Development

Part I:

Page 5: DevDay.lk - Bare Knuckle Web Development

Why

Page 6: DevDay.lk - Bare Knuckle Web Development

• Learn new technologies

OR• Learn new things about your

technology

Page 7: DevDay.lk - Bare Knuckle Web Development

High impact with low ceremony

Page 8: DevDay.lk - Bare Knuckle Web Development

• Framework light• Test-driven

• No calculators

Page 9: DevDay.lk - Bare Knuckle Web Development

Light on framework

Page 10: DevDay.lk - Bare Knuckle Web Development

How much time do you spend

• In debugger?• Waiting for build?

• On Stackoverflow?

Page 11: DevDay.lk - Bare Knuckle Web Development

Frameworks solve 80% of the job…

Page 12: DevDay.lk - Bare Knuckle Web Development

… and makes the rest 10 times as hard

Page 13: DevDay.lk - Bare Knuckle Web Development

Test-driven

Page 14: DevDay.lk - Bare Knuckle Web Development

Fast feedback cycle

Page 15: DevDay.lk - Bare Knuckle Web Development

“I can see how TDD works for toy examples…”

Page 16: DevDay.lk - Bare Knuckle Web Development

“… but how can we use it when we have all these

really complicated technologies???”

Page 17: DevDay.lk - Bare Knuckle Web Development

(Hint:“all these complicated technologies”

I think I see your problem right here...)

Page 18: DevDay.lk - Bare Knuckle Web Development

“Don’t use a calculator…”

Page 19: DevDay.lk - Bare Knuckle Web Development

Part II:

Page 20: DevDay.lk - Bare Knuckle Web Development

Demo: Phonebook web app

Page 21: DevDay.lk - Bare Knuckle Web Development

What can you learn?

Page 22: DevDay.lk - Bare Knuckle Web Development

• Test for web applications• Specifying requirements with tests• The difference between

realistic slow tests (aka “integration”)and limited fast tests (aka “unit”)

• Dependencies in your tests• What does the web server do?• Refactoring shortcuts• Growing design• Alternatives to HTML templates (maybe)

Page 23: DevDay.lk - Bare Knuckle Web Development

Part III:

Page 24: DevDay.lk - Bare Knuckle Web Development

Ruminations

Page 25: DevDay.lk - Bare Knuckle Web Development

Those are my principles, and if you

don't like them... well, I have others.

- Groucho Marx

Page 26: DevDay.lk - Bare Knuckle Web Development

Build your app this way?

Page 27: DevDay.lk - Bare Knuckle Web Development

Probably not

Page 28: DevDay.lk - Bare Knuckle Web Development

Well, why not?

Page 29: DevDay.lk - Bare Knuckle Web Development

I am most likely insane

Page 30: DevDay.lk - Bare Knuckle Web Development

Or...

Page 31: DevDay.lk - Bare Knuckle Web Development

The reasonable man adapts himself to the world:

the unreasonable one persists in trying to adapt the world to himself.

Therefore all progress depends on the unreasonable man.

- George Bernard Shaw

Page 32: DevDay.lk - Bare Knuckle Web Development

Understand what’s going on

Page 33: DevDay.lk - Bare Knuckle Web Development

«Don’t reinvent the wheel»

Page 34: DevDay.lk - Bare Knuckle Web Development
Page 35: DevDay.lk - Bare Knuckle Web Development

Are you using technology to solve

your problems?

Page 36: DevDay.lk - Bare Knuckle Web Development

Or so that you don’t have to face your

problems?

Page 37: DevDay.lk - Bare Knuckle Web Development

... yet.

Page 38: DevDay.lk - Bare Knuckle Web Development

Overheated brain

Page 39: DevDay.lk - Bare Knuckle Web Development

95 % test coverage

Page 40: DevDay.lk - Bare Knuckle Web Development

95 % test coverage

5-10 seconds

Page 41: DevDay.lk - Bare Knuckle Web Development

95 % test coverage

5-10 seconds

< 1 day to create «framework»

Page 42: DevDay.lk - Bare Knuckle Web Development

SOAP:1. Construct XML

2. POST on HttpURLConnection

Page 43: DevDay.lk - Bare Knuckle Web Development

@Overridepublic String getCountryByIp(String ipAddress) { Document soapRequest = soapElement("S:Envelope", $("S:Body", wsxElement("wsx:GetGeoIP", $("wsx:IPAddress", ipAddress)))); Document soapResponse endpoint.postRequest(getSOAPAction(), soapRequest); return $(soapResponse).xpath("/Envelope/Body/*") .xpath("GetGeoIPResult/CountryName").text();}

Page 44: DevDay.lk - Bare Knuckle Web Development

No friction

Page 45: DevDay.lk - Bare Knuckle Web Development

Conclusion:

Page 46: DevDay.lk - Bare Knuckle Web Development

No calculator until…

Page 47: DevDay.lk - Bare Knuckle Web Development

Don’t just learn new technologies

.

Page 48: DevDay.lk - Bare Knuckle Web Development

Don’t just learn new technologies

=> Learn new approaches, techniques and features about the

technology you use

Page 49: DevDay.lk - Bare Knuckle Web Development

Thank [email protected]

http://johannesbrodwall.com

http://exilesoft.com/exilee

@jhannes

Believe nothing on the faith of traditions.Do not believe a thing because many people speak of it. 

Do not believe on the faith of the sages of the past. Do not believe what you yourself have imagined.

After examination, believe what you yourself have tested and found to be reasonable

- Buddha