Web Matters

Why web matters and web matters you should know.

@sonicspot

## `$ whoami` - Marco Oliveira - [twitter.com/sonicspot](https://twitter.com/sonicspot) - Baboom Limited CTO - [baboom.com](http://baboom.com) - Indigo United co-founder - [IndigoUnited.com](http://indigounited.com) - opoJS founder - [opoJS.com](http://opojs.com) - Open-source advocate and contributor to a few projects. - Developing for the web for more than 10 years. Note: - HTML websites - Flash - backend development (PHP) - currently frontend and backend (JS and NodeJS)
## Web Matters Note: - Colleagues think. - Parents think. - What I really do.


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

## Web development SUCKS! Note: - Lower class of software development
> Aw... That's cool, but I prefer developing real software...
![dafuq](img/dafuq.jpg)
![Are you kidding me?](img/are-you-kidding.png)
![dafuq](img/true-story.png)
## What is real software?
- Will call it **web / non-web**. - What's the difference?
- Not inside the browser? Note: - 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?
![Desktop](img/atom.png)
![Mobile](img/mobile.png)
- 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. Note: - 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. Note: 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. Note: - 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. Note: - 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). Note: - 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](http://wtfjs.com) Note: `Array(16).join('wtf' - 1) + ' batman'` by Gary Bernhardt in [WAT](https://www.destroyallsoftware.com/talks/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. Note: - 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