Web Matters



Web Matters

0 3


web-matters-talk

Why web matters and web matters you should know.

On Github opojs / web-matters-talk

Web Matters

Why web matters and web matters you should know.

@sonicspot

$ whoami

- HTML websites - Flash - backend development (PHP) - currently frontend and backend (JS and NodeJS)

Web Matters

- Colleagues think. - Parents think. - What I really do.

I know... It's awesome, right?

Web development SUCKS!

- Lower class of software development

Aw... That's cool, but I prefer developing real software...

What is real software?

  • Will call it web / non-web.
  • What's the difference?
  • Not inside the browser?
- Desktop: Haroopad, Macaw, Atom - Mobile: BBC Olympics - Robots: https://www.youtube.com/watch?v=FR_QOxGsRz0 - 3D games: https://blog.mozilla.org/blog/2014/03/12/mozilla-and-epic-preview-unreal- engine-4-running-in-firefox/ - Accounting: https://twitter.com/pgte/status/452367467776860160/photo/1 - Can anyone guess the technology used to develop this?

  • All developed using web technologies.
    • node-webkit
    • phonegap
    • NodeJS
    • WebGL

STIGMATA

  • interpreted vs compiled
  • compiled is FASTER!
  • True most of the times.
  • Doesn't matter most of the times.
  • Programmers are not perfect, and demanding technologies lead to poor solutions.
  • Slower & harder to maintain.
- Lots of successful companies rely on web technologies. - Paypal - eBay - LinkedIn - Wallmart - If good enough for them, good enough for you!

Metrics

  • Raw performance.
  • Development time.
  • Licensing.
  • Security.
  • Resilience.
  • Maintainability.
  • Many others depending on the project.
Raw performance is only one of the several metrics for software development.

Most software, even "non-web" software, relies on web technologies.

  • JSON (JavaScript Object Notation)
  • REST APIs
  • Web evolved from websites into applications
    • (Facebook, Twitter, Baboom :D)
    • Easy & fast deploy.
    • No need to install, just visit the website.
    • Cross platform.
    • Interaction and design usually more appealing.
- Danger to become awesome and face a problem most non-web does not face.

Scale

  • Most "non-web" software runs on a single machine.
  • Web has many servers and even more clients.
  • Applications grow fast.
  • Time to shine for software architects.
- application needs to scale. - Social applications suffer from thi. - Growth spikes can make or break your application. - Requires careful thought and engineering. - Time to shine for software architects.
  • Driving force for birth and maturing of many technologies.
    • NoSQL (Couchbase, CouchDB, MongoDB).
    • Fulltext search engines (ElasticSearch, Solr, SphinxSearch).
    • Web servers and caching servers (Nginx, G-WAN, Varnish).
- Having a unified work force in terms of technologies can help you manage your resources.

Lingua Franca

JavaScript

DISCLAIMER: I was not always a JavaScript fan.

  • Typically associated with poorly written code.
    • Strange variable scope.
    • Spaghetti code.
    • Callback hell.
    • You can mess with the prototypes of native Objects.
    • Has lots of WTF's. wtfjs.com
Array(16).join('wtf' - 1) + ' batman' by Gary Bernhardt in WAT

On the other hand,

  • Very expressive.
  • Not verbose.
  • Asynchronous.

Several characteristics make JavaScript a fantastic language to use everywhere.

Atwood's Law

Any application that can be written in JavaScript, will eventually be written in JavaScript.

Enter NodeJS

  • JavaScript outside of the browser.
  • Platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications.
  • event-driven, non-blocking I/O model
  • perfect for data-intensive real-time applications that run across distributed devices.

Fantastic... What does it mean?

  • Your code is single threaded.
  • Single event at a time.
  • Much easier to develop highly concurrent software.
- Who knows what NodeJS is? - Who has used NodeJS? - Who is using it right now? Did I mention we are hiring?

Live coding

(always works out great)

  • No longer division between web and non-web software.
  • Don't use web just because, but don't ignore it as well.

Thanks!

@sonicspot