Google Chrome

37 results back to index

pages: 210 words: 42,271

Programming HTML5 Applications by Zachary Kessin


barriers to entry, continuous integration, fault tolerance, Firefox, Google Chrome, mandelbrot fractal, QWERTY keyboard, web application, WebSocket

Closure in a button $('document').ready(function Ready() { var button, tools; tools = ['save', 'add', 'delete'];$('div#toolbar')); tools.forEach(function (tool) {; var button = $('<button>').text(tool).attr({ css: 'tool' }).appendTo('div#toolbar'); clickHandler() {, button); alert("User clicked " + tool); }); }); }); When using closures, it can be hard to know which variables are or are not in the scope of a function. However, both Google Chrome’s DevTools and Firebug will show the list of closed variables. In Firebug, the scope chain can be seen in the Script tab by looking under “Watch.” Under all the variables of the current scope will be a ladder of the scopes going up to the main “window” object. In DevTools, for example, when the code is halted in the debugger, a subsection called “closure” in the right-hand column under Scope Variables will show the closed variables for the current function (see Figure 2-1). In this case, it shows that we have clicked on the “delete” button and lists the reference to the jQuery object for the button itself. Figure 2-1. Closures in Google Chrome’s DevTools Functional Programming Functional programming is a methodology that is more commonly associated with languages like Lisp, Scala, Erlang, F#, or Haskell, but works quite well in JavaScript also.

Beyond the core language, developers built tools that made debugging JavaScript much easier. Although Venkman, an early debugger, had appeared in 1998, the 2006 release of Firebug became the gold standard of JavaScript debuggers. It allows the developer to track Ajax calls, view the state of the DOM and CSS, single-step through code, and much more. Browsers built on WebKit, notably Apple’s Safari and Google Chrome, offer similar functionality built in, and Opera Dragonfly provides support for Opera. Even developers working in the confined spaces of mobile devices can now get Firebug-like debugging with weinre (WEb INspector REmote). The final key component in this massive recent investment in JavaScript was libraries. Developers still might not understand all the code they were using, but organizing that code into readily upgradeable and sometimes even interchangeable libraries simplified code management.

For example, a programmer may store product catalog data into an IndexedDB store so that when the user searches for an item, the server does not need to make a trip to the server to find the data for a particular item. IndexedDB is a NoSQL database that will feel familiar to people who have used such products as MongoDB or CouchDB. A program can store JavaScript objects directly into an IndexedDB data store. IndexedDB has been in Firefox starting with version 4. It also was introduced into Google Chrome starting with version 11. Microsoft has a version online at its HTML5 Labs website as an ActiveX control, which can be added into IE, and presumably it will be in the main IE release at some point. It will probably be available in other browsers in the next year or two. Formally, IndexedDB is now a draft proposal from the W3C. Note Because IndexedDB is supported by only two browsers at this point, use should probably be restricted to internal applications where you can limit use to browsers of your choice.


Backbone.js Cookbook by Vadim Mirgorod


Airbnb, create, read, update, delete,, Firefox, Google Chrome, MVC pattern, rolodex, web application

In this recipe, we will learn how to detect memory leaks in a Backbone application and how to fix them. We will use Google Chrome Heap Profiler, which is a part of the Google Chrome browser. Getting ready... In this recipe, we are going to take an example application from the recipe binding a collection to a view of Chapter 5, Events and Binding and modify it. Such modifications are not required in the production application but will help us to detect memory leaks using Google Chrome Heap Profiler. 250 Chapter 8 1. Add a named constructor to the each object in your program, which is extended from a standard Backbone object, such as Model or View. Inside this constructor, call a parent constructor. 1. It could be much easier to detect memory leaks in Google Chrome Heap Profiler by finding object instances using their class names, which would only be possible if we defined such classes using named constructors. 2.

Following code shows the InvoiceItemModel object with the named constructor defined.         var InvoiceItemModel = Backbone.Model.extend({   calculateAmount: function() {     return this.get('price') * this.get('quantity');   },     constructor: function InvoiceItemModel() {       InvoiceItemModel.__super__.constructor.apply( this, arguments );     }   }); 2. Make sure your application code is performed in a global scope. This will make it easier to find Backbone objects in Google Chrome Heap Profiler. Contents of your main.js file shouldn't be enclosed by any function. The next few lines of code should be removed from your main.js file. (function($){   $(document).ready(function () {   }); })(jQuery); Inclusion of main.js into index.html should be performed in the body section as follows: <body><script src="js/main.js"></script></body> 3. Modify ControlsView by adding a button which deletes InvoiceItemsTableView to demonstrate a memory leak.

See  model backbone-mongodb extension downloading 224 Backbone.Mousetrap extension 136 Backbone objects events, handling 117, 118 using, with mixins 210, 211 Backbone Query about 78 downloading 78 Backbone.QueryCollection 79 Backbone.Relational 87 Backbone relational extension downloading 87 Backbone.RelationalModel 89 Backbone.Router used, for switching views 110-113 Backbone.Router object 18, 25 Backbone.stickit extension advanced usage 132 model getters/setters, overriding 132 specific HTML event, listening to 133 used, for bi-directional binding 128-132 view element updates, overriding 132 Backbone.sync() method 206 260 Backbone.Validation extension 50, 54 Backbone.View 171 Backbone.View object 18 Backgrid documentation URL 175 Backgrid example 167 Backgrid extension 175 Backgrid.Grid 171 bidirectional binding performing, with Backbone.stickit 128-131 Billing Application business logic, designing 11 designing, MVC pattern used 8-11 Bootstrap framework downloading 160 used, for customizing form 158-160 built-in events about 119 add 119 change 119 change:[attribute] 119 destroy 119 error 119 invalid 119 remove 119 reset 119 route 119 route:[name] event 119 sort 119 sync 119 built-in validators acceptance 50 equalTo 52 length 51 max 51 maxLength 52 min 51 minLength 51 oneOf 52 pattern 53 range 51 rangeLength 52 required 50 using 50 bulk operations performing, on grid models 172, 173 business logic, for Billing Application BankAccountModel properties, defining 12 BuyerModel properties, defining 12 designing, with models and collections 11-13 InvoiceItemModel methods, defining 12 InvoiceItemModel properties, defining 12 InvoiceModel methods, defining 13 InvoiceModel properties, defining 13 SellerModel properties, defining 12 C callbacks binding, to transition events 47, 48 Cascading Style Sheets (CSS) 103 chain() method 78 change:[attribute] event 119 changedAttributes() method 118 change event 119 changePage() method 228 changeView() method 113 clear() method 33 clone() method 30, 68 CoffeeScript 47 collection about 93 binding, to select list 134-136 binding, to view 122-128 chaining 77, 78 common operations 65 creating 66 existing models, adding 70 index, getting 68 iterating through 75 model, adding 69 model, getting from by ID 69 model, getting from by index 67 model, removing 71 models, filtering 74 multiple models, adding 70 No SQL queries, running 78, 79 one-to-many relationship, implementing 86-89 rendering, in view 101, 102 sorting 73 various types model, storing 83-85 working, as queue 72 working, as stack 72 combining operators, No SQL operators $and 81 $nor 81 $not 81 $or 81 commit() method 152 comparator about 73 model pair, comparing 74 compatibility ensuring, search engine used 245-247 compiled templates using 148 Cross-site scripting enabling 226 D data fetching, polling technique used 201-205 data grid building 167-170 deepEqual() 218 delegateEvents() method 110 destroy event 119 destroy() method 187, 201 Document Object Model (DOM) 106, 226 DOM events handling, in view 106-110 E each() method 75, 218 Ender.js 98 equalTo validator 52 error event 119 error messages customizing 155 events callback, unbinding 117 delegating, manually 110 listening, on objects 117 managing 116 undelegating, manually 110 events, Backbone objects handling 117, 118 261 event triggering avoiding, while working with objects 119 every() method 76 executePolling() method 205 extend() method 24, 211 F fetch() method 186, 220 form customizing, Bootstrap framework used 158-160 defining 149-151 using without model 152 validation, adding 153, 154 form events handling 156-158 form templates overriding 161 Foursquare 6 G getContext() method 178 get() method about 33 using 69 getters or setters overriding 37-40 GitHub 211 Google Boot 246 Googlebot 247 Google Chrome Heap Profiler using, to detect memory leak 251-256 Groupon Now! 6 Grunt used, for creating Backbone.js extension 211-215 H HTML5 canvas drawing on 175-178 reference link 178 HTML element creating 95, 96 262 HTML form validating 54, 55 I includeInJSON property 90 independent copy, collection model length, getting 68 retrieving 68 indexOf() method 68 IndividualContactModel 84 initialize() method 32, 95, 157, 176 invalid event 119 InvoiceItemModel object 251 InvoiceItemsTableView instance 255 invoiceList() 24 iOS/Android app building, with PhoneGap 233-236 iOS-inspired theme downloading 225 iteration methods, collection about 76 any model, checking for specific condition 76 attribute, getting from model 76 model, checking for specific condition 76 models, boiling down 77 specific calculations, performing 76 J JavaScript Garbage Collector URL 258 jQuery about 93, 97 dealing, with view element 97, 98 URL, for documentation 98 URL, for events 110 jQuery.ajax() method 223 jQuery Mobile about 209 223 library, downloading 224 jQuery Mockjax extension downloading 221 JS files optimizing, with r.js 244 JSON model, exporting to 89 K keyboard shortcuts handling, in view 136, 137 L layouts assembling, LayoutManager used 163-166 length() method 68 length validator 51 LIFO (last in, first out) data structure 43 LinkedIn mobile 6 listenTo() method 117, 256 local storage working with 206, 207 M many-to-many relationship implementing 89 map() method 76 maxLength validator 52 max validator 51 memento stack first state, restoring from 44 working with 43, 44 memory leak about 250 by closure 250 detecting, Google Chrome Heap Profiler used 250-257 in JavaScript, URL 258 minLength validator 51 min validator 51 mixins using, with Backbone objects 210, 211 mobile application developing, with jQuery Mobile 223-232 model about 29, 93 adding, to collection 69 adding, to collection at specific position 70 advanced validation, using 49 binding, to select list 134-136 binding, to view 120-122 checking, for attribute 34 cloning 30 creating 30 default attribute values, setting 30, 31 default attribute values, setting with multiline expression 31, 32 existing models, adding 70 exporting, to JSON 89, 90 filtering, in collection 74 getting from collection, at specific index 67 getting from collection, by ID 69 HTML escaped attribute value, getting 34 multiple models, adding 70 nested attributes, working with 57, 58 removing, from collection 71 rendering, in view 99, 100 model attributes operating 33 validating 35, 36 validation errors, handling 36 validation, triggering manually 37 model getters/setters overriding, Backbone.stickit used 132 model identifier operating 34, 35 model pair comparing 74 models and collections synchronizing, RESTful service used 185-187 models, of various types storing, in collection 83-85 model states managing 41 operating 42, 43 model validation performing 155 mod_proxy_http module 246 mod_proxy module 246 mod_rewrite module 246 MongoDB Extended JSON about 212 handling 188 MongoLab about 181 creating 182-184 URL 181, 212 263 working 185 Moustrap library 137 Mustache about 147 downloading 147 Mustache.compilePartial() function 149 Mustache.render() 147 Mustache templates using 147 Mustche.js syntax URL 149 mutators attribute 38 mutators events handling 41 MVC pattern about 5-7 benefits 7, 8 Controller 7 designing, for Billing Application 9-11 Model 7 View 7 N name() method 84 nested array working with 58 nested attributes, model callbacks, binding to events 59 elements, adding to nested array 59 elements, removing from nested array 59 nested array, working with 58 working with 57, 58 No SQL operators combining operators 80 standard operators 79 No SQL query multiple queries, performing on same key 81 performing, to collection 79 results, caching 82 results, paging 82 results, sorting 82 notDeepEqual() 218 notEqual() 218 notStrictEqual() 218 264 O off() method 117 ok() method 218 once() method 116 onclick callback 250 oneOf validator 52 one-to-many relationship implementing 86-89 one-to-one relationship implementing 60-62 onFetch() method 205 on() function 110 on() method 116, 158 OrganizationContactModel 84 P parameters parsing, in URL 26 parse() method 188 partials using 148 pattern validator 53 Phantom.js docs 250 PhoneGap Build 233 pluck() method 76 plugins used, for extending application 27 polling technique used, for fetching data 201-205 pop() method 72 previousAttributes() method 118 previous() method 118 project directory structure, Backbone application creating 19 project structure organizing, with Require.js 236-241 push() method 72 Q queue collection, working as 72 QUnit about 216 used, for writing tests 216 working 218 R rangeLength validator 52 range validator 51 records filtering performing 174 reduce() method 77 remove event 119 remove() method 71, 97, 255, 256 render() method 95, 102, 130, 143 Rendr 6 Representational State Transfer.


pages: 48 words: 10,481

Instant Ember.JS Application Development: How-To by Marc Bodmer


Firefox, Google Chrome, MVC pattern, web application

Handling external data (Advanced) will show you how you can incorporate external data from an API into your application. An Ajax method will be used for this recipe. It will also touch upon Ember Data, which is a library the Ember.js is working on to simplify data in more complex applications. What you need for this book The programming language used in this book will be JavaScript. The browser that will be used to run the JavaScript, HTML, and so on will be Google Chrome. Other browsers such as Firefox and Safari should work just as well. The operating system that can be used is Windows, Mac OS X, or Linux. A text editor other than Notepad, such as Notepad++, VIM, or Sublime Text should be used for proper formatting of the code. Who this book is for The target audience for this book is frontend developers who realize that their frontend code base has gotten too large to maintain effectively and properly, and are looking for a complete framework solution.

We can use this starter kit on a Windows, Mac OS X, or Linux operating system. A backend for Ember.js is definitely a possibility. The most commonly used backend for Ember, Rails, has gems to add Ember.js support. Node.js and Django have adapters to incorporate Ember.js as well. For the purposes of this book, we will sacrifice proper application architecture in the interest of time. Getting ready The browser used for the purposes of this book will be Google Chrome. Any text editor for editing our JavaScript and HTML files will work in this case. Ember provides a starter kit that will help us create our sample application. Instant Ember.js Application Development How-to Download the latest starter kit from downloads or use the file provided. Currently, the latest released version of Ember.js is 1.0.0-pre.2.


pages: 671 words: 228,348

Pro AngularJS by Adam Freeman


business process, create, read, update, delete,, Google Chrome, information retrieval, inventory management, MVC pattern, place-making, premature optimization, revision control, single page application, web application

The inline script in this example contains a statement that calls the console.log method, which writes a message to the JavaScript console. The console is a basic (but useful) tool that the browser provides that lets you display debugging information as your script is executed. Each browser has a different way of showing the console. For Google Chrome, you select JavaScript console from the Tools menu. You can see how the console is displayed in Chrome in Figure 5-2. Figure 5-2.  The Google Chrome JavaScript console ■■Tip  Notice that the Chrome window shown in the figure has an AngularJS tab. This is added by the Batarang extension that I described in Chapter 1 and is useful for debugging AngularJS apps. You can see that the output from calling the console.log method is displayed in the console window, along with the details of where the message originated (in this case on line 7 of the jsdemo.html file).

That said, it has some nice features and may well suit you better than it does me. Choosing a Web Browser AngularJS works in any modern web browser, and you should test your app in all of the browsers that your users are likely to use. You will need a go-to browser for development purposes, however, so that you can set up your development environment to show the current state of the application and perform basic testing. I’ll be using Google Chrome in this book, and I suggest you do the same. Not only is Chrome a solid browser, but it complies well with the latest W3C standards and has excellent F12 developer tools (so-called because you access them by pressing the F12 key). The most compelling reason to use Chrome for development is that Google has created a Chrome extension that adds support for AngularJS to the F12 tools. It is a useful—if unpolished—tool, and I recommend you install it.

As long as your preferred editor can write HTML and JavaScript files (both of which are plain text), then you will be able to follow along without any problems. 8 Chapter 1 ■ Getting Ready Installing Node.js Many development tools that are commonly used for client-side web app development are written in JavaScript and rely on Node.js to run. Node.js is built from the same JavaScript engine that is used in the Google Chrome browser but has been adapted to work outside the browser, providing a general-purpose framework for writing JavaScript applications. Go to and download and install the Node.js package for your platform (there are versions available for Windows, Linux, and Mac OS). Make sure you install the package manager and that the installation directory is added to your path. To test the Node.js installation, open a command line and type node.


pages: 1,038 words: 137,468

JavaScript Cookbook by Shelley Powers


Firefox, Google Chrome, hypertext link, p-value, semantic web, web application, WebSocket

However, if you’re motivated, you should be able to use your JavaScript skills to create any number of useful browser tools. Creating Google Chrome extensions A Google Chrome extension is the simplest development environment of all the brows- ers. Your extension can consist of a manifest file, created in JSON, a download icon, and then the extension web page and JavaScript. It’s uncomplicated, and it’s the envi- ronment I recommend you try first, before developing an extension for other browsers. You can run through the beginning tutorial and have your first Chrome extension finished in an hour. If, I should add, you can run Chrome in your environment at all, as Google also provides limited platform support for its browser. Currently, the Google Chrome extension environment only seems to work in Windows, though you can see about getting into an early release program for Mac and Linux.

; var div = document.createElement("div"); div.appendChild(txt); document.body.appendChild(div); }</script> After you create the manifest and application page, you’ll load the extension in Chrome via the Tools menu, choosing Extensions. Make sure the Developer Tools are exposed, and click the “Load unpacked extension…” button for the extension folder, as shown in Figure 21-1. If all goes well, the icon shows in the toolbar. If you click the icon, the extension pop-up should open, as shown in Figure 21-2. Access the Google Chrome Extension Lab at chrome/extensions/overview.html. 21.1 Creating a Browser Add-0n, Plug-in, or Extension | 485 Figure 21-1. Loading a Chrome extension Mozilla extensions The Mozilla extensions for the organization’s applications, including Firefox and Thunderbird, are reasonably uncomplicated to create, but even then, the number of files you need in order to implement an add-on is a little awe-inspiring.

(dot) in regular expressions, 25 replacing with footnote bullets, 254–257 dot notation, 118 testing for Boolean attributes, 252–253 " (double quotes) for strings, 1 elements, adding drag-and-drop (HTML5), 132–140 adding paragraphs to divs, 248 drag events, 136 and then adding text, 249–251 dragend events, 136 to end to page, 246–247 dragenter events, 136, 138 before existing elements, 242–246 draggable attribute, 135 with innerHTML property, 241–242 dragleave events, 136 elements property (form element), 212 Dragonfly (Opera), 198–200 embedding SVG into HTML pages, 339–345 using breakpoints, 201 empty strings, checking for, 10–12 dragover events, 136, 138 emulating canvas, 329 dragstart events, 135, 136 emulating SVG in IE, 338–339 drop events, 136 encodeURI method, 160 dtstart class, 447 encodeURIComponent method, 160, 416 duplicate form submissions, preventing, 169– enhancing applications with JavaScript, 496– 171 499 dynamic line charts (canvas), 330–333 enumerable attribute (objects), 370 dynamic pages enumering object properties, 374–377 bookmarking, 153–156 == (equality) operator, 5 preserving state for Back and Refresh, 156– === (strict equality) operator, 6 157 Error Console (Dragonfly), 198 dynamic runtime functions, 98–100 Error Console (Safari), 203 dynamic selection lists, 173–176 error handling, 177 checking for function errors, 180–181 E custom useful exceptions, 184–185 graceful, 182–183 E property (Math), 56 managing when JavaScript is off, 177–180 elapsed time, tracking, 49 Error objects, 183 elements errors, about, 177 accessing all images in, 221–222 errors in forms, highlighting, 302–307 using Selectors API, 222–226 errors with AJax requests, checking for, 421 adding attributes to, 251–252 escape sequences, 15 changing CSS style properties of, 264–267 eval method, 442, 443 collecting by shared attribute, 232–233 EvalError errors, 184 creating arrays of, by class name, 231–232 event listeners, 116 finding parent elements for, 226 stopping listening, 125 getting attribute information for, 237–238 Event objects, 120 getting CSS style information for, 238–240 EventException exceptions, 185 hiding or showing page sections, 299–300 events, 115–142 hiding until needed, 276–277 516 | Index canceling, 116, 125–126 filtering arrays, 84–85 capturing mouse-click information, 119– finally statements, for exception handling, 183 122 finding (see searching) flashing color, to signal action, 316–320 Firebox, Greasemonkey scripts for, 487–488 with forms Firebug debugger, 185–188 acting on radio button clicks, 164–166 using breakpoints, 188–190 capturing form data, 161–163 Firebox, debugging in, 185–188 generic reusable handler functions, 122– profiling application performance, 190– 125 194 HTML5 drag-and-drop, 132–140 using breakpoints, 188–190 keyboard events, 116, 129–132 Firefox, WebGL support in, 350–351 keyboard listening, 308–312 Firefox extensions, building, 486 live regions, accessibility of, 323–324 :first-child selector (CSS), 229 propagating through nested elements, 126– :first-of-type selector (CSS), 227 129 flashing color, to signal action, 316–320 running functions after page load, 117–118 flattening multidimensional arrays, 79–80 Safari orientation events, 140–142 floor method (Math), 57, 60 every method (Array), 86 fn property (jQuery), 404 exceptions, 184–185 focus events, 116 exp method (Math), 57 with form elements, 162 expires= parameter (cookies), 463 footnote bullets, replacing links with, 254– explorercanvas library, 329 257 ExtendScript Toolkit (ESTK), 496–498 loops, 374 extensibility, object forEach method (Array), 82 adding methods, 362–364 foreignObject elements (SVG), 349 adding properties, 369–374 form data, processing for Ajax calls, 416–417 preventing, 377–378 forms, 159–176 preventing property descriptor changes, accessing text input values, 159–161 379–380 acting upon radio button clicks, 164–166 extensions, creating, 484–488 capturing data upon events, 161–163 external libraries, using, 400–402 collapsible sections for, 277–280, 312–316 combining libraries, 408–411 disabling and enabling elements, 161 extracting data from XML documents, 437– after radio button events, 164 442 dynamic selection lists, 173–176 hiding and displaying elements, 171–173 F highlighting invalid fields, 302–307 multiple submissions, preventing, 169–171 factorials, 101 with no JavaScript support, 177–180 fades, to signal action, 316–320 storing data in associative arrays, 88–91 Fibonacci Sequence, 101, 110 validating input for fields, form (see see forms) based on format, 166–167 FIFO (first-in, first out), 75–76 canceling invalid data submission, 167– File API, 500–509 168 file elements (forms), 163 forms collection (document element), 160, File objects (File API), 500 212 FileList objects (File API), 500 frame elements, 143 fileName property (Error), 183 freeze method (Object), 380 FileReader objects (File API), 500 Function.apply method, 366–369 fillRect method (canvas), 327 function closers with timers, 52–53 filter method (Array), 85 Index | 517 function closures, 103–106, 105 getElementById method (document element), (see also currying) 214, 215 function constructors, 93 getElementsByClassName method function literals (function expressions), 94, creating arrays of objects with, 231–232 100 getElementsByClassName method (document Function objects, 93, 98 element), 214 function scope, 104 getElementsByTagName method (document function statements, 93, 94 element), 214, 216, 218, 222 functions, 93–113 summing table row/column elements, 235 anonymous, wrapping global variables with, getFullYear method (Date), 39, 48 112–113 getHours method (Date), 39, 48 applying against array elements, 82–83 getMilliseconds method (Date), 39, 48 to create new array, 83–84 getMinutes method (Date), 39, 48 controlling scope of, 383–385 getMonth method (Date), 40 creating, 94 getOwnPropertyDescription method (Object), currying, 104, 107–108 370 dynamic runtime functions, 98–100 getOwnPropertyDescriptor method, 374 errors in, checking for, 180–181 getOwnPropertyNames method (Object), 375, memoization (caching calculations), 109– 376 112 getResponseHeader method passing as function arguments, 100–101 (XMLHttpRequest), 414 passing complex objects to, 96–98 getSeconds method (Date), 40, 48 passing data to/from, 95–96 getSVGDocument method, 336 recursion, 101–103 getter/setter functionality, 364–366 remembering data among, 103–106 getTime method (Date), 40 running after page load, 117–118 getTimezoneOffset method (Date), 40 running repetitively, 50–51 getUTCDate method (Date), 40 future dates, scheduling, 48 getUTCDay method (Date), 40 getUTCFullYear method (Date), 40 G getUTCHours method (Date), 40 getUTCMilliseconds method (Date), 40 \g flag (regular expressions), 26, 28 getUTCMinutes method (Date), 40 garbage collection, function closures and, 105 getUTCMonth method (Date), 40 generalized currying functions, 107–108 getUTCSeconds method (Date), 40 geolocation API, 500 github host, 399 geometry global search flag (\g), 26, 28 calculating arc lengths, 67–68 global variables, 58 circles that fit page elements, 65–67 function closures to avoid, 103–106 gesture events, 117 wrapping in anonymous functions, 112– GET requests, 417–420 113 getAllResponseHeaders method Google Chrome extensions, building, 484– (XMLHttpRequest), 415 485 getAttribute method, 237 Google Code host, 398 getAttributeNS method, 238 Google Gears, 457 getBoundingClientRect method (element), Google’s Chrome, debugging in, 208–209 272, 273 Greasemonkey scripts, 487–488 getComputedStyle method (window element), > (greater than) operator, 7 240 >= (greater than or equal) operator, 7 getDate method (Date), 39, 48 getDay method (Date), 39 518 | Index H accessing all in page, 216–221 images collection (document element), 212 hasAttribute method, 238, 252 ++ (increment) operator, 58 hash maps (hash tables), 91 incremental counters, 57–58 hash property (location element), 151, 153 index (array elements), 70 hCalendar Microformat annotations, 447–450 indexOf method (Array), 78, 80 head elements, 211 indexOf method (String), 8, 9 height (see size) !


pages: 290 words: 119,172

Beginning Backbone.js by James Sugrue


Airbnb, continuous integration, Firefox, Google Chrome, loose coupling, MVC pattern, node package manager, single page application, web application, Y Combinator

Here is a selection of the tools that I use for my own JavaScript development. Apache You’re definitely going to need some version of Apache to host your web app locally. Although for the type of apps we’ll create in this book, PHP and MySQL aren’t going to be required, so it’s hard to beat XAMPP ( for ease of installation across Mac or Windows platforms. 19 Chapter 1 ■ An Introduction to Backbone.js Google Chrome When developing JavaScript, Chrome is my browser of choice, purely because of the strength of the developer tools included. The Chrome Developer Tools (Figure 1-15) are among the best web debugging tools available. From the Sources tab you can open any JavaScript and add breakpoints, allowing you to inspect the values of variables and go step by step through the execution of your program. Figure 1-15 illustrates a breakpoint within backbone.js as the script is loaded in the code previously illustrated.

Once all of the code has been successfully migrated, the following code should execute the app in the same condition as it was in Chapter 6:   require([ 'backbone', 'app/view/TimelineView', 'app/view/ProfileView', 'app/model/Search', 'app/view/SearchView', 'app/router/AppRouter', 'app/util/Helpers' ], function (Backbone, TimelineView, ProfileView, Search, SearchView, AppRouter) {    var timelineView = new TimelineView(), profileView = new ProfileView({user: 'sugrue'}), searchModel = new Search(), searchView = new SearchView({model: searchModel}), appRouter = new AppRouter({searchModel: searchModel}); Backbone.history.start(); });   Using Yeoman to Get Started Quickly In Chapter 10 we discussed how Grunt provides generators to help you get started with a complete application structure quickly. Yeoman (, Figure 12-3) makes this process even easier, with generators available for Backbone applications that utilize RequireJS. 261 Chapter 12 ■ Creating a Manageable JavaScript Code Base Figure 12-3.  Yeoman web site at Yeoman, created by the Google Chrome Developer Relations team, is a tool stack that brings together three tools to improve your productivity when creating web applications. It includes Grunt, which we discussed in depth in Chapter 9, as well as two other tools: Bower and Yo. Bower is a package manager for libraries and frameworks that are used within web applications. In a similar fashion to NPM, Bower allows you to download the libraries you need through the command line and brings all the dependent libraries along with it.

The key thing to remember is that even though JavaScript is a dynamic language and allows you to do almost anything you want, there is always the opportunity to apply real structure to your code to make it future-proof and ready for any application requirements that get added late in the project life cycle. 269 Index „„         A AngularJS, 8 Apache, 19 Asynchronous JavaScript and XML (Ajax), 2 Asynchronous Module Definition (AMD), 249 „„         B Backbone applications error alert, 233 error validation, 232 error events, 233 invalid event, 232 validate function, 232 validate method, 232 memory leaks listenTo function, 234 patterns, 234–236 unbind events, 233–234 network performance, 244 perceived performance Cache objects, 247 document fragment, 245–246 extra data storage, 246–247 optimistic network calls, 244 rendering views registerPartial function, 238–239 render function, 236, 238 template precompilation, 240–241 underscore templates, 239–240 separation of concerns, 231 view management common code sharing, 242 parent view updation, 242–243 Backbone collections adding models, 54 constructors, 54 definition, 53 events, functions and property, 62 exchanging data deleting data, 60 retrieving data, 59 saving data, 60 setup, 59 functions and property, 61 getting list of attributes, 58 iterating function, 57 removing models, 55 reset function, 55 retrieving models, 56 search mechanisms, 58 set function, 56 shuffle function, 58 sorting function, 57 Backbone community code samples, 127 developer tools and utilities, 148 models and collection extensions (see Models and collection extensions) quick reference, 149 user interface components (see User interface components) Backbone.history.start() function, 86 Backbone.js advantages, 14 Ajax, 2 Ashkenas, Jeremy, 1 companies Airbnb, 12 Foursquare, 13 SoundCloud, 12 design patterns (see Design patterns, web applications) development tools Apache, 19 Google Chrome, 20 Sublime Text 2, 20 271 ■ index Backbone.js (cont.) disadvantages, 15 DocumentCloud application, 1 downloading CDNs, 18 development versions, 16 edge version, 17, 17–18 production version, 17, 17, 17 Gmail web application, 3 jQuery, 2 library, 1 Model View Controller pattern, 1 server-side logic, 1 single-page web applications, 2 testing, 18 Backbone models adding functions, 43 attributes changing attribute values, 41 cloning models, 42 deleting attributes, 41 operations, 42 retrieving attribute values, 41 constructors, 40 creation, 40 deleting models, 52 events listening for changes, 43–44 operations relatedto attributes changes, 45 tracking changes, 44 exchanging data, 47 extend mechanism, 52 identifiers, 50 model validation, 45 Node.js server back end, 47 parsing server responses, 52 retrieving models, 51 save function, 50 Backbone view binding View class, 65 changing DOM element, 68 creation, 64 extend() function, 64 finding nested elements, 67 properties and functions, 69 rendering content, 66 self and this objects, 69 viewing events, 68 Behavior-Driven Development (BDD), 170 Booleans, 24 272 „„         C .clone() method, 42 CoffeeScript, 1 CollectionView, Marionette Backbone.View class, 209 callbacks, 215 child views, 216 collection attribute, 210 for empty datasets, 216 ItemView, 216 root element updation, 209 showProfile event, 208 template parameter, 209 TimelineItemView, 208, 210–211 Twitter timeline, 211 CompositeView, Marionette appendHtml function, 212 complete code, 213 HTML page, 212 TimelineItemView declaration, 214 tagName attribute, 213 timeline div, 212 timeline-item-template, 213–214 timeline-template creation, 212 ul declaration, 212 Content delivery network (CDN), 18 „„         D Date objects, 25 Design patterns Facade pattern convert function, 266–267 definition, 265 model objects, 265 twitter, 266 Mediator pattern airport control tower, 267 definition, 267 handling, 268 implementation, 267–268 name.change notification, 268 Model View * AngularJS, 8 Backbone.Collection, 6 Backbone.Model, 6 Backbone.Router, 6 Backbone.View, 6 Ember.js, 9 implementation, 6 Knockout.js, 7 ■ Index Model View Presenter, 5 MVVM, 6 Model View Controller (MVC) code reuse, 5 data representation, 5 key terms, 4 separation of concerns, 5 sequence diagram, 5 structure benefits, 4 DocumentCloud application, 1 Document Object Model (DOM), 2 „„         E ECMAScript, 21 el attribute, 65 Ember.js, 9 Events, backbone application binding, 88–89 collection events, 91 custom event creation, 93 DOM, 94 global, 93 listenTo function, 90 model, 92 router class, 92 stopListening function, 90 triggering, 91 unbinding, 89–90 „„         F Facade pattern convert function, 266 definition, 265 model objects, 265 twitter, 266 fetch() function, 51 findWhere function, 59 forEach function, 57 „„         G Globbing, 187 Google Chrome, 20 Grunt CSSMin, 194 file system array format, 185 compact format, 185 globbing, 187 object format, 185 properties, 186 installation, 180 jasmine task, 197 JavaScript, 180 JavaScript source code compression, 190 externalLibraries, 191–192 installation, 190 minification task, 192 report property, 193 UglifyJS Task configuration, 191 uglify task, 193 plug-ins, 201 projects configuration, 182 dependency, 181 grunt.loadNpmTasks function, 183 grunt.registerTask function, 183–184 index.html file, 181 scaffolding, 199 src and dest property, 183 uglify task, 182–183 QUnit task configuration, 195 installation, 195 output, 196 reporting task, 196 static analysis tools initConfig, 188–189 installation, 188 JSHint checks, 188 JSHint output, 189 lint tool, 188 registerTask function, 189 reporterOutput attribute, 189–190 task configuration, 184 task sets, 198 web site, 180 grunt.loadNpmTasks function, 183 grunt.registerTask function, 183–184 „„         H Handlebars function built-in helpers, 76 conditional statements, 75 creating helpers, 76 displaying variables, 74 each helper, 75 inserting comments, 74 precompiling templates, 77 usage with Backbone, 73 „„         I Inheritance prototype chain, 34 overriding methods, 34 parasitic combination, 34–35 talk method, 33 273 ■ index „„         J Jasmine, 170 BDD, 170 describe function, 172 directory structure, 171 expect function, 172 fake server, 177 it function, 172 jQuery matchers, 175 matchers, 174 output, 172 run tests, PhantomJS, 178 setup and teardown function, 174 view test, 175 website, 170 jQuery, 2 „„         K Knockout.js, 7 ko.observable() function, 7 „„         L log helper, 76 „„         M Marionette application creation, 203, 205 application infrastructure, 204 application structure, 204 developers, 203–204 download options and version, 204 messaging, 205 m.html page, 205 nested regions, 216 object layout, 217–218 region addition, 206 TemplateCache, 205 views, 204 attachView function, 207 callbacks, 214–215 collectionview (see CollectionView, Marionette) CompositeView (see CompositeView, Marionette) currentView attribute, 207 events, 214 ItemView, 206 Region objects manage views, 207 show() or close() functions, 207 TimelineView, 206 274 Math functions, 25 Mediator pattern airport control tower, 267 definition, 267 handling, 268 implementation, 267–268 name.change notification, 268 Models and collection extensions Backbone.dualStorage Chrome Developer Tools, 142 configuration, 141 uses, 141 Backbone.memento Chrome Developer Tools, 140 configuration, 138, 140 plug-in ignore changes, 139 uses, 138–139 Backbone.trackit configuration, 137 individual model objects, 137 uses, 137 Backbone-Validator configuration, 144 uses, 144 Backbone.ViewModel computed attributes, 143 configuration, 143 Handlebars helpers, 144 uses, 142 ModelAttrs configuration, 147 library, 147 uses, 147 Query Engine configuration, 146 standard and live collections, 146 uses, 146 Model View * AngularJS, 8 Backbone.Collection, 6 Backbone.Model, 6 Backbone.Router, 6 Backbone.View, 6 Ember.js, 9 implementation, 6 Knockout.js, 7 Model View Presenter, 5 MVVM, 6 Model View Controller (MVC) code reuse, 5 data representation, 5 key terms, 4 ■ Index separation of concerns, 5 sequence diagram, 5 structure benefits, 4 Model View Presenter (MVP), 5 Model View ViewModel (MVVM), 6 MooTools, 38 Mustache template comment sections, 79 displaying variables, 78 iterating through a list, 78 usage with Backbone, 77 „„         N, O Object oriented-JavaScript basic syntax arrays, 28–29 closures, 29 loops and conditionals, 27 variable declaration, 26 characteristics, 21 constructors, 30 controlling access, 36 core objects date, 24 math, 25 RegExp, 26 creating methods, 30–31 encapsulation, 32 frameworks Backbone.js, 38 MooTools, 38 Prototype.js, 37 namespace, 36 object creation, 30 objects, 22 primitive data types Boolean, 24 number, 24 String, 22, 24 undefined and null, 24 prototype inheritance (see Inheritance prototype) property, 31–32 snippets, 22 versions, 21 „„         P parse() function, 52 PhantomJS, 162 „„         Q QUnit, 154.


pages: 100 words: 15,500

Getting Started with D3 by Mike Dewar


Firefox, Google Chrome, linked data, margin call

In this book’s examples, we only ever use the .enter() method in its simplest incarnation, as in the preceding example. For more details on this aspect of D3, check out In this first example, we don’t have any elements on the page at all, so the .enter() method returns a selection containing data for all 11 data elements. This enter selection is now ready for us to append elements to it. Developer Tools Google Chrome’s Developer Tools or Firefox’s Firebug are an essential part of a web developer’s toolset. If you are investigating JavaScript for the first time, especially in the context of drawing visualizations, your first experience of the developer tools is like a breath of fresh air. In Chrome, to access the developer tools, navigate to View→Developer→Developer Tools. In Firefox, you can download Firebug from


pages: 375 words: 66,268

High Performance JavaScript by Nicholas C. Zakas

Amazon:, Firefox, Google Chrome, sorting algorithm, web application

In Internet Explorer, for example, the JavaScript implementation is called JScript and lives in a library file called jscript.dll, while the DOM implementation lives in another library, mshtml.dll (internally called Trident). This separation allows other technologies and languages, such as VBScript, to benefit from the DOM and the rendering functionality Trident has to offer. Safari uses WebKit’s WebCore for DOM and rendering and has a separate JavaScriptCore engine (dubbed SquirrelFish in 35 its latest version). Google Chrome also uses WebCore libraries from WebKit for rendering pages but implements its own JavaScript engine called V8. In Firefox, Spider-Monkey (the latest version is called TraceMonkey) is the JavaScript implementation, a separate part of the Gecko rendering engine. Inherently Slow What does that mean for performance? Simply having two separate pieces of functionality interfacing with each other will always come at a cost.

Send email to 203 WebKit-based and innerHTML, 38 D XPath, 137 build process, Agile JavaScript, 174 data access, 15–33 buildtime versus runtime build processes, 170 object members, 27–33 scope, 16–26 C data caching, 145 data formats, 134–145 caching custom, 142 Ajax, 145 HTML, 141 JavaScript files, 171 JSON, 137–141 layout information, 56 XML, 134–137 object member values, 31 data transmission, 125–134 using, 172 requesting data, 125–131 call stack size limits, 74 sending data, 131–134 CDN (content delivery network), 173 data types: functions, methods and properties, chains (see prototype chains; scope chains) 27 childNodes collection, 47 Date object, 178 Chrome deferred scripts, 5 developer tools, 192 delegation, events, 57 just-in-time JavaScript compiler, 160 deploying JavaScript resources, 173 time limits, 110 displayName property, 190 cloning nodes, 41 do-while loops, 62 Closure Compiler, 169 document fragments, batching DOM changes, Closure Inspector, 169 55 closures, scope, 24 DOM (Document Object Model), object collections members, 27 childNodes collection, 47 DOM scripting, 35–59 collection elements, 45 access document structure, 46–50 HTML collections, 42–46 browsers, 35 combining JavaScript files, 165 cloning nodes, 41 compile-time folding, Firefox, 84 event delegation, 57 compression, 170 HTML collections, 42–46 concat method, 86 innerHTML, 37–40 concatenating strings, 40, 81–87 repaints and reflows, 50–57 conditional advance loading, 156 dot notation versus bracket notation, 31 conditionals, 68–73 double evaluation, 151–153 if-else, 68, 70 downloading, 122 lookup tables, 72 (see also DOM scripting; loading; console API, Firebug, 184 nonblocking scripts; scripts) Console panel profiler, Firebug, 183 blocking by <script> tags, 3 console.time() function, 185 using dynamic script nodes, 7 constants, mathematical constants, 159 dynamic scopes, 24 content delivery network (CDN), 173 dynamic script elements, 6–9 crawling DOM, 47 dynamic script tag insertion, 127 CSS files, loading, 13 dynaTrace, 199 CSS selectors, APIs, 48 cssText property, 53 E element nodes, DOM, 47 elements, 45 204 | Index (see also collections; <script> elements; assignEvents() function, 25 tags) caching object member values, 31 DOM, 50 console.time() function, 185 dynamic script elements, 6–9 data types, 27 reflows, 56 eval() function, 24, 138, 151 emulating atomic groups, 93 execute() function, 24 eval() function, 24, 138, 151 factorial() function, 75, 78 event delegation, DOM scripting, 57 initUI() function, 21 events loadScript() function, 11 message events, 121 mergeSort() function, 77 onmessage events, 121 multistep() function, 118 readystatechange events, 7 processArray() function, 116 execute() function, 24 profileEnd() function, 184 execution (see scripts) removeEventListener() function, 154 Expires headers, 146 setInterval() function, 112, 151 ExpiresDefault directive, Apache web server, setTimeout() function, 112, 151 172 tasks, 116 external files, loading, 122 variables in execution, 18 F G factorial() function, 75, 78 GET versus POST when using XHR, 127 Fiddler, 196 global variables, performance, 19 files, 122 Google Chrome developer tools, 192 (see also DOM scripting; downloading; Google Closure Compiler, 169 loading; nonblocking scripts; scripts) grouping scripts, 4 caching JavaScript files, 171 gzip compression, 169, 170 combining JavaScript files, 165 loading external files, 122 H preprocessing JavaScript files, 166 handleClick() method, 108 Firebug, 183–186 hasOwnProperty() method, 28 Firefox headers compile-time folding, 84 Expires headers, 146 time limits, 110 HTTP headers, 146 flow control, 61–80 :hover, IE, 57 conditionals, 68–73 HTML collections loops, 61–68 expensive collections, 43 recursion, 73–79 local variables, 45 flows (see reflows) HTML, data format, 141 flushing render tree changes, 51 HTTP headers, Ajax, 146 folding, compile-time folding and Firefox, 84 for loops, 62 for-in loops, 62, 63 I forEach() method, 67 idempotent action, 127 Function() constructor, 151 identifier resolution, scope, 16–21 functions, 116 IE (Internet Explorer) (see also methods; statements) array joining, 84 add() function, 17 concatenating strings, 40 addEventListener() function, 154 dynamic script elements, 7 anonymous functions, 181, 182 nextSibling, 47 Index | 205 reflows, 57 limits repeated actions, 111 call stack size limits, 74 time limits, 109 long-running script limit, 109 using, 186 literal values, defined, 15 XHR objects, 148 loading, 122 if-else (see also DOM scripting; downloading; optimizing, 70 nonblocking scripts; scripts) versus switch, 68 conditional advance loading, 156 initUI() function, 21 CSS files, 13 injecting nonblocking scripts, 9 external files, 122 innerHTML JavaScript, 10 data format, 141 lazy loading, 154 versus DOM, 37–40 scripts, 192 interfaces (see user interfaces) loadScript() function, 11 Internet Explorer (see IE) local variables interoperability, JSON, 140 HTML collections, 45 iPhone (see Safari) performance, 19, 36 iteration long-running script limit, 109 function-based, 67 lookaheads, emulating atomic groups, 93 loop performance, 63–67 lookup tables, 72 recursion, 76 loops, 61–68 function-based iteration, 67 J measuring timing with console.time(), 185 performance, 63–67 JavaScript files types of, 61 caching, 171 combining, 165 preprocessing, 166 M JavaScript namespacing, nested properties, 32 mathematical constants and methods, lists of, JavaScript profiling, 178 159 joining arrays, 84 memoization, recursion, 77 jQuery library, gzipping, 171 mergeSort() function, 77 JSMin, 168 message events, 121 JSON (JavaScript Object Notation), data methods, 159 formats, 137–141 (see also functions; object members; JSON-P (JSON with padding), 139 properties; statements) Array.prototype.join method, 84 L concat method, 86 data types, 27 $LAB.script() method, 13 forEach() method, 67 $LAB.wait() method, 13 handleClick() method, 108 LABjs library, loading JavaScript, 13 hasOwnProperty() method, 28 layouts, caching, 56 $LAB.script() method, 13 lazy loading, 154 $LAB.wait() method, 13 LazyLoad library, loading JavaScript, 12 mathematical methods, 159 length property, 43 native methods, 159 libraries postMessage() method, 121 Ajax, 148 querySelector() method, 160 LABjs library, 13 querySelectorAll() method, 48, 160 LazyLoad library, 12 string concatenation, 82 206 | Index this in object methods, 33 panels toString() method, 28 Console panel profiler: Firebug, 183 trim method, 99 Net panel: Firebug, 185 minification, 168 Profiles panel, 189 multistep() function, 118 Resources panel: Safari Web Inspector, MXHR (multipart XHR), 128–131 191 parse times, XML, 137 N parsing, eval() function with JSON, 138 performance namespacing, nested properties, 32 Ajax, 145–149 native methods, 159 array joining, 84 nested object members, 30 browsers, 15 nested quantifiers, runaway backtracking, 94 closures, 25 Net panel, Firebug, 185 DOM scripting, 35, 36 Nielsen, Jakob, on UI response time, 110 format comparison, 144 nodes, cloning, 41 HTML format, 142 nonblocking scripts, 5–14 identifier resolution, 19 deferred scripts, 5 JavaScript engines, 24 dynamic script elements, 6–9 JavaScript in browsers, 1 loading JavaScript, 10 JSON formats, 139 XMLHttpRequest Script Injections, 9 JSON-P formats, 140 noncapturing groups, 97 loops, 63–67 O native code versus eval(), 152 nested members, 31 object members, 27 regexes, 87, 96 (see also methods; properties) timers, 119 caching object member values, 31 trim implementations, 103 data access, 27–33 XHR formats, 144 defined, 15 XML, 137 nested, 30 plus (+) operator, 82–84 prototype chains, 29 plus-equals (+=) operator, 82–84 prototypes, 27 positioning, scripts, 2 objects POST versus GET when using XHR, 127 activation objects, 18 postMessage() method, 121 Date object, 178 preprocessing JavaScript files, 166 HTMLCollection, 42 pretest conditions, loops, 62 programming practices, 153 processArray() function, 116 XHR objects, 148 profileEnd() function, 184 onmessage events, 121 Profiler (YUI), 179–182 Opera, time limits, 110 Profiles panel, Safari Web Inspector, 189 operators profiling, JavaScript, 178 bitwise operators, 156–159 programming practices, 151–161 plus (+) and plus-equals(+=) operators, 82– bitwise operators, 156–159 84 double evaluation, 151–153 optimizing (see performance) native methods, 159 out-of-scope variables, 26 object/array literals, 153 repeating work, 154 P prop variable, 62 properties, 27 Page Speed, 194 Index | 207 (see also methods; object members) trimming strings, 99, 100, 103 cssText property, 53 when not to use, 99 data types, 27 removeEventListener() function, 154 displayName property, 190 render trees DOM properties, 47 DOM, 50 innerHTML property, 37 reflows, 51 length property, 43 repaints, minimizing, 52–56 prototypes, 27 repeating work, 154 reading in functions, 32 repetition and backtracking, 90 readyState properties (<script> element), 7 requesting data, Ajax, 125–131 [[Scope]] property Resources panel: Safari Web Inspector, 191 prototype chains, object members, 29 runaway backtracking, 91 prototypes, object members, 27 runtime build versus buildtime processes, 170 Q S quantifiers Safari nested quantifiers, 94 caching ability, 172 performance, 98 loading scripts, 192 queries, HTML collections, 43 passing strings, 122 querySelector() method, 160 starting and stopping profiling querySelectorAll() method, 48, 160 programmatically, 189 time limits, 110 R Safari Web Inspector, 188–192 scope, 16–26 readyState closures, 24 MXHR, 130 dynamic scopes, 24 XHR, 126 identifier resolution, 16–21 XMLHttpRequest, 148 scope chains readyState properties (<script> element), 7 augmentation, 21 readystatechange events, IE, 7 identifier resolution, 16 recursion, 73–79 performance, 20 call stack size limits, 74 [[Scope]] property, 25 iteration, 76 script blocking, 193 memoization, 77 script tags, dynamic insertion, 127 patterns, 75 <script> elements reflows, 50–57 defer option, 6 caching layout information, 56 DOM, 6 elements, 56 performance, 1, 4 IE, 57 placement of, 2 minimizing, 52–56 scripts, 1–14 queuing and flushing render tree changes, (see also DOM scripting) 51 debugging and profiling, 183 regular expressions (regexes), 87–99 grouping, 4 about, 88 loading, 192 atomic grouping, 93 nonblocking scripts, 5–14 backtracking, 89, 91 positioning, 2 benchmarking, 96 selectors, CSS, 48 performance, 87, 96, 99 sending data, Ajax, 131–134 repetition, 90 setInterval() function, 112, 151 208 | Index setTimeout() function, 112, 151 U smasher, 174 speed (see performance) user interfaces, 107–124 stacks, call stack size limits, 74 browser UI threads, 107–111 statements, 116 web workers, 120–124 (see also conditionals; functions; methods) yielding with timers, 111–120 try-catch statements, 23, 75 <user> tags, 136 var statement, 62 with statements, 21 V string.concat() method, 82 values, caching object member values, 31 strings var statement, 62 concatenating, 40, 81–87 variables, 19 passing in Safari, 122 (see also local variables) trimming, 99–103 defined, 15 styles, repaints and reflows, 53 function execution, 18 switches, if-else versus switch, 68 local versus global, 19 out-of-scope variables, 26 T prop variable, 62 tables, lookup tables, 72 tags, 127 W (see also elements) Web Inspector (Safari), 188–192 <user> tags, 136 web workers, 120–124 dynamic script tag insertion, 127 communication, 121 this, object methods, 33 environment, 120 Thomas, Neil, on multiple repeating timers, loading external files, 122 120 uses for, 122 threads, browser UI threads, 107 WebKit-based browsers, innerHTML, 38 time limits, browsers, 109–111 while loops, 62, 63 timers with statements, 21 performance, 119 yielding with, 111–120 tokens, exposing, 98 X tools, 177–202 XHR (XMLHttpRequest) anonymous functions with, 182 about, 126 Chrome developer tools, 192 MXHR, 128–131 dynaTrace, 199 POST versus GET, 127 Fiddler, 196 sending data, 131–134 Firebug, 183–186 XHR objects, IE, 148 IE (Internet Explorer), 186 XML data format, 134–137 JavaScript profiling, 178 XMLHttpRequest, 131, 148 Page Speed, 194 XMLHttpRequest Script Injections, 9 Safari Web Inspector, 188–192 XPath, 137 script blocking, 193 YSlow, 198 YUI Profiler, 179–182 Y toString() method, 28 yielding with timers, 111–120 trees (see render trees) YSlow, 198 trimming strings, 99–103, 99, 103 YUI 3, loading JavaScript, 12 try-catch statements, 23, 75 YUI Profiler, 179–182 Index | 209 About the Author Nicholas C.


Learning Node.js: A Hands-On Guide to Building Web Applications in JavaScript by Marc Wandschneider


database schema,, Firefox, Google Chrome, node package manager, telemarketer, web application

At the same time, a new generation of browser competition has erupted, with Google’s Chrome, Mozilla’s Firefox, Apple’s Safari, and Microsoft’s Internet Explorer all vying for the crown of browser king. As part of this, all these companies are investing heavily in the JavaScript portion of these systems as modern web applications continue to grow ever-more dynamic and script-based. In particular, Google Chrome’s V8 JavaScript runtime is particularly fast and also open-sourced for use by anybody. With all these things in place, the opportunity arose for somebody to come along with a new approach to network (web) application development. Thus, the birth of Node.js. What Exactly Is Node.js? In 2009, a fellow named Ryan Dahl was working for a company called Joyent, a cloud and virtualization services company in California.

See also error handling search, 32 computationally intensive tasks, 59-61 send_failure, 76 send_success, 76 ServerResponse#writeHead, 11 setTimeout, 50-51 paging for photo album application, 80-82 sort, 37 path differences for multiplatform development, 231-232 spawn, 248-250 static files, 151-153 string functions, 30-31 Hello World, writing for express, 138-139 splice, 30 helper functions, 146-147 split, 31 home page template (Mustache), 129-132 substr, 30 HTTP trim, 31 <form> elements, receiving POST data, 87-88 unshift, 37 url.parse, 80 Basic Authentication, 157-158, 206 G generating JSON, 33 test certificates, 228 POST data data, sending, 83-84 receiving, 84-88 response codes, 79 HTTP server generic-pool module, 204-205 request objects, 78-79 GET parameters, 79-83 response objects, 78-79 global error handlers, 158-159 global variables HTTPS test certificates, generating, 228 console, 48 global, 47-48 process, 48 Google Chrome V8 JavaScript. See V8 JS Google groups, nodejs, 22 gzip, 156 I if...then...else statements, error handling, 55-56 implementing round-robin load balancer, 219 including modules in Node files, 93 JSON (JavaScript Object Notation) errors indexOf function, 30 inheritance, 45-46 catching, 47 input throwing, 47 readline module, 243 files, running Node.js with, 17 line-by-line processing, 243-246 inheritance, 45-46 questions, asking, 246-247 JSON, 33 stdin streams, 240-241 RawMode, 241-243 generating, 33 loops, 43-44 numbers, 27-28 installing express, 137-139 floating-point mathematical operations, 27 memcached on UNIX and Mac OS, 223 on Windows, 222-223 modules, 92-93 MongoDB, 161-162 mongodb module, 162 MySQL, 189-190 mysql module, 190 NaN, 28 numbers (JavaScript), dividing by zero, 27 page loader, creating, 126-127 prototypes, 45-46 types arrays, 34-38 booleans, 28-29 Node.js, 9-14 complex types, 26 on Linux, 14 on Mac OS, 12-14 on Windows, 9-11 displaying, 26 null, 26 objects, 32-34 nodeunit, 254 instanceof operator, 46 IO-based applications, 49 iterating over items in arrays, 38 strings, 29-32 undefined, 26 V8 JS, 25 join function, 37 J JavaScript bitwise operations, 43 classes, 44 properties, adding, 44 constants, 26-27 JPEG images, serving with buffers, 118-119 JSON (JavaScript Object Notation), 33.


pages: 270 words: 64,235

Effective Programming: More Than Writing Code by Jeff Atwood


AltaVista, Amazon Web Services, barriers to entry, cloud computing, endowment effect, Firefox, future of work, game design, Google Chrome, gravity well, job satisfaction, Khan Academy, Kickstarter, loss aversion, Mark Zuckerberg, Merlin Mann, Minecraft, Paul Buchheit, Paul Graham, price anchoring, race to the bottom, recommendation engine, science of happiness, Skype, social software, Steve Jobs, web application, Y Combinator

For example, certain Google projects also appear to understand Boyd’s Law of Iteration. Boyd decided that the primary determinant to winning dogfights was not observing, orienting, planning or acting better. The primary determinant to winning dogfights was observing, orienting, planning and acting faster. In other words, how quickly one could iterate. Speed of iteration, Boyd suggested, beats quality of iteration. Speed of iteration — the Google Chrome project has it. 1.0 December 11, 2008 2.0 May 24, 2009 3.0 October 12, 2009 4.0 January 25, 2010 5.0 May 25, 2010 6.0 September 2, 2010 Chrome was a completely respectable browser in V1 and V2. The entire project has moved forward so fast that it now is, at least in my humble opinion, the best browser on the planet. Google went from nothing, no web browser at all, to best-of-breed in under two years.

Both classes are important, but have fundamentally different needs. Anonymous users are voracious consumers optimizing for rapid browsing, while our avid community members are the source of all the great content that drives the network. These guys (and gals) need each other, and they both deserve special treatment. We design and optimize for two classes of users: anonymous, and logged in. Consider the following Google Chrome network panel trace on a random Super User question I picked: requests data transferred DOMContentLoaded onload Logged in (as me) 29 233.31 KB 1.17 s 1.31 s Anonymous 22 111.40 KB 768 ms 1.28 s We minimize the footprint of HTML, CSS and Javascript for anonymous users so they get their pages even faster. We load a stub of very basic functionality and dynamically “rez in” things like editing when the user focuses the answer input area.


pages: 570 words: 115,722

The Tangled Web: A Guide to Securing Modern Web Applications by Michal Zalewski


barriers to entry, business process, defense in depth, easy for humans, difficult for computers, fault tolerance, finite state, Firefox, Google Chrome, information retrieval, RFC: Request For Comment, semantic web, Steve Jobs, telemarketer, Turing test, Vannevar Bush, web application, WebRTC, WebSocket

Hickson, “HTML Living Standard,” WHATWG (2011), [251] J. Hodges, C. Jackson, and A. Barth, “HTTP Strict Transport Security (HSTS),” (draft) IETF Request for Comments (August 5, 2011), [252] A. Klein, “Google Chrome 6.0 and Above: Math.random Vulnerability” (2010), [253] “.NET Framework 3.0: toStaticHTML Method,” Microsoft, [254] D. Ross, “IE8 Security Part IV: The XSS Filter,” IEBlog (2008), [255] E.

* * * [9] The primary seven varieties, as discussed throughout Part II of this book, include the security policy for JavaScript DOM access; XMLHttpRequest API; HTTP cookies; local storage APIs; and plug-ins such as Flash, Silverlight, or Java. Global browser market share, May 2011 Vendor Browser Name Market Share Microsoft Internet Explorer 6 10% 52% Internet Explorer 7 7% Internet Explorer 8 31% Internet Explorer 9 4% Mozilla Firefox 3 12% 22% Firefox 4+ 10% Google Chrome 13% Apple Safari 7% Opera Software Opera 3% Source: Data drawn from public Net Applications reports.[93] Part I. Anatomy of the Web The first part of this book focuses on the principal concepts that govern the operation of web browsers, namely, the protocols, document formats, and programming languages that make it all tick. Because all the familiar, user-visible security mechanisms employed in modern browsers are profoundly intertwined with these inner workings, the bare internals deserve a fair bit of attention before we wander off deeper into the woods.


pages: 422 words: 104,457

Dragnet Nation: A Quest for Privacy, Security, and Freedom in a World of Relentless Surveillance by Julia Angwin


AltaVista, Ayatollah Khomeini, barriers to entry, bitcoin, Chelsea Manning, clean water, crowdsourcing, cuban missile crisis, data is the new oil, David Graeber, Debian, Edward Snowden, Filter Bubble, Firefox, GnuPG, Google Chrome, Google Glasses, informal economy, Jacob Appelbaum, Julian Assange, market bubble, market design, medical residency, meta analysis, meta-analysis, mutually assured destruction, prediction markets, price discrimination, randomized controlled trial, RFID, Robert Shiller, Ronald Reagan, security theater, Silicon Valley, Silicon Valley startup, Skype, smart meter, Steven Levy, Upton Sinclair, WikiLeaks, Y2K, Zimmermann PGP

He found that Web-browsing data were more predictive than standard demographic data of users’ willingness to pay high prices for a Netflix subscription. “This suggests that 1st degree price discrimination might evolve from merely theoretical to practical and widely employed,” he concluded. * * * I wanted to block ad tracking. But first I had to sort through all the misinformation about how to block tracking. Many people believe that they can use Google Chrome’s “Incognito” mode or Microsoft Internet Explorer’s “InPrivate Browsing” mode to avoid being monitored online. But that is not true. Incognito mode is privacy protection against one threat: the person with whom you share a computer. It simply wipes away the tracking cookies that were generated during a Web-browsing session, once the session is completed. However, the websites that you visited while in Incognito mode still receive information from you—and so do the trackers on those sites.

See also specific agencies and laws auditing your data and Cypherpunks and e-mails and fighting unfair surveillance by Internet traffic and watch lists and Federal Privacy Act Federal Trade Commission (FTC) Feinstein, Dianne Fesabeelillah Services of NYC (FSNYC) Fight Club (film) file-sharing networks financial manipulation Financial Times fingerprinting Finkelhor, David FinSpy Firefox Firm, The (Bruce) First Amendment Flash Florida Department of Motor Vehicles Fogel, Karl Forbes Foreign Intelligence Surveillance Act (1978, 2008) Foreign Intelligence Surveillance Court Foreign Policy Fort Hood shooting Foucault, Michel Fourteenth Amendment Fourth Amendment France Franken, Al freedom of association Freedom of Information Act (1966) freedom of speech FreePhoneTracer free software movement Freestylers Freitas, Nathan FreshDirect Frizzell, Trude fusion centers gag orders Gamma Group Garrett, Deborra Gass, John Geoweb Summit German Military Ciphers from February to November 1918 (Childs) Germany Nazi Ghostery Gill, Sharon Giorgio, Ed Gmail GMRS (General Mobile Radio Service) GNU Privacy Guard (GPG) Goldberg, Ian Goldberg, Jeffrey Goldman, Adam Gonzalez, Tony Google auditing your data on surveillance problems and Google+ Google Buzz Google Chrome Google Dashboard Google Drive Google Glass Google Maps Google News Google Street View Google Web History Gorman, Siobhan government. See federal government; state and local governments; and specific agencies GPS tracking Graeber, David Graham, Robert Greene, David Griffin, Mike Guardian Guardian Project Gupta, Vinod Guthrie, Woody hackers Hadayet, Hesham Mohamed Hall of Mirrors Hancock, Jeff Hardin, Garrett Harlan, John Marshall Harper, Jim Harriton High School Harvey, Adam Hasan, Nidal Malik Hasbrouck, Edward Hashcat hashing Hayden, Michael Hayes-Beaty, Ashley Health Insurance Portability and Accountability Act (1996) Heinzerling, Lisa Hempel, Leon Hezbollah Highland Capital “High Terrorist Factor” list Hill, Kashmir Hilton, Paris Hinman, Donald Hirsch, Dennis Holmes, Harlo home address Home Depot Homeland Security Department (DHS) auditing your data and Hoover, J.


pages: 193 words: 36,189

Html5 Boilerplate Web Development by Divya Manian

Amazon:, Firefox, Google Chrome, node package manager, pull request, search engine result page

For example, on a Mac, the full path would be /~<username>/404.html, if you are hosting it in the website's folder under your <username> folder. The following screenshot shows how a browser renders the default HTML5 Boilerplate 404 page, when HTML5 Boilerplate's .htaccess file is used: Forcing the latest IE version Internet Explorer utilizes a meta tag to decide whether it should render a site in compatibility mode or use the latest rendering engine to render it. Google Chrome has released a plugin named Chrome Frame , downloadable from that, if installed on a user's computer, will provide the experience of a modern browser when the user uses older versions of Internet Explorer. Your site can opt-in to using this plugin on a user's computer, when your page is being viewed on older versions of Internet Explorer. To opt-in to using this plugin automatically, append ", chrome=1" to the content attribute value for the http-equiv meta tag.


pages: 666 words: 181,495

In the Plex: How Google Thinks, Works, and Shapes Our Lives by Steven Levy


23andMe, AltaVista, Anne Wojcicki, Apple's 1984 Super Bowl advert, autonomous vehicles, book scanning, Brewster Kahle, Burning Man, business process, clean water, cloud computing, crowdsourcing, Dean Kamen, discounted cash flows, don't be evil, Douglas Engelbart, El Camino Real, fault tolerance, Firefox, Gerard Salton, Google bus, Google Chrome, Google Earth, Googley, HyperCard, hypertext link, IBM and the Holocaust, informal economy, information retrieval, Internet Archive, Jeff Bezos, Kevin Kelly, Mark Zuckerberg, Menlo Park, optical character recognition, PageRank, Paul Buchheit, Potemkin village, prediction markets, recommendation engine, risk tolerance, Sand Hill Road, Saturday Night Live, search inside the book, second-price auction, Silicon Valley, skunkworks, Skype, slashdot, social graph, social software, social web, spectrum auction, speech recognition, statistical model, Steve Ballmer, Steve Jobs, Steven Levy, Ted Nelson, telemarketer, trade route, traveling salesman, Vannevar Bush, web application, WikiLeaks, Y Combinator

We’re not a toy. Google doesn’t control us.” But she could not mask the bitterness when, after the Google browser came out, Google began promoting it with AdWords delivered to people who searched using the keyword “Mozilla.” “They’re actively trying to take people away from Firefox,” she complained. After the usual flurry of crazy alternatives for a code name, the team decided to call its browser Google Chrome. The moniker came from the term used to describe the frame, toolbars, menus, and other graphic elements that border a browser window. In a way, the name was counterintuitive, because Google wanted to strip off a lot of the decorative chrome seen in other browsers and create a sleek sports car of a browser. The idea was to make the interface so minimal that people wouldn’t feel they were using a browser at all but interacting directly with the pages and web apps.

., 9–11, 358–62 Ayers, Charlie, 133–34, 154, 289 Babel Fish, 63 BackRub, 17, 18, 21–24, 26, 28–31; renamed Google, 30–31 Baidu, 4, 273, 279, 281, 292–98, 304, 305, 307 Bailey, David, 58, 59 Baker, Mitchell, 208 Bak, Lars, 209 Ballmer, Steve, 197, 282–83, 380 Barnes & Noble, Nook, 228 Barroso, Luiz, 197–98 BART system, 45, 56 Bartz, Carol, 346 Beard, Ethan, 375–76 Bechtolsheim, Andy, 28, 33–34, 73, 74 Bell, George, 29–30 Berkshire Hathaway, 147, 149 Berners-Lee, Tim, 15–16 Bezos, Jeff, 12, 34, 57, 80, 355, 363 Bharat, Krishna, 38–39, 40, 46, 54, 58, 239 Billington, James, 352 Bisciglia, Christophe, 199–200 Blogger, 101, 335, 374, 376 Bock, Laszlo, 141–42, 256–57, 259, 260 books: and Amazon, 355–56, 363 and class action lawsuit, 9–11, 358–67 digitization of, 11, 347–67 Google Book Settlement, 362–67 metadata in, 351 nondestructive scanning, 348–51, 353, 360 Ocean, 350–55 online future of, 352, 360 “orphan,” 357, 359, 366 payment for use of, 360–63 in public domain, 354 publishers of, 356–62 snippets of, 353, 356, 357, 362 and social good, 360–61, 364, 365, 366 transformative use of, 353–54 Boolean syntax, 36 Boorstin, Robert, 329 Braddi, Joan, 143 brain, virtual, 66, 67–68, 232, 385–86 Branson, Richard, 254 Bray, Tim, 136 Brilliant, Larry, 258 Brin, Michael, 274–75 Brin, Sergey, 3, 5, 16 achievements of, 53, 383 and advertising, 84, 86, 90, 92, 94, 95, 97, 101, 103–6, 108, 110–11, 334, 336–37 ambition of, 128, 139 and applications, 205, 207, 208, 210, 240–42 and artificial intelligence, 385–86 birth and early years of, 13–14, 274–75, 310 and birth of Google, 31–34 and Book Search, 11, 347, 350–52, 364 on capturing all the web, 22–24, 52, 58, 60 on changing the world, 6, 72, 97, 120, 125, 146, 232, 316, 384 and China, 267, 273–74, 276, 277–79, 283, 305, 307, 310–12 and eco-activism, 241 and email, 169–72, 174, 178, 179 and Excite, 29 and funding, 32, 33–34, 73–75 and government issues, 329 and IPO, 146–47, 149–54 and language translation, 63 and management, 74, 75–77, 79–82, 110, 143, 158–60, 162–66, 228, 235, 252–53, 260, 273, 373–74, 386, 387 marriage of, 126, 253 as Montessori kid, 121–25, 127–28, 149 and Obama, 316, 318, 329 and PageRank, 21–24, 48–49 and popular culture, 238 and privacy, 174, 176–77, 253–54, 337 and secrecy, 32, 72, 106, 218 and smart phones, 215–16, 224, 226–30, 234–36 and social networking, 372, 377–78, 380 and speed, 185, 207 and Stanford, 13–14, 16, 17, 28, 29, 34 and trust, 221, 237 values of, 127–28, 130, 132, 135, 139, 141, 146, 196, 275, 305, 364 and web links, 18, 51 and Yahoo, 344 and YouTube, 248, 264 browsers, 204–12 Google Chrome, 208–12, 220, 221, 228, 354 open-source, 204 as operating systems, 210–12 and privacy, 336–37 browser wars, 206, 283 Buchheit, Paul, 102, 259 and email, 167–71, 176, 178–80, 185, 370 and Google motto, 143–44, 170 Buffett, Warren, 147, 149 Burning Man, 76, 80 Bush, Vannevar, 15, 44 Buyer, Lise, 70, 148, 150, 151–52, 154 Buyukkokten, Orkut, 371 Buzz, 377–80 Cairns, Heather, 125 Campbell, Bill, 143, 158–60, 218, 237 Caribou (later, Gmail), 169–71 Cavanaugh, William, 366 Center for Democracy & Freedom, 337, 339 Cerf, Vinton, 222 Chan, Wesley, 113–15, 166, 205, 233–36, 291 Changchun, Li, 306 Chavez, Pablo, 329–30, 346 Chen, Steve, 243–44, 247–51, 264 Cheriton, David, 27–28, 33–34, 79 Cheung, Harry “Spider-Man,” 41, 125, 128 Chin, Denny, 9–10, 365–66 China, 276–314 aim to do good in, 279–80, 303–4, 313 bureaucracy of, 277–79, 280, 291, 295, 298, 304, 312 censorship in, 268, 273, 276, 277, 279, 280–81, 283–86, 290, 293, 295, 297–98, 303–8, 310–13 competition in, 278, 281, 292–98, 300, 305–6, 313 cooperation with government in, 279, 284–85, 292, 297, 299, 301, 302, 305 cultural differences in, 278, 290, 291, 292, 298, 302–3 Google closed in, 311–14, 383 Google’s Chinese name, 287–88 Google’s launch in, 287–89 license to operate in, 277, 279, 280, 295, 340 Obama town meeting in, 324 Olympic Games in, 304 recruitment in, 290–91 “red pockets” in, 297 search in Chinese language, 272–74, 280, 294, 299–300, 304, 306 security issues in, 267–68, 270, 298, 301–2, 303, 308–11, 313–14 stolen code in, 300, 309 and U.S.

., 366–67 EarthLink, 95 eBay, 15, 113, 318 Edison, Thomas, 13 Edwards, Doug, 140 eGroups, 30 Elbaz, Gil, 103 Electronic Frontier Foundation, 337, 339 email, 161, 167–81 and ads, 102, 170–73, 177, 179, 180 and cloud computing, 180–81 Gmail, see Gmail and privacy, 170–78, 211, 378 and revenues, 170–73 and storage, 168–69, 172, 179–80 Emerald Sea, 382–83 employees: and austerity period, 256–57, 258–59 contract workers, 257, 269 first, 34, 36, 37 as Googley, 4, 36, 138–40, 158, 159, 162, 270, 309 numbers of, 5, 134, 158, 164, 373, 386 pampered, 58, 133–38, 259 promotions of, 260 recruitment/hiring of, 35–41, 72, 138–43, 258–59, 266, 386 and security issues, 269–70 70–20–10 balance, 162, 323 teamwork, 162 and 20 percent rule, 124 wealth of, 155–57, 259 Engelbart, Douglas, 15 Epstein, Scott, 76–77 Eustace, Alan, 145–46, 215, 271, 281, 289, 301, 303, 308 Ewing, Jessica, 174 Excite, 20, 27, 28–30, 136, 268 Facebook, 309, 322, 369–71, 373, 375–77, 379–80, 382–83 face recognition, 232 Farrell, Carrie, 139 Federal Communications Commission (FCC), 222, 223 Federal Trade Commission (FTC), 331–34, 379 Feiken, Jennifer, 242–43, 244–45 fiber optics, ownership of, 187–88, 198, 199, 261 Figueroa, Liz, 176–78 Filo, David, 28, 344 Fino, Audrey, 49–50, 52, 60 Fischer, David, 98 Fisher, Darin, 204 Flake, Gary, 98 Fleischer, Peter, 338–39 forecasting, 119–20 Foursquare, 374 Fred (video channel), 263–64 FriendFeed, 259, 370 Friendster, 371 Gaia password system, 308–9 Garcia-Molina, Hector, 14, 16, 17, 18, 23, 33 Gates, Bill, 14, 179, 204, 219, 278, 282, 283, 344, 381 GDrive, 205, 211 Gelernter, David, Mirror Worlds, 59–60 Genachowski, Julius, 322, 326 Ghemawat, Sanjay, 42, 43, 47, 100, 184, 197, 198–200 Gibson, William, 7 Gilbert, Judy, 257, 258, 259, 260 Gilbert, Roy, 272 GIMP, 31 Girouard, Dave, 180 Glazer, David, 375, 376 Gmail, 171–81, 322 and applications, 219, 227, 233, 236 as Caribou, 169–71 and cloud computing, 180–81 launch of, 161, 171–72, 206 and privacy, 170–78, 211 and security breach, 267–68 and social networking, 375, 377 and speed, 185 Goetz, Thomas, 254 Gomes, Ben, 40, 54, 58, 67–68, 100 Gonzalez, Steven, 283 Goodger, Ben, 204 Google: and access to all the world’s information, 6, 10, 58, 59, 63, 67, 75, 130, 146, 173, 198, 215, 219, 275, 335, 340, 342–43, 356, 363 ads of, see advertising and antitrust issues, 330, 331–34, 343–47, 364 APM program, 1–2, 3–5, 161–62, 259 and applications, 200–212, 239 austerity time of, 83, 86, 252–53, 255–57, 258–59, 265–66, 272, 376 BackRub renamed as, 30–31 business plan for, 72, 75, 77–78, 95, 115, 138, 152, 201 changing the world, 6, 34, 39, 52, 97, 120, 125, 126, 146, 316, 319, 329, 349, 365, 367, 369 cheap equipment bought for, 33, 129, 183–84, 189 Code Yellow in, 186 conference rooms of, 136–37 culture (Googley) of, 3, 36, 121–28, 129–42, 159, 186–87, 364, 365, 370, 385 design guidelines for, 129–30, 132, 206–7 development of, 32–34, 35–37, 45–57, 58 “Don’t be evil” motto of, 6, 11, 143, 144–46, 150, 170, 238, 276, 285, 286, 366–67, 384–85 employees, see employees engineers as top dogs in, 129, 130, 158, 160, 161, 323 failure and redundancy built into, 183–84, 189, 198, 211, 255, 372 filing for incorporation, 34 funding of, 32, 33–34, 72–75, 79, 129, 182 global scope of, 196–97, 270–72; see also China growth of, 3, 5, 6, 11, 43, 99, 127–28, 130, 131–32, 143, 164, 183, 198, 238–42, 253, 259, 271 headquarters of, 34, 36, 43, 125–26, 127–28, 130 home page of, 31, 184–85 IPO of, 2, 70, 94, 108, 134, 146–57 lawsuits against, 9–11, 56, 98, 150–51, 244, 328–29, 353, 358–67 as learning machine, 45, 47, 48, 65–68, 173, 216, 239, 383, 385 management structure, 74, 75–77, 79–82, 110, 143, 147, 157–66, 235, 254–55, 273, 373–74, 386–87 mission and vision of, 3, 6, 75, 97, 117, 124–25, 132, 169, 175, 215, 238, 363, 365 moral purity of, 6, 97, 268, 356, 360, 367 name of, 30–31, 180 no customer support from, 230–31, 376 1-800-GOOG-411 directory assistance, 219, 229 and politics, 317–19, 329–30 profitability of, 3, 69–71, 72, 77–78, 79, 99, 130, 256, 383, 386 public image of, 57, 74–75, 76, 77, 126, 144, 153–54, 173, 176, 237, 328–29, 337, 343, 364, 366, 383–84 secrecy in, 49, 52, 56–57, 69–70, 72–73, 83, 93, 106–7, 108, 146, 164–65, 191, 198, 218, 260, 261, 354, 357 security issues in, 267–70, 308–10, 313–14 shares in, 147–49, 155–57, 252 speed as focus of, 31, 37, 42, 52, 184–87, 206, 207, 208–9, 272, 372–73 TGIF meetings, 130–31, 166 20 percent rule, 124 user data amassed by, 45–48, 59, 84, 144, 173–74, 185, 333–36 user focus of, 5, 77, 241–42 values of, 6, 143–46, 147, 198, 256–58, 275–76, 300, 307, 310, 321, 323, 336, 343, 354, 364, 370, 384–85 war rooms of, 42–43, 45, 176, 186, 206, 309–10, 379, 380–81 and Yahoo, 44–45, 57, 151 and YouTube, 199, 242–52, 260–65 Google Analytics, 114–15, 205, 233, 234 Google Answers, 102 Google Book Search, 11, 347–67 Google Book Settlement, 362–67 Google Calendar, 233, 236 Google cars, 385, 386 Google Catalogs, 348 Google Checkout, 229, 242 Google China, see China Google Chrome, 208–12, 220, 221, 228, 319, 321, 354 “Google dance,” 56 Google Desktop, 205 Google Docs, 203, 210, 211 Google Earth, 239–40, 299, 340 Google Elections Team, 318, 321 Google Fellows, 49 Google Fiber for Communities, 327 Google File System, 184 Google Flu Trends, 258 Google Goes to the Movies, 265 Google Goggles, 232 Google Grants, 98 Google Help Forums, 231 Google Image Search, 382 Google Instant, 68 Google Latitude, 338–40, 374 Google Libraries, 357–58, 359 Google Maps, 219, 227, 240, 298–99, 318, 338, 340, 383 Google News, 58, 124, 239, 241, 257 Google Pack, 205 Google Print, 356–57, 359 Google Product Client Group, 204 Google Product Strategy (GPS) meetings, 6, 135, 171 Google Quick Search Box, 78 Google Scholar, 58 Google Security Team, 267–70 Google settlement, 9–11 Google Street View, 340–43, 383, 384, 385 Google Suggest, 306–7 Google Talk, 233, 322, 375 Google Toolbar, 204–5, 233, 234 Google University, 136 Google Video, 242–47, 249, 261, 263, 429–30 Google Voice, 234, 236 Google Wave, 376–77, 379 Google Website Optimizer, 320 Google Zeitgeist, 46, 249, 253 googolplex, 31, 43 Gordon, Cathy, 195–96, 356, 359 Gore, Al, 177, 218, 237, 278, 352 GoTo, 87–89, 99, 102 Gphone, 218, 222, 226 GPS device, 229, 232, 338 Graham, Bill, 353 GrandCentral, 233–34, 236 Griffin, Denise, 130, 173–75, 231 Gross, Bill, 87–89, 95, 98, 102–3 Grove, Andy, 80, 163, 325 Gu, Xuemei, 290–92, 308, 312 Gundotra, Vic, 219–20, 232, 337, 377, 382–83 Gutenberg, Johannes, 347 Hackborn, Dianne, 217 Haiti, earthquake in, 325–26 Hamoui, Omar, 227 Hanke, John, 239 Harding, Matt, 243 Harik, Georges, 100–102, 105, 127, 139 Harvard University, 357, 358 Hassan, Scott, 17–18, 22, 28, 29, 30, 32 Haugen, Frances, 351 Heath, Taliver, 323 Heilemann, John, 356 Hendrix, Jimi, 76 Hertzfeld, Andy, 206 Hewlett-Packard, 37, 124, 181 Hölzle, Urs, 76, 100, 125, 162, 182, 257, 379 and cloud computing, 180 and data centers, 188–90, 194, 198 hired by Google, 36–37, 38 on speed, 185–87 Urs-Quake of, 381–82 Horowitz, Bradley, 211, 376–78, 379, 382 Horvath, Jane, 335, 338 HTC, 214, 226, 228, 230, 237 HTML 5, 212 Huber, Jeff, 116 Huffman, Scott, 61 Hulu, 260–61 Hurley, Chad, 243–44, 247–51, 260, 264 HyperCard, 15 hypertext connections, 15, 27 IBM, 24, 25–26, 63, 286 Idealab, 87–88, 99 indexing, 20, 21–22, 26, 41–43 checkpointing in, 43 comprehensiveness in, 52–53 in-RAM system, 43–44, 47–48 mirror worlds in, 60 updating, 45, 56 information retrieval (IR), 20, 22, 110, 239 Inktomi, 36, 44, 88, 290 innovator’s dilemma, 98–99 Intel, 163, 167, 218 intellectual property (IP), 88–89, 176, 221 Internet: bottom-up management of, 158 in China, 273, 279, 284, 285, 305, 308, 311, 313, 324 and cloud computing, 180–81 and copyright issues, 355, 367 disruptive platform of, 275 and Haiti earthquake, 325–26 net neutrality, 222, 383–84 and news, 239 open spectrum on, 15, 222–25, 329–30, 333, 334, 383–84 profitability of, 69–71 redefining commerce, 117 and social networking, 369–83 and user data, 334–36 values of, 322, 367 video, 242–52, 265 wireless service, 223 Internet Archive, 362 Ivester, Devin, 135, 141 Java, 17–18 JavaScript, 53, 105, 168, 169, 208, 209 Jen, Mark, 164–65 Jobs, Steve, 75, 80, 143, 209–10, 218–22, 237–38 Jones, Mike, 328, 340–42 JotSpot, 201 Joy, Bill, 28 Justice Department, U.S., 236, 331, 344–47, 364, 365–66 Kahle, Brewster, 362, 365 Kamangar, Salar, 71–72, 74, 233, 235 and advertising, 86, 89, 91–92, 109, 113 and business plan, 72, 75, 201 and Google motto, 143–44 and YouTube, 248, 260–65 Karen, Alana, 97–98 Karim, Jawed, 243, 247, 250 Kay, Erik, 207 Keyhole, 239–40, 340 Keyword Pricing Index, 118 Khosla, Vinod, 28, 29 Kim, Jini, 166 Klau, Rick, 312, 318 Kleinberg, Jon, 24–26, 34, 38, 292 Knol, 240 Knuth, Donald, 14 Kohl, Herb, 332 Koogle, Timothy, 44 Kordestani, Omid, 75–76, 78, 81, 96, 97, 130, 155, 242 Krane, David, 69–70, 143, 144–45, 150, 156 Kraus, Joe, 28, 136, 201, 374–75 Kundra, Vivek, 322, 326 Kurzweil, Raymond, 66 language, translations, 55, 62–65 Lantos, Tom, 285–87 Larson, Mark, 208 Leach, Jim, 286 Lee, Kai-Fu: and China office, 4, 281–83, 289–90, 291, 292, 293, 294, 296, 298, 302, 303, 305, 307–8, 313 departure of, 307–8, 312 Lee, Steve, 338–39 Lenat, Douglas, 47 Leonard, Herman, 117 Lessig, Lawrence, 359, 360, 363 Levick, Jeff, 96, 110–11, 112–13 Levinson, Arthur, 218, 237 Li, Mark, 293, 298–99 Li, Robin (Yanhong), 26–27, 278, 292, 293, 298 Library of Congress, 352, 361 Liebman, Jason, 103–5 LinkAds, 102–3 Linux, 78, 182, 210 Litvack, Sanford “Sandy,” 345, 347 Liu, John, 296 Liu, Jun, 294, 303–4 long-tail businesses, 85, 105, 107, 118, 243, 334 Lu, Qi, 380 Lucovsky, Mark, 283 Luk, Ben, 290, 302 Maarek, Yoelle, 272 MacDonald, Brian, 380 Macgillivray, Alex “AMac,” 353–55 machine learning, 64–66, 100–101, 385 Malone, Kim (Scott), 107–8, 135 Manber, Udi, 44, 45, 57–58, 68, 240, 355, 380 MapReduce, 199–200 Marconi International Fellowship Award, 278 Markoff, John, 193 Matias, Yossi, 272 Mayer, Marissa, 36, 41, 381 and advertising, 78–79 and APM program, 1, 4, 5, 161–62, 259 and books, 348–50, 358, 365 and Gmail, 170–71 and Google culture, 121, 122, 126–27, 141, 142, 163, 164, 365 and Google motto, 143–44 and Google’s look, 206–7 and management structure, 160, 235 and social networking, 371–73, 375 and stock price, 155, 156–57 McCaffrey, Cindy, 3, 76, 77, 145, 150, 153, 164 McCarthy, John, 127 McLaughlin, Andrew: and China, 276–79, 283–84, 303, 304 and Obama administration, 316, 321, 322–23, 325–26, 327 and privacy, 176–78, 379 memex, 15, 44 Merrill, Douglas, 183 Mi, James, 276 Microsoft: and antitrust issues, 331–32, 344–45 and aQuantive, 331 Bing search engine, 186, 380–81 and books, 361, 363 and browser wars, 206, 283 and China, 281, 282, 283, 284, 285, 304 and competition, 70, 191, 197, 200–212, 218, 220, 266, 282–83, 331, 344–47, 363, 380–81 and Danger, 214 data centers of, 190 and disclosure, 108 and email, 168, 169, 179–80 Excel, 200 and Facebook, 370 Hotmail, 30, 168, 172, 180, 209 IE 7, 209 Internet Explorer, 204–7 and mapping, 342 monopolies of, 200, 331–32, 364 Office, 200, 202, 203 Outlook, 169 PowerPoint, 200, 203 and user data, 335 and values, 144 WebTV, 217 Windows, 200, 210, 212, 219, 331 Windows Mobile, 220 Word, 200 and Yahoo, 343–44, 346, 380 of yesterday, 369 MIDAS (Mining Data at Stanford), 16 Milgrom, Paul, 90 Miner, Rich, 215, 216 Mobile Accord, 325 mobile phones, 214–17, 219–22, 251 Moderator, 323–24 Mohan, Neal, 332, 336 Monier, Louis, 19, 20, 37 Montessori, Maria, 121, 124, 166 Montessori schools, 121–25, 129, 138, 149 Moonves, Leslie, 246 Moore’s Law, 169, 180, 261 Morgan Stanley, 149, 157 Moritz, Mike, 32, 73–74, 80, 147, 247–48, 249 Morozov, Evgeny, 379 Morris, Doug, 261 Mossberg, Walt, 94 Mowani, Rajeev, 38 Mozilla Firefox, 204, 206, 207–8, 209 Murdoch, Rupert, 249, 370 MySpace, 243, 375 name detection system, 50–52 Napier’s constant, 149 National Federation of the Blind, 365–66 National Institute of Standards and Technology (NIST), 65 National Science Digital Library, 347 National Security Agency (NSA), 310 Native Client, 212 navigation, 229, 232, 338 Nelson, Ted, 15 net neutrality, 222, 326–27, 330, 383–84 Netscape, 30, 75, 78, 147, 204, 206 Nevill-Manning, Craig, 129 Newsweek, 2, 3, 20, 179 New York Public Library, 354, 357 Nexus One, 230, 231–32 95th Percentile Rule, 187 Nokia, 341, 374 Norman, Donald, 12, 106 Norvig, Peter, 47, 62, 63, 138, 142, 316 Novell, 70 Obama, Barack, 315–21, 322, 323–24, 329, 346 Obama administration, 320–28 Ocean, 350–55 Och, Franz, 63–65 Oh, Sunny, 283, 297, 298 OKR (Objectives and Key Results), 163–64, 165, 186, 209, 325 Open Book Alliance, 362 Open Handset Alliance, 221–22 OpenSocial, 375–76 operating systems, 210–12 optical character recognition (OCR), 53, 349–50 Oracle, 220 Orkut, 371–73, 375 Otellini, Paul, 218 Overture, 89, 90, 91, 95, 96, 98–99, 103, 150 Oxford University Press, 354, 357 Page, Larry, 3, 5 achievements of, 53, 383 and advertising, 84, 86–87, 90, 92, 94, 95–97, 114, 334, 336–37 ambition of, 12, 39, 73, 127–28, 139, 198, 215, 238, 362, 386–87 and applications, 205, 206, 207, 208, 210, 240–42, 340 and artificial intelligence, 62, 100, 246, 385–86 and BackRub/PageRank, 17, 18, 21–24, 26 and birth of Google, 31–34 and Book Search, 11, 347–52, 355, 357, 359, 361, 362, 364 on capturing all the web, 22–24, 52, 58, 63 on changing the world, 6, 13, 33, 39, 97, 120, 125, 146, 173, 232, 279, 316, 327, 361, 384–85 childhood and early years of, 11–13 and China, 267, 276, 277–78, 279–80, 283, 284, 305, 311 and data centers, 182–83 and eco-activism, 241 and email, 169–72, 174, 179 and Excite, 28–29 and funding, 32, 33–34, 73–75 and hiring practices, 139–40, 142, 182, 271, 386 imagination of, 14, 271 and IPO, 146–47, 149–54, 157 and machine learning, 66, 67 and management, 74, 75–77, 79–82, 110, 143, 158–60, 162–66, 228, 231, 235, 252–53, 254, 255, 260, 272, 273, 386–87 marriage of, 254 as Montessori kid, 121–25, 127–28, 149, 331, 387 and Obama, 315–16 and philanthropy, 257–58 and privacy, 174, 176–77, 337 and robots, 246, 385 and secrecy, 31–32, 70, 72–73, 106, 218 and smart phones, 214–16, 224, 225, 226–30, 234 and social networking, 372 and speed, 184–85, 207 and Stanford, 12–13, 14, 16–17, 28, 29, 34 and trust, 221, 237 values of, 127–28, 130, 132, 135, 139–40, 146, 196, 361, 364 and wealth, 157 and web links, 51 and YouTube, 248 PageRank, 3, 17, 18, 21–24, 27, 34, 38, 48–49, 53, 55, 56, 294 Palm, 216, 221 Park, Lori, 235, 258 Pashupathy, Kannan, 270–72, 277, 282 Passion Device, 230 Patel, Amit, 45–46, 82 and Google motto, 143–44, 146 patents, 27, 39, 89, 102, 221, 235, 237, 350 PayPal, 242, 243 peer-to-peer protocols, 234–35 Peters, Marybeth, 352 Phil, 99–103 Philip, Prince, 122 Picasa, 185–86, 187, 239 Pichai, Sundar, 205–6, 207–8, 209–12 Pichette, Patrick, 120, 150, 254–56 Pike, Rob, 241 Pittman, R.


pages: 527 words: 147,690

Terms of Service: Social Media and the Price of Constant Connection by Jacob Silverman


23andMe, 4chan, A Declaration of the Independence of Cyberspace, Airbnb, airport security, Amazon Mechanical Turk, augmented reality, Brian Krebs, California gold rush, call centre, cloud computing, cognitive dissonance, correlation does not imply causation, Credit Default Swap, crowdsourcing, don't be evil, Edward Snowden, feminist movement, Filter Bubble, Firefox, Flash crash, game design, global village, Google Chrome, Google Glasses, hive mind, income inequality, informal economy, information retrieval, Internet of things, Jaron Lanier, jimmy wales, Kevin Kelly, Kickstarter, knowledge economy, knowledge worker, late capitalism, license plate recognition, life extension, Lyft, Mark Zuckerberg, Mars Rover, Marshall McLuhan, meta analysis, meta-analysis, Minecraft, move fast and break things, national security letter, Network effects, new economy, Nicholas Carr, Occupy movement, optical character recognition, payday loans, Peter Thiel, postindustrial economy, prediction markets, pre–internet, price discrimination, price stability, profit motive, quantitative hedge fund, race to the bottom, Ray Kurzweil, recommendation engine, rent control, RFID, ride hailing / ride sharing, self-driving car, sentiment analysis, shareholder value, sharing economy, Silicon Valley, Silicon Valley ideology, Snapchat, social graph, social web, sorting algorithm, Steve Ballmer, Steve Jobs, Steven Levy, TaskRabbit, technoutopianism, telemarketer, transportation-network company, Turing test, Uber and Lyft, Uber for X, universal basic income, unpaid internship, women in the workforce, Y Combinator, Zipcar

We become conditioned to Facebook’s prying eyes, in the same way we became conditioned to Gmail reading our e-mail so as us to provide us contextual ads. (Imagine the backlash if the U.S. Postal Service started opening every letter, reading its contents, and inserting a contextually relevant advertisement. On the other hand, they do already scan the address information—the metadata—of every letter, cataloguing it for America’s intelligence services.) Some browsers, such as Google Chrome and Mozilla’s Firefox, have installed Do Not Track features, which are supposed to stymie the ability of advertisers, targeters, and ad networks to track browsing habits. But users must activate this capability in the browser’s settings, and as of March 2013, only 11.4 percent of desktop Firefox users had activated Do Not Track. There’s an even bigger flaw in this system, though: Web sites are under no obligation to respect these requests, and in fact, most don’t.

April 16, 2012. 296 Do Not Track stats: Natasha Singer. “Do-Not-Track Talks Could Be Running Off the Rails.” Bits, a blog on May 3, 2013. 296 Web sites ignoring Do Not Track: David Goldman. “Turning on Do Not Track in Chrome.” “CNNMoney Tech Tumblr.” Nov. 29, 2012. 296 “on life support”: David Goldman. “Do Not Track Is Dying.” CNNMoney. Nov. 30, 2012. 296 “permit data collection”: Natasha Singer. “Do Not Track? Advertisers Say ‘Don’t Tread on Us.” New York Times. Oct. 13, 2012. 296 Internet Explorer criticism: ibid. 296 “Consumers have a right”: Office of the Press Secretary, White House.


pages: 196 words: 58,122

AngularJS by Brad Green, Shyam Seshadri


combinatorial explosion, continuous integration, Firefox, Google Chrome, MVC pattern, node package manager, single page application, web application, WebSocket

They allow you to check the state of your application, its models, and everything in between at a given point in time. “Pause on all exceptions” is a very useful option that is built in to most developer tools nowadays. The debugger will halt when an exception occurs, and highlight the line causing it. Batarang And then, of course, we have Batarang. Batarang is a Chrome extension that adds AngularJS knowledge to the built-in Developer Tools suite in Google Chrome. Once installed (you can get it from, it adds another tab to the Developer Tools panel of Chrome called AngularJS. Have you ever wondered what the current state of your AngularJS application is? What each model, each scope, and each variable currently contains? How is the performance of your application? if you haven’t yet, trust me, you will! And when you do, Batarang is there for you!


pages: 231 words: 71,248

Shipping Greatness by Chris Vander Mey


don't be evil,, fudge factor, Google Chrome, Google Hangouts, Gordon Gekko, Jeff Bezos, Kickstarter, Lean Startup, minimum viable product, performance metric, recommendation engine, Skype, slashdot, sorting algorithm, Steve Jobs, Superbowl ad, web application

When I worked on Google Pack in 2007 and 2008, we knew that users rarely applied software updates, because the experience of applying updates was complicated. And because the users’ computers weren’t updated, users had slow systems and security vulnerabilities, and were generally hassling their kids during holiday breaks. Rather than trying to optimize each complicated user experience around updates, we built a system, subsequently used by Google Toolbar and Google Chrome, that enabled us to update all software, including third-party applications, without bothering users. This was a much harder problem to solve, especially in light of the myriad installation processes that third-party software requires. But because we built this software, we were able to reach and help hundreds of millions of users. The software was eventually open-sourced as Google Update. Based on its broad usage and utility as a platform, I think this was a highly successful product.


pages: 420 words: 79,867

Developing Backbone.js Applications by Addy Osmani


Airbnb, anti-pattern, create, read, update, delete, database schema, Firefox, full text search, Google Chrome, Khan Academy, loose coupling, MVC pattern, node package manager, pull request, side project, single page application, web application

The callback will be called with an error object and an array of found objects. If there was no error we return the array of objects to the client using the send function of the response object, otherwise we log the error to the console. To test our API we need to do a little typing in a JavaScript console. Restart node and go to localhost:4711 in your browser. Open up the JavaScript console. If you are using Google Chrome, go to View->Developer->JavaScript Console. If you are using Firefox, install Firebug and go to View->Firebug. Most other browsers will have a similar console. In the console type the following: jQuery.get( '/api/books/', function( data, textStatus, jqXHR ) { console.log( 'Get response:' ); console.dir( data ); console.log( textStatus ); console.dir( jqXHR ); }); …and press enter and you should get something like this: Here I used jQuery to make the call to our REST API, since it was already loaded on the page.


pages: 267 words: 82,580

The Dark Net by Jamie Bartlett


3D printing, 4chan, bitcoin, blockchain, brain emulation, carbon footprint, crowdsourcing, cryptocurrency, deindustrialization, Edward Snowden, Filter Bubble, Francis Fukuyama: the end of history, global village, Google Chrome, Howard Rheingold, Internet of things, invention of writing, Johann Wolfgang von Goethe, Julian Assange, Kuwabatake Sanjuro: assassination market, life extension, litecoin, Mark Zuckerberg, Marshall McLuhan, moral hazard, Occupy movement, pre–internet, Ray Kurzweil, Satoshi Nakamoto, Skype, slashdot, technological singularity, technoutopianism, Ted Kaczynski, The Coming Technological Singularity, Turing test, Vernor Vinge, WikiLeaks, Zimmermann PGP

Langford tells me of a ‘revenge porn’ website that is hosted in Germany, where he estimates at least half the videos and images are of people – mostly British girls – under the age of eighteen. He’s been trying to get the German internet service provider to act for weeks, but to no avail. The overwhelming majority of the material investigated by the IWF is on the surface web, accessible with a normal browser like Google Chrome, usually hosted in countries where domestic police are uninterested, incapable or under-resourced. Often, a link will take users to a ‘cyber-locker’, a hacked website where files are stored without the owner realising. Around a quarter of all referrals received by the IWF are from commercial sites, which ask for credit card payment for access and are advertised through spam mail. The IWF doesn’t investigate URLs of Tor Hidden Services.


pages: 288 words: 66,996

Travel While You Work: The Ultimate Guide to Running a Business From Anywhere by Mish Slade


Airbnb, Atul Gawande, business process, Checklist Manifesto, cloud computing, crowdsourcing, Firefox, Google Chrome, Google Hangouts, Inbox Zero, job automation, Lyft, remote working, side project, Skype, speech recognition

Gett ( is similar to Lyft and Uber, but the pricing remains consistent (there's no "surge pricing", and you can book cabs in advance. Gett currently operates in the USA, UK, Israel and Russia – but many other countries are coming on board soon. There are also city-specific taxi apps; have a search for "taxi app [city]" and see what comes up (or ask a local). You might find yourself on a lot of foreign websites throughout all this. They'll almost always have an English language option, but if they don't you can use Google Chrome's built-in website translator or go to the Google Translate website ( copy and paste the URL of that website into the box. Money In Chapter 2: Get To Grips With Money And Taxes, there's more information about bank accounts, credit cards, debit cards, alternative forms of payment, and ATMs. This is just a mini-section about preparing for a new currency and a (perhaps) different way of spending it than you're used to – because goodness knows we've been caught out by such seemingly simple things as "buying stuff at the supermarket".


pages: 260 words: 76,223

Ctrl Alt Delete: Reboot Your Business. Reboot Your Life. Your Future Depends on It. by Mitch Joel


3D printing, Amazon Web Services, augmented reality, call centre, clockwatching, cloud computing, Firefox, future of work, ghettoisation, Google Chrome, Google Glasses, Google Hangouts, Khan Academy, Kickstarter, Kodak vs Instagram, Lean Startup, Mark Zuckerberg, Network effects, new economy, Occupy movement, place-making, prediction markets, pre–internet, recommendation engine, Richard Florida, risk tolerance, self-driving car, Silicon Valley, Silicon Valley startup, Skype, social graph, social web, Steve Jobs, Steve Wozniak, Thomas L Friedman, Tim Cook: Apple, Tony Hsieh, WikiLeaks

Is there an example of a firm that didn’t completely implode everything and start over yet didn’t just sit back and let the evolution of business send them toward extinction? The answer is, of course, yes. Instagram started out as a very derivative copy of foursquare before switching its focus to mobile photos with a social edge. Google continues to fascinate as the search engine expands into areas like online video (YouTube), mobile (Android and the Nexus line of devices), email services (Gmail), Web browsers (Google Chrome), online social networking (Google+), and beyond (self-driving cars and Google Glasses). Amazon continues to squiggle by pushing beyond selling books online into e-readers (Kindle), selling shoes (Zappos), offering cloud computing technology (Amazon Web Services), and beyond. When you actually start digging down deep into how these companies have evolved and stayed relevant, you won’t see business models that look like anything from the playbooks of Kodak or RIM.


pages: 302 words: 74,878

A Curious Mind: The Secret to a Bigger Life by Brian Grazer, Charles Fishman


4chan, Airbnb, Albert Einstein, Apple II, Asperger Syndrome, Bonfire of the Vanities,, game design, Google Chrome, Howard Zinn, Isaac Newton, Jeff Bezos, Kickstarter, out of africa, RAND corporation, Ronald Reagan, Silicon Valley, stem cell, Steve Jobs, Steve Wozniak, the scientific method, Tim Cook: Apple

And what has now become an influential example of online design usability was so baffling when it was first unveiled that people couldn’t figure out how to use it. But the home page isn’t really Google at all. Google is the vast array of computer code and algorithms that allow the company to search the web and present those results. There are millions of lines of code behind a Google search—and millions more behind Google mail, Google Chrome, Google ads. If we can envision dozens, hundreds of ways of designing a search page, imagine for a moment the ways that all that computer code could be written. It’s like imagining the ways a book can be written, like imagining the ways a story could be told on screen. For Google, it is a story, just written in zeroes and ones. That’s why asking questions at work, instead of giving orders, is so valuable.


pages: 319 words: 72,969

Nginx HTTP Server Second Edition by Clement Nedelcu


Debian, fault tolerance, Firefox, Google Chrome, web application

It turns out to be particularly useful in situations resembling the following: server { […] server_name; location /documents/ { type { } default_type text/plain; } } By default, if the client attempts to access (note the // in the middle of the URI), Nginx will return a 404 Not found HTTP error. If you enable this directive, the two slashes will be merged into one and the location pattern will be matched. Syntax: on or off Default value: off msie_padding Context: http, server, location This directive functions with the Microsoft Internet Explorer (MSIE) and Google Chrome browser families. In the case of error pages (with error code 400 or higher), if the length of the response body is less than 512 bytes, these browsers will display their own error page, sometimes at the expense of a more informative page provided by the server. If you enable this option, the body of responses with a status code of 400 or higher will be padded to 512 bytes. Syntax: on or off Default value: off [ 90 ] Chapter 3 msie_refresh Context: http, server, location It is another MSIE-specific directive that will take effect in the case of HTTP response codes 301 Moved permanently and 302 Moved temporarily.


pages: 270 words: 79,992

The End of Big: How the Internet Makes David the New Goliath by Nicco Mele


3D printing, 4chan, A Declaration of the Independence of Cyberspace, Airbnb, Amazon Web Services, Any sufficiently advanced technology is indistinguishable from magic, Apple's 1984 Super Bowl advert, barriers to entry, Berlin Wall, big-box store, bitcoin, business climate, call centre, Cass Sunstein, centralized clearinghouse, Chelsea Manning, citizen journalism, cloud computing, collaborative consumption, collaborative editing, crony capitalism, cross-subsidies, crowdsourcing, David Brooks, death of newspapers, Donald Trump, Douglas Engelbart,, Exxon Valdez, Fall of the Berlin Wall, Filter Bubble, Firefox, Galaxy Zoo, global supply chain, Google Chrome, Gordon Gekko, Hacker Ethic, Jaron Lanier, Jeff Bezos, jimmy wales, Julian Assange, Kevin Kelly, Khan Academy, Kickstarter, Lean Startup, Mark Zuckerberg, minimum viable product, Mohammed Bouazizi, Mother of all demos, Narrative Science, new economy, Occupy movement, Peter Thiel, pirate software, Ronald Reagan, Ronald Reagan: Tear down this wall, sharing economy, Silicon Valley, Skype, social web, Steve Jobs, Steve Wozniak, Stewart Brand, Stuxnet, Ted Nelson, Telecommunications Act of 1996, telemarketer, The Wisdom of Crowds, transaction costs, uranium enrichment, Whole Earth Catalog, WikiLeaks, Zipcar

More than 10,000 people donated an average of $25 each over the course of about ten days. On December 16, 2005, the New York Times included a two-page spread advertising the Firefox browser—with the name of every single one of the 10,000 donors who funded the ad in tiny type.27 Internet Explorer lost dramatic market share to Firefox, and eventually lost market dominance to Firefox and a host of other browsers like Google Chrome.28 Think of how incredible it is: One of the largest—and wealthiest—companies in the world (Microsoft) lost its market dominance to a free product made by a bunch of volunteers, led by a nineteen-year-old with a marketing budget funded by a large number of other volunteers. Firefox is only the tip of the iceberg; almost every major software product out there has a significant open-source competitor, with lots of small firms—like mine—helping to implement and maintain that software for other companies.


pages: 678 words: 159,840

The Debian Administrator's Handbook, Debian Wheezy From Discovery to Mastery by Raphaal Hertzog, Roland Mas


bash_history, Debian, distributed generation,, failed state, Firefox, GnuPG, Google Chrome, Jono Bacon, NP-complete, QWERTY keyboard, RFC: Request For Comment, Richard Stallman, Skype, SpamAssassin, Valgrind, web application, x509 certificate, zero day, Zimmermann PGP

Clients trying to access another virtual host would then display warnings, since the certificate they received didn't match the website they were trying to access. Fortunately, most browsers now work with SNI; this includes Microsoft Internet Explorer starting with version 7.0 (starting on Vista), Mozilla Firefox starting with version 2.0, Apple Safari since version 3.2.1, and all versions of Google Chrome. The Apache package provided in Debian is built with support for SNI; no particular configuration is therefore needed, apart from enabling name-based virtual hosting on port 443 (SSL) as well as the usual port 80. This is a simple matter of editing /etc/apache2/ports.conf so it includes the following: <IfModule mod_ssl.c> NameVirtualHost *:443 Listen 443 </IfModule> Care should also be taken to ensure that the configuration for the first virtual host (the one used by default) does enable TLSv1, since Apache uses the parameters of this first virtual host to establish secure connections, and they had better allow them!

This browser is developed by Google at such a fast pace that maintaining a single version of it across the whole lifespan of Debian Wheezy is unlikely to be possible. Its clear purpose is to make web services more attractive, both by optimizing the browser for performance and by increasing the user's security. The free code that powers Chromium is also used by its proprietary version called Google Chrome. 13.6. Development 13.6.1. Tools for GTK+ on GNOME Anjuta (in the anjuta package) is a development environment optimized for creating GTK+ applications for GNOME. Glade (in the glade package) is an application designed to create GTK+ graphical interfaces for GNOME and save them in an XML file. These XML files can then be loaded by the libglade shared library, which can dynamically recreate the saved interfaces; such a feature can be interesting, for instance for plugins that require dialogs.


pages: 349 words: 114,038

Culture & Empire: Digital Revolution by Pieter Hintjens


4chan, airport security, anti-communist, anti-pattern, barriers to entry, Bill Duvall, bitcoin, blockchain, business climate, business intelligence, business process, Chelsea Manning, clean water, congestion charging, Corn Laws, correlation does not imply causation, cryptocurrency, Debian, Edward Snowden, failed state, financial independence, Firefox, full text search, German hyperinflation, global village, GnuPG, Google Chrome, greed is good, Hernando de Soto, hiring and firing, informal economy, invisible hand, James Watt: steam engine, Jeff Rulifson, Julian Assange, Kickstarter, M-Pesa, mutually assured destruction, Naomi Klein, national security letter, new economy, New Urbanism, Occupy movement, offshore financial centre, packet switching, patent troll, peak oil, pre–internet, private military company, race to the bottom, rent-seeking, reserve currency, RFC: Request For Comment, Richard Feynman, Richard Feynman, Richard Stallman, Satoshi Nakamoto, security theater, Skype, slashdot, software patent, spectrum auction, Steve Crocker, Steve Jobs, Steven Pinker, Stuxnet, The Wealth of Nations by Adam Smith, The Wisdom of Crowds, trade route, transaction costs, union organizing, web application, WikiLeaks, Y2K, zero day, Zipf's Law

To deal with fundamental differences in viewpoint is something else. I've said before that conflicting missions can be a problem. The best answer I know is to turn the conflict into competition. In software, we do this by making standards that teams can build on. Take for example the HTTP standard that powers the web. Any team can build a web server or a web browser. This lets teams compete. So Google's Chrome browser emerged as a lightweight, faster alternative to Firefox, which was getting bloated and slow. Then, the Firefox team took performance seriously, and now Firefox is faster than Chrome. TIP: When there is an interesting problem, try to get multiple teams competing to solve it. Competition is great fun and can produce better answers than monopolized problems. You can even explicitly create competitions with prizes for the best solutions.


pages: 325 words: 85,599

Professional Node.js: Building Javascript Based Scalable Software by Pedro Teixeira

Amazon:, Firefox, Google Chrome, node package manager, platform as a service, web application, WebSocket

Now that you know what you did wrong, you can exit the debugger by hitting Ctrl-D and fix the problem by removing the var keyword from line 8: var a = 0; function init() { a = 1; } function incr() { a = a + 1; } init(); console.log('a before: %d', a); incr(); console.log('a after: %d', a); Run the application again: $ node my_app.js a before: 1 a after: 2 Now the output is what you expected; the bug is fixed. USING NODE INSPECTOR Another debugging tool you might find helpful is Node Inspector. Instead of using a text-only debugger, this one provides a graphical interface by bringing the full-fledged Google Chrome inspector to your Node app using a web browser. You can install Node Inspector globally like this: $ npm install -g node-inspector Node Inspector runs as a daemon by default on port 8080. You can launch it like this: $ node-inspector & This sends the node-inspector process to the background. Next you need to fire up your app, by using the --debug or --debug-brk option on the Node executable like this: $ node --debug-brk my_app.js The --debug-brk option makes your app break on the first line, whereas the --debug option simply enables debugging.


pages: 275 words: 84,418

Dogfight: How Apple and Google Went to War and Started a Revolution by Fred Vogelstein


Apple II, cloud computing, disintermediation, don't be evil, Dynabook, Firefox, Google Chrome, Google Glasses, Googley, Jony Ive, Mark Zuckerberg, Peter Thiel, pre–internet, Silicon Valley, Silicon Valley startup, Skype, software patent, spectrum auction, Steve Ballmer, Steve Jobs, Steve Wozniak, Steven Levy, Tim Cook: Apple, web application

There are half a dozen good mapping applications. Google needs Samsung as much as Samsung needs Google now. Without Google apps on Samsung phones—which are now half of all Android sales—half of Google’s mobile advertising base disappears. Andy Rubin is no longer the Google executive to query about Android’s future. In early 2013 he handed Android’s reigns to Sundar Pichai, who had also been running Google Chrome. Pichai has long been a favorite of Page’s and is well regarded as a seasoned manager. That is something Android needs now that it has grown to include hundreds of Googlers worldwide. Such leadership is something Rubin, more of an entrepreneur than an executive, didn’t enjoy providing, according to friends. Indeed, when asked about Google’s shifting alliance with Samsung in June 2013, Pichai demonstrated his fluency at tackling such complicated questions.


pages: 502 words: 82,170

The Book of CSS3 by Peter Gasston


centre right,, Firefox, Google Chrome, web application, wikimedia commons

Back in 2006, I started, and Peter joined me in writing posts about the development of the standard and real-life examples of what it looked like in browsers. Although I started the site, Peter was always the most prolific writer, and it’s only fitting that while I wrote this foreword, he wrote the book. CSS3 has finally gone mainstream. With the new age of browsers (such as Firefox 4, Google Chrome, and Internet Explorer 9), we as a web design community are finally getting the power and flexibility we’ve been waiting for. We can now manage media queries for different browsers, have smarter background images, and handle fonts in a way that doesn’t drive us nuts. If you plan on using CSS3, this book is the most hands-on guide you’ll find. It shows you what works and what doesn’t, and no caveat is forgotten.


pages: 326 words: 103,170

The Seventh Sense: Power, Fortune, and Survival in the Age of Networks by Joshua Cooper Ramo


Airbnb, Albert Einstein, algorithmic trading, barriers to entry, Berlin Wall, bitcoin, British Empire, cloud computing, crowdsourcing, Danny Hillis, defense in depth, Deng Xiaoping, Edward Snowden, Fall of the Berlin Wall, Firefox, Google Chrome, income inequality, Isaac Newton, Jeff Bezos, job automation, market bubble, Menlo Park, natural language processing, Network effects, Norbert Wiener, Oculus Rift, packet switching, Paul Graham, price stability, quantitative easing, RAND corporation, recommendation engine, Republic of Letters, Richard Feynman, Richard Feynman, road to serfdom, Sand Hill Road, secular stagnation, self-driving car, Silicon Valley, Skype, Snapchat, social web, sovereign wealth fund, Steve Jobs, Steve Wozniak, Stewart Brand, Stuxnet, superintelligent machines, technological singularity, The Coming Technological Singularity, The Wealth of Nations by Adam Smith, too big to fail, Vernor Vinge, zero day

In the years after Arthur’s paper was published, billions of us ran madly along a course he had anticipated: We crashed our way as fast as possible into those single, winning businesses, rewarding them with near-monopoly positions in exchange for the benefits of being “inside.” In the twenty years since Arthur spotted increasing returns in software, nine-billion-user worlds have emerged—and others are not far behind. Microsoft Office and Windows, Google Search, Google Maps, Facebook, WhatsApp, Google Chrome, YouTube, and Android all have more than a billion users, and each exhibits that appealing “If you use it, I’ll use it!” logic. Profits and power, just as Arthur would have expected, followed right along. It was just as Arthur predicted: If ten people use WhatsApp or Facebook or YouTube, it’s hard for the eleventh to do something different. And when the eleventh person joins in, they make it harder still for the twelfth to walk a unique path.


pages: 283 words: 85,824

The People's Platform: Taking Back Power and Culture in the Digital Age by Astra Taylor


A Declaration of the Independence of Cyberspace, Andrew Keen, barriers to entry, Berlin Wall, big-box store, Brewster Kahle, citizen journalism, cloud computing, collateralized debt obligation, Community Supported Agriculture, conceptual framework, corporate social responsibility, cross-subsidies, crowdsourcing, David Brooks, digital Maoism, disintermediation, don't be evil, Donald Trump, Edward Snowden, Fall of the Berlin Wall, Filter Bubble, future of journalism, George Gilder, Google Chrome, Google Glasses, hive mind, income inequality, informal economy, Internet Archive, Internet of things, invisible hand, Jane Jacobs, Jaron Lanier, Jeff Bezos, job automation, Julian Assange, Kevin Kelly, Kickstarter, knowledge worker, Mark Zuckerberg, means of production, Naomi Klein, Narrative Science, Network effects, new economy, New Journalism, New Urbanism, Nicholas Carr, oil rush, Peter Thiel, Plutocrats, plutocrats, pre–internet, profit motive, recommendation engine, Richard Florida, Richard Stallman, self-driving car, shareholder value, sharing economy, Silicon Valley, Silicon Valley ideology, slashdot, Slavoj Žižek, Snapchat, social graph, Steve Jobs, Stewart Brand, technoutopianism, trade route, Whole Earth Catalog, WikiLeaks, winner-take-all economy, Works Progress Administration, young professional

Understanding what sites people visit, what content they view, what products they buy and even their geographic coordinates will allow advertisers to better target individual consumers. And more of that knowledge will reside with technology companies than with content producers. Google, for instance, will know much more about each user than will the proprietor of any one news site. It can track users’ online behavior through its Droid software on mobile phones, its Google Chrome Web browser, its search engine and its new tablet software. The ability to target users is why Apple wants to control the audience data that goes through the iPad. And the company that may come to know the most about you is Facebook, with which users freely share what they like, where they go and who their friends are.5 For those who desire to create art and culture—or “content,” to use that horrible, flattening word—the shift is significant.


pages: 598 words: 134,339

Data and Goliath: The Hidden Battles to Collect Your Data and Control Your World by Bruce Schneier


23andMe, Airbnb, airport security, AltaVista, Anne Wojcicki, augmented reality, Benjamin Mako Hill, Black Swan, Brewster Kahle, Brian Krebs, call centre, Cass Sunstein, Chelsea Manning, citizen journalism, cloud computing, congestion charging, disintermediation, Edward Snowden, experimental subject, failed state, fault tolerance, Ferguson, Missouri, Filter Bubble, Firefox, friendly fire, Google Chrome, Google Glasses, hindsight bias, informal economy, Internet Archive, Internet of things, Jacob Appelbaum, Jaron Lanier, Julian Assange, Kevin Kelly, license plate recognition, linked data, Lyft, Mark Zuckerberg, Nash equilibrium, Nate Silver, national security letter, Network effects, Occupy movement, payday loans, pre–internet, price discrimination, profit motive, race to the bottom, RAND corporation, recommendation engine, RFID, self-driving car, Silicon Valley, Skype, smart cities, smart grid, Snapchat, social graph, software as a service, South China Sea, stealth mode startup, Steven Levy, Stuxnet, TaskRabbit, telemarketer, Tim Cook: Apple, transaction costs, Uber and Lyft, urban planning, WikiLeaks, zero day

These days they’re mostly monitoring to see whether you illegally download copyrighted songs and videos, but other applications aren’t far behind. Verizon, Microsoft, and others are working on a set-top box that can monitor what’s going on in the room, and serve ads based on that information. It’s less Big Brother, and more hundreds of tattletale little brothers. Today, Internet surveillance is far more insistent than cookies. In fact, there’s a minor arms race going on. Your browser—yes, even Google Chrome—has extensive controls to block or delete cookies, and many people enable those features. DoNotTrackMe is one of the most popular browser plug-ins. The Internet surveillance industry has responded with “flash cookies”—basically, cookie-like files that are stored with Adobe’s Flash player and remain when browsers delete their cookies. To block those, you can install FlashBlock. But there are other ways to uniquely track you, with esoteric names like evercookies, canvas fingerprinting, and cookie synching.


pages: 310 words: 34,482

Makers at Work: Folks Reinventing the World One Object or Idea at a Time by Steven Osborn


3D printing, A Pattern Language, additive manufacturing, air freight, Airbnb, augmented reality, autonomous vehicles, barriers to entry, Baxter: Rethink Robotics,, computer vision, crowdsourcing, dumpster diving,, Firefox, future of work, Google Chrome, Google Glasses, Google Hangouts, Hacker Ethic, Internet of things, Iridium satellite, Khan Academy, Kickstarter, Mason jar, means of production, Minecraft, minimum viable product, Network effects, Oculus Rift, patent troll, popular electronics, Rodney Brooks, Shenzhen was a fishing village, side project, Silicon Valley, Skype, slashdot, social software, software as a service, special economic zone, speech recognition, subscription business, telerobotics, urban planning, web application, Y Combinator

At the end of the day, the ecosystem is much bigger, much more diverse, and much more interesting than I ever dreamed it would be. I’m sure that most of the community on the site would agree as well, because up until now, there really hasn’t been a Tindie, a marketplace for this community. We’re the first real success story that’s been able to organize the community in one place and recognize the peoples’ achievements and the creations that they are building. WebKit is the rendering engine that Safari and Google Chrome use. for_tech_that/ 3 4 79 80 Chapter 6 | Emile Petrone: Founder, Tindie Osborn: Do you see Tindie growing beyond hobbyist electronics projects to projects for everyday consumers? Can you talk about Tindie’s vision for the future? Petrone: There are really two camps that I see emerging out of what people are considering a new hardware revolution, in terms of the products that are coming out.


pages: 752 words: 131,533

Python for Data Analysis by Wes McKinney


backtesting, cognitive dissonance, crowdsourcing, Debian, Firefox, Google Chrome, index card, random walk, recommendation engine, revision control, sentiment analysis, Sharpe ratio, side project, sorting algorithm, statistical model, type inference

In [1]: import pandas In [2]: plot(arange(10)) If successful, there should be no error messages and a plot window will appear. You can also check that the IPython HTML notebook can be successfully run by typing: $ ipython notebook --pylab=inline Caution If you use the IPython notebook application on Windows and normally use Internet Explorer, you will likely need to install and run Mozilla Firefox or Google Chrome instead. EPDFree on Windows contains only 32-bit executables. If you want or need a 64-bit setup on Windows, using EPD Full is the most painless way to accomplish that. If you would rather install from scratch and not pay for an EPD subscription, Christoph Gohlke at the University of California, Irvine, publishes unofficial binary installers for all of the book’s necessary packages ( for 32- and 64-bit Windows.


Exploring ES6 - Upgrade to the next version of JavaScript by Axel Rauschmayer


anti-pattern, domain-specific language,, Firefox, Google Chrome, MVC pattern, web application, WebSocket

That means that the code looks synchronous while performing asynchronous operations. ⁹ ¹⁰ ¹¹ ¹² ¹³ Promises for asynchronous programming 460 co(function* () { try { let [croftStr, bondStr] = yield Promise.all([ // (A) getFile('http://localhost:8000/croft.json'), getFile('http://localhost:8000/bond.json'), ]); let croftJson = JSON.parse(croftStr); let bondJson = JSON.parse(bondStr); console.log(croftJson); console.log(bondJson); } catch (e) { console.log('Failure to read: ' + e); } }); Details are explained in the chapter on generators. 25.12 Debugging Promises Tools for debugging Promises are slowly appearing in browsers. Let’s take a quick look at what the latest version of Google Chrome has to offer. The following is part of an HTML file that demonstrates two common problems with Promises: <body> <script> // Unhandled rejection Promise.reject(new Error()) .then(function (x) { return 'a'}) .then(function (x) { return 'b'}) // Unsettled Promise new Promise(function () {}); </script> </body> First, a rejection isn’t handled. Second, a Promise isn’t settled. Chrome’s dev tools help with both problems.


pages: 523 words: 143,139

Algorithms to Live By: The Computer Science of Human Decisions by Brian Christian, Tom Griffiths


4chan, Ada Lovelace, Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, algorithmic trading, anthropic principle, asset allocation, autonomous vehicles, Berlin Wall, Bill Duvall, bitcoin, Community Supported Agriculture, complexity theory, constrained optimization, cosmological principle, cryptocurrency, Danny Hillis, delayed gratification, dematerialisation, diversification, double helix, Elon Musk, fault tolerance, Fellow of the Royal Society, Firefox, first-price auction, Flash crash, Frederick Winslow Taylor, George Akerlof, global supply chain, Google Chrome, Henri Poincaré, information retrieval, Internet Archive, Jeff Bezos, John Nash: game theory, John von Neumann, knapsack problem, Lao Tzu, linear programming, martingale, Nash equilibrium, natural language processing, NP-complete, P = NP, packet switching, prediction markets, race to the bottom, RAND corporation, RFC: Request For Comment, Robert X Cringely, sealed-bid auction, second-price auction, self-driving car, Silicon Valley, Skype, sorting algorithm, spectrum auction, Steve Jobs, stochastic process, Thomas Malthus, traveling salesman, Turing machine, urban planning, Vickrey auction, Walter Mischel, Y Combinator

well over a trillion distinct URLs: “We Knew the Web Was Big…” July 25, 2008, weighs in at about seventy-seven characters: Kelvin Tan, “Average Length of a URL (Part 2),” August 16, 2010, the URL is entered into a set of equations: Bloom, “Space/Time Trade-offs in Hash Coding with Allowable Errors.” shipped with a number of recent web browsers: Google Chrome until at least 2012 used a Bloom filter: see and part of cryptocurrencies like Bitcoin: Gavin Andresen, “Core Development Status Report #1,” November 1, 2012, “The river meanders”: Richard Kenney, “Hydrology; Lachrymation,” in The One-Strand River: Poems, 1994–2007 (New York: Knopf, 2008).


pages: 677 words: 206,548

Future Crimes: Everything Is Connected, Everyone Is Vulnerable and What We Can Do About It by Marc Goodman


23andMe, 3D printing, additive manufacturing, Affordable Care Act / Obamacare, Airbnb, airport security, Albert Einstein, algorithmic trading, artificial general intelligence, augmented reality, autonomous vehicles, Baxter: Rethink Robotics, Bill Joy: nanobots, bitcoin, Black Swan, blockchain, borderless world, Brian Krebs, business process, butterfly effect, call centre, Chelsea Manning, cloud computing, cognitive dissonance, computer vision, connected car, corporate governance, crowdsourcing, cryptocurrency, data acquisition, data is the new oil, Dean Kamen, disintermediation, don't be evil, double helix, Downton Abbey, Edward Snowden, Elon Musk, Erik Brynjolfsson, Filter Bubble, Firefox, Flash crash, future of work, game design, Google Chrome, Google Earth, Google Glasses, Gordon Gekko, high net worth, High speed trading, hive mind, Howard Rheingold, hypertext link, illegal immigration, impulse control, industrial robot, Internet of things, Jaron Lanier, Jeff Bezos, job automation, John Harrison: Longitude, Jony Ive, Julian Assange, Kevin Kelly, Khan Academy, Kickstarter, knowledge worker, Kuwabatake Sanjuro: assassination market, Law of Accelerating Returns, Lean Startup, license plate recognition, litecoin, M-Pesa, Mark Zuckerberg, Marshall McLuhan, Menlo Park, mobile money, more computing power than Apollo, move fast and break things, Nate Silver, national security letter, natural language processing, obamacare, Occupy movement, Oculus Rift, offshore financial centre, optical character recognition, pattern recognition, personalized medicine, Peter H. Diamandis: Planetary Resources, Peter Thiel, pre–internet, RAND corporation, ransomware, Ray Kurzweil, refrigerator car, RFID, ride hailing / ride sharing, Rodney Brooks, Satoshi Nakamoto, Second Machine Age, security theater, self-driving car, shareholder value, Silicon Valley, Silicon Valley startup, Skype, smart cities, smart grid, smart meter, Snapchat, social graph, software as a service, speech recognition, stealth mode startup, Stephen Hawking, Steve Jobs, Steve Wozniak, strong AI, Stuxnet, supply-chain management, technological singularity, telepresence, telepresence robot, Tesla Model S, The Wisdom of Crowds, Tim Cook: Apple, trade route, uranium enrichment, Wall-E, Watson beat the top human players on Jeopardy!, Wave and Pay, We are Anonymous. We are Legion, web application, WikiLeaks, Y Combinator, zero day

When it launched Gmail in 2004, it offered an amazing one gigabyte of data, vastly outmatching the paltry two megabytes offered by the dominant player of the day, Microsoft’s Hotmail. As the young organization hit its stride, other fantastic products emerged, and eventually we were introduced to Google Calendar, Google Contacts, Google Maps, Google Earth, Google Voice, Google Docs, Google Street View, Google Translate, Google Drive, Google Photos (Picasa), Google Video (YouTube), Google Chrome, Google+, and Google Android, to name but a few. One by one, services such as phone calls, translation, maps, and word processing—services for which we would previously have paid hundreds of dollars (think Microsoft’s Office)—were now suddenly free. The most benevolent interpretation of this bounty would be that Google was merely providing products the public wanted, satisfying our ever-growing technological needs (and those of advertisers).