Firefox

261 results back to index


pages: 502 words: 82,170

The Book of CSS3 by Peter Gasston

centre right, disruptive innovation, en.wikipedia.org, Firefox, Google Chrome, web application, wikimedia commons

.), as spacer for empty slot, Slots and the ::slot() Pseudo-element perspective function, The Transformation Matrix pixel grid, Understanding Axes and Coordinates pixel rate, Aspect Ratio, Pixel Ratio detection, Pixel Ratio pixels, for axes measurement, Text Effects and Typographic Styles point value, for gradient, Gradients portrait value, for orientation Media Feature, Using Media Queries in the Real World position property, for creating rows, Template Layout position, of background images, Background Size precedence, for properties, empty prefixes, Let’s Get Started: Introducing the Syntax, Let’s Get Started: Introducing the Syntax, Browser-Specific Prefixes browser-specific, Browser-Specific Prefixes for properties, Let’s Get Started: Introducing the Syntax presentation, vs. behavior, Transitions and Animations preserve-3d keyword, for transform-style property, Transform Style properties, Let’s Get Started: Introducing the Syntax, Browser-Specific Prefixes, empty, More Font Properties, More Font Properties, Transitions and Animations moving between states, Transitions and Animations of fonts, More Font Properties potential problems from unprefixed, Browser-Specific Prefixes precedence for, empty prefix for, Let’s Get Started: Introducing the Syntax Proposed Recommendation status, CSS3 Is Modular protocols, link icon for, Beginning Substring Attribute Value Selector pseudo-classes, Pseudo-classes and Pseudo-elements, Structural Pseudo-classes, Structural Pseudo-classes, The nth-* Pseudo-classes, The nth-* Pseudo-classes, nth-child and nth-of-type, nth-child and nth-of-type, first-of-type, last-child, and last-of-type, first-of-type, last-child, and last-of-type, first-of-type, last-child, and last-of-type, first-of-type, last-child, and last-of-type, first-of-type, last-child, and last-of-type, only-child and only-of-type, empty, empty, root, Summary browser support, Summary empty, empty first-of-type, first-of-type, last-child, and last-of-type last-child, first-of-type, last-child, and last-of-type last-of-type, first-of-type, last-child, and last-of-type not (negation), empty nth-*, Structural Pseudo-classes nth-child, The nth-* Pseudo-classes nth-last-child, nth-child and nth-of-type nth-last-of-type, nth-child and nth-of-type nth-of-type, The nth-* Pseudo-classes only-child, first-of-type, last-child, and last-of-type only-of-type, first-of-type, last-child, and last-of-type root, root structural, Structural Pseudo-classes target, only-child and only-of-type pseudo-elements, Pseudo-classes and Pseudo-elements, Pseudo-elements, Pseudo-elements, Summary, Multiple Rows ::slot(), Multiple Rows browser support, Summary double colon (::) for, Pseudo-elements pseudo-selectors, Selectors PT Sans font, font-stretch punctuation properties, Setting Text Rendering Options, Summary browser support, Summary punctuation-trim property, Setting Text Rendering Options px (CSS Pixel unit), Aspect Ratio Q quarter ellipse, Giving Your Borders Rounded Corners Quirks Mode box model, Zero Values and Firefox Layouts Quirks Mode website, Opera R radial gradients, Adding Extra color-stop Values, Radial Gradients in Firefox, Radial Gradients in Firefox, Using Radial Gradients, Multiple color-stop Values, Multiple color-stop Values multiple color-stop values, Multiple color-stop Values using, Radial Gradients in Firefox, Radial Gradients in Firefox, Using Radial Gradients, Multiple color-stop Values in Firefox, Radial Gradients in Firefox in WebKit, Radial Gradients in Firefox, Multiple color-stop Values radial keyword, Radial Gradients in Firefox radius of quarter ellipse, Giving Your Borders Rounded Corners readability, A Note on Readability ready() event (jQuery), Template Layout recommendation process, for modules, CSS3 Is Modular Recommendation status, CSS3 Is Modular Red, Green, Blue (RGB) model, Color and Opacity, Hue, Saturation, Lightness HSL vs., Hue, Saturation, Lightness Red, Green, Blue, Alpha (RGBA) model, Setting Transparency with the opacity Property, The Alpha Channel, Matching the Operating System’s Appearance and graceful degradation, The Alpha Channel browser support, Matching the Operating System’s Appearance reflection, scale, scale, Transforming Elements with Matrices, Reflections with WebKit gradients with, Reflections with WebKit of element, creating, scale with WebKit, Transforming Elements with Matrices regular quarter ellipse, Giving Your Borders Rounded Corners repeat keyword, background-repeat, background-repeat, Using Images for Borders for background-repeat property, background-repeat for border-image property, Using Images for Borders repeat() function, for complex grids, Implicit and Explicit Grids repeat-x keyword, for background-repeat property, background-repeat repeat-y keyword, for background-repeat property, background-repeat repeating gradients, Multiple Gradients, Summary, Gradients: Browser Support browser support, Summary in Firefox, Multiple Gradients resize property, Restricting Overflow, Summary browser support, Summary reusable code, Extending Variables Using Mixins reverse keyword, for box-direction property, Changing Orientation reverse play for animation, Delay RGB (Red, Green, Blue) model, Color and Opacity, Hue, Saturation, Lightness HSL vs., Hue, Saturation, Lightness RGBA (Red, Green, Blue, Alpha) model, Setting Transparency with the opacity Property, The Alpha Channel, Matching the Operating System’s Appearance and graceful degradation, The Alpha Channel browser support, Matching the Operating System’s Appearance rgba() color function, Multiple Shadows right keyword, Giving Your Borders Rounded Corners, Giving Your Borders Rounded Corners, Perspective for border-radius property, Giving Your Borders Rounded Corners for perspective-origin property, Perspective root pseudo-class, empty, Summary browser support, Summary rotate function, rotate, Rotation Around an Axis, Rotation Around an Axis for three dimensions, Rotation Around an Axis for transform property, rotate rotate3d function, Rotation Around an Axis rotation of element, with skew, skew, Transforming Elements with Matrices round keyword, background-repeat, background-repeat, Using Images for Borders, Using Images for Borders for background-repeat property, background-repeat for border-image property, Using Images for Borders, Using Images for Borders rounded corners for borders, Giving Your Borders Rounded Corners row strings, Using position and display to Create Rows, Using position and display to Create Rows, Multiple Rows on display property, Using position and display to Create Rows rules for, Multiple Rows rows, Template Layout, Slots and the ::slot() Pseudo-element, Slots and the ::slot() Pseudo-element setting height and width, Slots and the ::slot() Pseudo-element Template Layout Module for creating, Template Layout rules (lines), between columns, Column Gaps and Rules running keyword, for animation-play-state property, Shorthand S Safari browser for Mac OS X.

Artificial Font Faces geometricPrecision keyword, for text-rendering property, word-wrap Georgia font, font-size-adjust Glazman, Daniel, Constants and Variables Google Font API, Google Font API gr (grid unit), Implicit and Explicit Grids gradients, Gradients, Gradients, Linear Gradients in Firefox, Linear Gradients in WebKit, Linear Gradients in WebKit, Radial Gradients, Radial Gradients in Firefox, Radial Gradients in Firefox, Using Radial Gradients, Multiple color-stop Values, Multiple color-stop Values, Multiple Gradients, Multiple Gradients, Summary, Reflections with WebKit, CSS3 Pie browser support, Summary generator for, CSS3 Pie in Firefox, repeating, Multiple Gradients linear, Gradients, Linear Gradients in Firefox, Linear Gradients in WebKit, Linear Gradients in WebKit adding color-stop values, Linear Gradients in WebKit in WebKit, Linear Gradients in Firefox using, Linear Gradients in WebKit multiple, Multiple Gradients radial, Radial Gradients, Radial Gradients in Firefox, Radial Gradients in Firefox, Using Radial Gradients, Multiple color-stop Values, Multiple color-stop Values in Firefox, Radial Gradients in Firefox in WebKit, Radial Gradients in Firefox multiple color-stop values, Multiple color-stop Values using, Using Radial Gradients WebKit advantage, Multiple color-stop Values with reflection, Reflections with WebKit graphics.

Media Queries (Chapter 2) WebKit Firefox Opera IE Media Queries Yes Yes Yes No (expected in IE9) Selectors (Chapter 3) WebKit Firefox Opera IE Attribute Selectors Yes Yes Yes Yes General Sibling Combinator Yes Yes Yes Yes Pseudo-classes and Pseudo-elements (Chapter 4) WebKit Firefox Opera IE Structural Pseudo-classes Yes Yes Yes No (expected in IE9) :target Yes Yes Yes No (expected in IE9) :empty Yes Yes Yes No (expected in IE9) :root Yes Yes Yes No (expected in IE9) :not Yes Yes Yes No (expected in IE9) Pseudo-elements (new syntax) Yes Yes Yes No (expected in IE9) UI element states Yes Yes Yes No (expected in IE9) :selection Yes Yes Yes No (expected in IE9) Web Fonts (Chapter 5) WebKit Firefox Opera IE @font-face Yes Yes Yes Yes (.eot only; other formats expected in IE9) font-size-adjust No Yes No No font-stretch No No No No Text Effects and Typographic Styles (Chapter 6) WebKit Firefox Opera IE text-shadow Yes Yes Yes No text-outline No No No No text-stroke Yes No No No text-align (new values) Yes Yes No No text-align-last No No No Yes word-wrap Yes Yes Yes Yes text-wrap No No No No text-rendering No Yes No No Multiple Columns (Chapter 7) WebKit Firefox Opera IE column-count Yes (with prefix) Yes (with prefix) No No column-width Yes (with prefix) Yes (with prefix) No No column-gap Yes (with prefix) Yes (with prefix) No No column-rule Yes (with prefix) Yes (with prefix) No No columns Yes (with prefix) No No No column-span No No No No break-* No No No No Background Images and Other Decorative Properties (Chapter 8) WebKit Firefox Opera IE Multiple Background Images Yes Yes Yes No (expected in IE9) background-size Yes (with prefix in Safari 4 and earlier) Yes (with prefix; expected in Firefox 4 without prefix) Yes No (expected in IE9) background-clip Yes (with prefix in Safari 4 and earlier) Yes (with prefix; expected in Firefox 4 without prefix) Yes No (expected in IE9) background-origin Yes (with prefix in Safari 4 and earlier) Yes (with prefix; expected in Firefox 4 without prefix) Yes No (expected in IE9) background-repeat (new values) No No Yes No (expected in IE9) image-rect No Yes (with prefix) No No mask-* Yes (with prefix) No No No Border and Box Effects (Chapter 9) WebKit Firefox Opera IE border-radius Yes (with prefix in Safari 4 and earlier) Yes (with prefix; incorrect syntax on sub-properties; expected in Firefox 4 without prefix) Yes No (expected in IE9) border-image Yes (with prefix) Yes (with prefix) Yes No Multiple border-color Values No Yes No No box-shadow Yes (with prefix) Yes (with prefix) Yes No box-decoration-break No No No No Color and Opacity (Chapter 10) WebKit Firefox Opera IE opacity Yes Yes Yes No (expected in IE9) RGBA Values Yes Yes Yes No (expected in IE9) HSL Values Yes Yes Yes No (expected in IE9) HSLA Values Yes Yes Yes No (expected in IE9) currentColor Value Yes Yes Yes No (expected in IE9) appearance Yes Yes No No Gradients (Chapter 11) WebKit Firefox Opera IE Gradients Yes (with prefix; incorrect syntax; correct syntax in future versions) Yes (with prefix) No No Repeating Gradients No Yes (with prefix) No No 2D Transformations (Chapter 12) WebKit Firefox Opera IE 2D Transformations Yes (with prefix) Yes (with prefix) Yes (with prefix) No (expected in IE9 with prefix) box-reflect Yes (with prefix) No No No Transitions and Animations (Chapter 13) WebKit Firefox Opera IE Transitions Yes (with prefix) No (expected in Firefox 4 with prefix) Yes (with prefix) No Animations Yes (with prefix) No No No 3D Transformations (Chapter 14) WebKit Firefox Opera IE 3D Transformations Yes (with prefix) No No No Flexible Box Layout (Chapter 15) WebKit Firefox Opera IE Flexible Box Layout Yes (with prefix) Yes (with prefix) No No (possibly in IE9 with prefix) Template Layout (Chapter 16) WebKit Firefox Opera IE Template Layout No No No No The Future of CSS (Chapter 17) WebKit Firefox Opera IE calc() No No (expected in Firefox 4 with prefix) No No (expected in IE9) max() No No No No min() No No No No cycle() No No (expected in “a future version” of Firefox) No No Grid Positioning No No No No image() No No No No Image Slices No No No No Image Sprites No No No No Grouping Selector No No (expected in Firefox 4 with prefix) No No Constants and Variables No No No No WebKit CSS extensions No No No No Haptic Feedback No No No No Appendix B.


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

XUL exists because although modern HTML is often powerful enough to build basic graphical user interfaces, it is not particularly convenient for certain specialized tasks that desktop applications excel in, such as implementing common dialog windows or system menus. XUL is not currently supported by any browser other than Firefox and appears to be disabled in the recent release, Firefox 6. In Firefox, it is handled by the general-purpose renderer, based on the appropriate xmlns namespace. Firefox uses XUL for much of its internal UI, but otherwise the language is seldom encountered on the Internet. From the standpoint of web application security, Internet-originating XUL documents can be considered roughly equivalent to HTML documents. Essentially, the language has JavaScript scripting capabilities and allows broad control over the appearance of the rendered page.

Encapsulating Pseudo-Protocols This special class of pseudo-protocols may be used to prefix any other URL in order to force a special decoding or rendering mode for the retrieved resource. Perhaps the best-known example is the view-source: scheme supported by Firefox and Chrome, used to display the pretty-printed source of an HTML page. This scheme is used in the following way: view-source:http://www.example.com/ Other protocols that function similarly include jar:, which allows content to be extracted from ZIP files on the fly in Firefox; wyciwyg: and view-cache:, which give access to cached pages in Firefox and Chrome respectively; an oddball feed: scheme, which is meant to access news feeds in Safari;[110] and a host of poorly documented protocols associated with the Windows help subsystem and other components of Microsoft Windows (hcp:, its:, mhtml:, mk:, ms-help:, ms-its:, and ms-itss:).

It is recognized in some headers by Firefox and Chrome, but other browsers are less cooperative. Internet Explorer chooses to recognize URL-style percent encoding in the Content-Disposition field instead (a habit also picked up by Chrome) and defaults to UTF-8 in this case. Firefox and Opera, on the other hand, prefer supporting a peculiar percent-encoded syntax proposed in RFC 2231,[120] a striking deviation from how HTTP syntax is supposed to look: Content-Disposition: attachment; filename*=utf-8'en-us'Hi%21.txt Astute readers may notice that there is no single encoding scheme supported by all browsers at once. This situation prompts some web application developers to resort to using raw high-bit values in the HTTP headers, typically interpreted as UTF-8, but doing so is somewhat unsafe. In Firefox, for example, a long-standing glitch causes UTF-8 text to be mangled when put in the Cookie header, permitting attacker-injected cookie delimiters to materialize in unexpected places.[121] In other words, there are no easy and robust solutions to this mess.


pages: 1,038 words: 137,468

JavaScript Cookbook by Shelley Powers

Firefox, Google Chrome, hypertext link, semantic web, web application, WebSocket

Otherwise, either create and throw a specific exception, or create a new Error object, providing your own error message: if (typeof value == "number") { sum+=number; } else { throw new Error("NotANumber"); } The existing exception types are Error, as demonstrated, and: EvalError Used when eval is used improperly RangeError Used when the number is out of range ReferenceError Used when a nonexistent variable is referenced SyntaxError Used when there’s a syntax error 184 | Chapter 10: Debugging and Error Handling TypeError Indicates an unexpected type URIError Used when a malformed URI is encountered DOMException Indicates a DOM error EventException Indicates a DOM event exception RangeException Indicates a DOM range exception The last three exceptions are related to the DOM API. All the errors take a custom message as a string parameter. 10.6 Using Firebug with Firefox Problem You want to set up Firefox for debugging JavaScript. Solution Use Firebug, the popular Firefox add-on development tool. Discussion Unlike other development tools, Firebug is a Firefox add-on, which you’ll need to download and install. However, it installs very easily, and new releases update through Firefox automatically. To start Firebug, look for the little bug in the status bar, on the right of the browser. Clicking the bug opens Firebug, as shown in Figure 10-4. The Firebug tab pages include the Console, the HTML element inspector, the CSS panel, the Script tab, the DOM tree tab, and the Net tab.

The canvas element is also faster in frame-type animations. However, the performance advantages you get with the canvas element lessen as you increase the size of the display. SVG scales beautifully. 15.10 Turning on WebGL Support in Firefox and WebKit/Safari Problem You want to jump into the world of 3D. Solution Both Firefox nightly (Minefield) and the WebKit nightly have support for WebGL, a cross-platform 3D graphics system derived from the OpenGL effort, and making use of the canvas element. You will have to turn on support for both. For Firefox, access the configuration options page by typing about:config into the ad- dress bar. Once past the warning page, find the webgl.enabled_for_all_sites option, and change the value to true. For WebKit, open a Terminal window and type this at the command line: defaults write com.apple.Safari WebKitWebGLEnabled -bool YES Discussion The world of 3D development in browsers is both old and new.

DOCTYPE html> <head> <title>Object Properties</title> <script type="text/javascript"> // Book custom object function Book (title, author) { var title = title; var author = author; this.getTitle=function() { return "Title: " + title; } this.getAuthor=function() { return "Author: " + author; } } // TechBook, inheriting from Book function TechBook (title, author, category) { var category = category; this.getCategory = function() { return "Technical Category: " + category; } Book.apply(this,arguments); this.getBook=function() { return this.getTitle() + " " + author + " " + this.getCategory(); } }window.onload=function() { try { // DOM test, WebKit bites the dust on this one var img = new Image(); // add new property and descriptor Object.defineProperty(img, "geolatitude", { get: function() { return geolatitude; }, set: function(val) { geolatitude = val;}, enumerable: true, configurable: true}); // test configurable and enumerable attrs var props = "Image has "; for (var prop in img) { props+=prop + " "; } alert(props); } catch(e) { alert(e); } 16.6 Extending an Object by Defining a New Property | 371 try { // now we lose IE8 // chain the object constructors TechBook.prototype = new Book(); // add new property and property descriptor Object.defineProperty(TechBook, "experience", { get: function () { return category; }, set: function (value) { category = value; }, enumerable: false, configurable: true}); // get property descriptor and print var val = Object.getOwnPropertyDescriptor(TechBook,"experience"); alert(JSON.stringify(val)); // test configurable and enumerable props = "TechBook has "; for (var prop in TechBook) { props+=prop + " "; } alert(props); Object.defineProperty(TechBook, "experience", { enumerable: true}); props = "TechBook now has "; for (var prop in TechBook) { props+=prop + " "; } alert(props); // create TechBook instance var newBook = new TechBook("The JavaScript Cookbook", "Shelley Powers", "Programming"); // test new setter newBook.experience="intermediate"; // test data descriptor Object.defineProperty(newBook, "publisher", { value: "O'Reilly", writable: false, enumerable: true, configurable: true}); // test writable newBook.publisher="Some Other"; alert(newBook.publisher); } catch(e) { alert(e); } } 372 | Chapter 16: JavaScript Objects </script> </head> <body> <p>some content</p> </body> These methods are very new. At the time I wrote this recipe, they only work in nightly builds for WebKit and Firefox (Minefield), and in a very limited sense with IE8. The IE8 limitation is that the new property methods only work with DOM elements. The Object.defineProperty method works with the Image element, but not with the custom objects. However, using defineProperty on DOM elements causes an exception in WebKit. None of the new property methods work with Opera. The Firefox Minefield nightly and the Chrome beta were the only browsers that currently work with both types of objects, as shown in Figure 16-2, which displays the Image object properties in Firefox. Figure 16-2. Displaying Image properties after adding a new property with defineProperty 16.6 Extending an Object by Defining a New Property | 373 After printing out the Image properties, a new property (experience) and property de- scriptor are added to the TechBook custom object.


pages: 375 words: 66,268

High Performance JavaScript by Nicholas C. Zakas

en.wikipedia.org, Firefox, Google Chrome, sorting algorithm, web application

.* When a file is downloaded using a dynamic script node, the retrieved code is typically executed immediately (except in Firefox and Opera, which will wait until any previous dynamic script nodes have executed). This works well when the script is self-executing but can be problematic if the code contains only interfaces to be used by other scripts on the page. In that case, you need to track when the code has been fully downloaded and is ready for use. This is accomplished using events that are fired by the dynamic <script> node. Firefox, Opera, Chrome, and Safari 3+ all fire a load event when the src of a <script> element has been retrieved. You can therefore be notified when the script is ready by listening for this event: var script = document.createElement("script") script.type = "text/javascript"; //Firefox, Opera, Chrome, Safari 3+ script.onload = function(){ alert("Script loaded!")

Conversely, largeStr += s1 + s2 first merges the two smaller strings and then concatenates the result with the large string. Creating the intermediary string of s1 + s2 is a much lighter performance hit than copying the large string twice. Firefox and compile-time folding When all strings concatenated in an assignment expression are compile-time constants, Firefox automatically merges them at compile time. Here’s a way to see this in action: function foldingDemo() { var str = "compile" + "time" + "folding"; str += "this" + "works" + "too"; str = str + "but" + "not" + "this"; } alert(foldingDemo.toString()); /* In Firefox, you'll see this: function foldingDemo() { var str = "compiletimefolding"; str += "thisworkstoo"; str = str + "but" + "not" + "this"; } */ When strings are folded together like this, there are no intermediary strings at runtime and the time and memory that would be spent concatenating them is reduced to zero.

Accessing information from array items and object members is more expensive, though exactly which is more expensive depends heavily on the browser. Figure 2-1 shows the relative speed of accessing 200,000 values from each of these four locations in various browsers. Older browsers using more traditional JavaScript engines, such as Firefox 3, Internet Explorer, and Safari 3.2, show a much larger amount of time taken to access values versus browsers that use optimizing JavaScript engines. The general trends, however, remain the same across all browsers: literal value and local variable access tend to be faster than array item and object member access. The one exception, Firefox 3, 15 Figure 2-1. Time per 200,000 reads from various data locations optimized array item access to be much faster. Even so, the general advice is to use literal values and local variables whenever possible and limit use of array items and object members where speed of execution is a concern.


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

A further complication comes in some browsers, including Firefox, that make the manifest an opt-in feature. So a Selenium test may not opt into it, which would make the entire test moot. In order to test this in Firefox, it will be necessary to set up a Firefox profile in which the application cache is on by default. To do this: Quit Firefox completely. Start up Firefox from a command line with the -profileManager switch. This will result in a dialog similar to that shown in Figure 7-2. Save the custom profile. Figure 7-2. Firefox custom profile dialog Restart Firefox. Go to the Firefox Options menu, select the Advanced tab and under that the Network tab (see Figure 7-3), and turn off the “Tell me when a website asks to store data for offline use” option. Figure 7-3. Firefox Options Now, when starting up the Selenium RC server, use an option like this: java -jar selenium-server.jar -firefoxProfileTemplate For full details on Firefox profiles, see http://support.mozilla.com/en-US/kb/Managing+profiles.

php require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class WebTest extends PHPUnit_Extensions_SeleniumTestCase { protected $captureScreenshotOnFailure = TRUE; protected $screenshotPath = '/var/www/localhost/htdocs/screenshots'; protected $screenshotUrl = 'http://localhost/screenshots'; public static $browsers = array( array( 'name' => 'Safari on MacOS X', 'browser' => '*safari', 'host' => 'mac.testbox', 'port' => 4444, 'timeout' => 30000 ), array( 'name' => 'Firefox on Windows', 'browser' => '*firefox', 'host' => 'windows.testbox', 'port' => 4444, 'timeout' => 30000 ), array( 'name' => 'Chrome on Windows XP', 'browser' => '*googlechrome', 'host' => 'windows.testbox', 'port' => 4444, 'timeout' => 30000 ), array( 'name' => 'Internet Explorer on Windows XP', 'browser' => '*iexplore', 'host' => 'windows.testbox', 'port' => 4444, 'timeout' => 30000 ) ); protected function setUp() { $this->setBrowserUrl('http://www.example.com/'); } public function testSeleniumFile() { $this->open('http://www.example.com/'); $this->runSelenese('seleneseTest.html'); } } ?> Example 3-7. phpunit.xml <phpunit stopOnFailure="true" verbose="true" strict="true"> <php> </php> <selenium> <browser name="Firefox" browser="*firefox" host="192.168.0.10" port="4444" timeout="30000"/> <browser name="Chrome" browser="*chrome" host="192.168.0.10" port="4444" timeout="30000"/> <!

URL query string separator, Debugging Manifest Files A Abelson, Harold, Functional Programming acceptance tests, Testing JavaScript Applications accessibility, Accessibility Through WAI-ARIA Accessible Rich Internet Applications, Accessibility Through WAI-ARIA actions, Selenium, Selenium Commands ActiveX controls, IndexedDB add() method (IndexedDB), Adding and Updating Records airplane mode, Adding Power to Web Applications Ajax, Developing Web Applications, Nonblocking I/O and Callbacks, Nonblocking I/O and Callbacks, Functional Programming, Functional Programming, A Simple Example, Offline Loading with a Data Store, Storing Changes for a Later Server Sync, Uploading Files, Structure of the Manifest File calls, Nonblocking I/O and Callbacks, Functional Programming, A Simple Example, Offline Loading with a Data Store, Storing Changes for a Later Server Sync, Structure of the Manifest File DataStore object, Nonblocking I/O and Callbacks uploading files with, Uploading Files versus XHR terminology, Functional Programming alert() method, Nonblocking I/O and Callbacks alt attribute, Accessibility Through WAI-ARIA Android, Selenium RC and a Test Farm, New Form Types _AndWait commands (Selenium), Selenium Commands anonymous functions, Lambda Functions Are Powerful Apache web server, Introduction to the Manifest File append() method, Uploading Files appending an image example, Working with Files Apple Safari, JavaScript’s Triumph, A Pattern for Reuse of Multithread Processing, Libraries for Web Workers, Web Sockets Aptana, JavaScript Tools You Should Know archive files, Drag-and-Drop array, Functional Programming, Array Iteration Operations, You Can Extend Objects, Too iteration operations, Array Iteration Operations, You Can Extend Objects, Too map function, Functional Programming assertElementPresent command (Selenium), Selenium Commands assertions, Selenium, Selenium Commands <audio> tag, Audio and Video automatic updates, Developing Web Applications B base types, extending, Prototypes and How to Expand Objects beforeload event handler, Offline Loading with a Data Store Benedetti, Ryan, JavaScript’s Triumph binary data, The Web Sockets Interface binding variables, Closures blob data type, Blobs BlobBuilder, Blobs Booleans as objects, Prototypes and How to Expand Objects bottlenecks, Splitting Up Work Through Web Workers, JavaScript Tools You Should Know Breadcrumbs specs, Microdata browsers, The Web As Application Platform, Developing Web Applications, Lambda Functions Are Powerful, Testing JavaScript Applications, Selenium RC and a Test Farm, Local Storage, jStore, Updates to the Manifest File, Updates to the Manifest File, Debugging Manifest Files (see also Chrome, Firefox, Internet Explorer, Safari) cache control header issues, Updates to the Manifest File, Debugging Manifest Files data storage and, Local Storage, jStore differences among, Testing JavaScript Applications function inside an if, Lambda Functions Are Powerful interactivity, The Web As Application Platform, Developing Web Applications testing on multiple, Selenium RC and a Test Farm buildMaster() method, Web Worker Fractal Example built-in objects, Prototypes and How to Expand Objects buttons, Lambda Functions Are Powerful, Closures, A Simple Example, Testing with QUnit, Selenium, Selenium Commands, Selenese Command Programming Interface click callbacks, Lambda Functions Are Powerful, A Simple Example, Testing with QUnit closures, Closures testing, Selenium, Selenese Command Programming Interface with XPath, Selenium Commands C C-type languages, Lambda Functions Are Powerful cache control headers, Updates to the Manifest File, Debugging Manifest Files cache() method, Expanding Functions with Prototypes Cagle, Kurt, Canvas and SVG callbacks, Nonblocking I/O and Callbacks, Lambda Functions Are Powerful, Closures, Array Iteration Operations, Testing JavaScript Applications, A Simple Example, Adding and Updating Records, Retrieving Data, Uploading Files, A Pattern for Reuse of Multithread Processing, Web Socket Example alternatives to for loops, Array Iteration Operations button, A Simple Example closures to construct, Closures cursor, Adding and Updating Records on DOM elements, Testing JavaScript Applications from ports, Web Socket Example and Web Workers, A Pattern for Reuse of Multithread Processing write, Retrieving Data XHMLHttpRequest, Uploading Files Canvas, Graphics, Web Worker Fractal Example <canvas> tag, Graphics changes, storing, Storing Changes for a Later Server Sync chat applications, Web Sockets checksum, manifest, Updates to the Manifest File Chrome, Google, JavaScript’s Triumph, Closures, Closures, The localStorage and sessionStorage Objects, The localStorage and sessionStorage Objects, IndexedDB, Blobs, Filesystem, Events, Events, Testing and Debugging Web Workers, Testing and Debugging Web Workers, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing, Web Sockets, Tags for Applications, JavaScript Tools You Should Know BlobBuilder support, Blobs debugging web workers in, Testing and Debugging Web Workers Dev tools, Closures, The localStorage and sessionStorage Objects, Testing and Debugging Web Workers filesystem access, Filesystem IndexedDB in, IndexedDB list of closed variables, Closures manifest list, Events postMessage() in, A Pattern for Reuse of Multithread Processing <progress> tag support, Tags for Applications Speed Tracer, JavaScript Tools You Should Know storage viewer, The localStorage and sessionStorage Objects, Events web socket support, Web Sockets web worker support in, A Pattern for Reuse of Multithread Processing Church, Alonzo, Lambda Functions Are Powerful click command (Selenium), Selenium Commands client-side data storage, Local Storage Clojure, Web Socket Example ClojureScript, JavaScript Tools You Should Know close() method, The Worker Environment, The Web Sockets Interface closures, Nonblocking I/O and Callbacks, Closures, Closures, Array Iteration Operations, IndexedDB cloud test farms, Automatically Running Tests CoffeeScript, JavaScript Tools You Should Know color form input, New Form Types composite functions, Functional Programming config files, web server, Introduction to the Manifest File confirm() method, Nonblocking I/O and Callbacks content delivery network, Taking It Offline controls attribute, Audio and Video cookies, The localStorage and sessionStorage Objects, Using localStorage in ExtJS, Web Sockets CouchDB, IndexedDB Cranley, Ronan, JavaScript’s Triumph createObjectURL() method, Blobs Crockford, Douglas, JavaScript’s Triumph, The Power of JavaScript, JavaScript Tools You Should Know cross-platform web development, Developing Web Applications CruiseControl, Selenese Command Programming Interface currying, Currying and Object Parameters D data record example, IndexedDB data storage, Adding Power to Web Applications, Local Storage, jStore data trees, You Can Extend Objects, Too databases, Adding Power to Web Applications, Local Storage, IndexedDB, Deleting Data, IndexedDB, Adding and Updating Records, Retrieving Data, Deleting Data adding and updating records, Adding and Updating Records deleting data from, Deleting Data IndexedDB, Adding Power to Web Applications, IndexedDB, Deleting Data retrieving data from, Retrieving Data SQLite, Local Storage DataStore object (Ajax), Nonblocking I/O and Callbacks date form input, New Form Types dblclick command (Selenium), Selenium Commands debugging, JavaScript’s Triumph, Lambda Functions Are Powerful, Debugging Manifest Files, Splitting Up Work Through Web Workers, Testing and Debugging Web Workers, JavaScript Tools You Should Know Firebug, JavaScript’s Triumph, Lambda Functions Are Powerful and JSMin, JavaScript Tools You Should Know manifest files, Debugging Manifest Files and Web Workers, Splitting Up Work Through Web Workers, Testing and Debugging Web Workers $.decode() method (Hive API), Libraries for Web Workers decoratedFib(), Expanding Functions with Prototypes deepEqual() method, Testing with QUnit defer() method, Offline Loading with a Data Store degradation, handling, Testing JavaScript Applications deleteEach() method, Deleting Data doConditionalLoad() method, Offline Loading with a Data Store DOM (Document Object Model), The Web As Application Platform, Developing Web Applications, Testing JavaScript Applications downloading events, Events Drag and Drop widget, JavaScript Tools You Should Know drag-and-drop, Selenium Commands, Files, Drag-and-Drop Dragonfly, Opera, JavaScript’s Triumph, A Pattern for Reuse of Multithread Processing drop event (DOM), Drag-and-Drop drop handler example, Working with Files drop zone example, Putting It All Together DSt library, DSt E Eclipse, JavaScript Tools You Should Know ECMAScript objects, The Worker Environment Emacs JS2 mode, JavaScript Tools You Should Know email form input, New Form Types enclosing scope, Lambda Functions Are Powerful $.encode() method (Hive API), Libraries for Web Workers engines available in JQuery, jStore equal() method, A Simple Example, Testing with QUnit Erlang Yaws, Web Socket Example, Erlang Yaws errors, Retrieving Data, Events, Testing and Debugging Web Workers, Geolocation ETags, Offline Loading with a Data Store event loops, Splitting Up Work Through Web Workers, JavaScript Tools You Should Know Event Machine, Ruby, Ruby Event Machine Events specs, Microdata every() method, Array Iteration Operations expanding functions with prototypes, Expanding Functions with Prototypes, Expanding Functions with Prototypes extending base types, Prototypes and How to Expand Objects ExtJS, JavaScript’s Triumph, Lambda Functions Are Powerful, Currying and Object Parameters, Selenium Commands, Using localStorage in ExtJS button with function as handler, Lambda Functions Are Powerful click event problems, Selenium Commands currying parameters in, Currying and Object Parameters library, JavaScript’s Triumph localStorage object in, Using localStorage in ExtJS F FALLBACK section, manifest, Structure of the Manifest File feature detection, A Pattern for Reuse of Multithread Processing Fibonacci sequences, calculating, Expanding Functions with Prototypes FileReader API, Working with Files files, Adding Power to Web Applications, Files, Filesystem, Debugging Manifest Files FileSystem API, Filesystem filter() method, Array Iteration Operations, You Can Extend Objects, Too Firebug, JavaScript’s Triumph, Lambda Functions Are Powerful, Closures, The localStorage and sessionStorage Objects, Working with Files, Splitting Up Work Through Web Workers, Testing and Debugging Web Workers, Testing and Debugging Web Workers, JavaScript Tools You Should Know anonymous functions, Lambda Functions Are Powerful colorizing in script tag, JavaScript Tools You Should Know debugging web workers in, Testing and Debugging Web Workers developer tools, Testing and Debugging Web Workers editing storage object, The localStorage and sessionStorage Objects full path file names, Working with Files scope chain, Closures and Web Workers, Splitting Up Work Through Web Workers Firefox, Mozilla, Prototypes and How to Expand Objects, Array Iteration Operations, Array Iteration Operations, Selenium, Constructing Tests with the Selenium IDE, The localStorage and sessionStorage Objects, IndexedDB, Blobs, Debugging Manifest Files, Debugging Manifest Files, Worker Communication, Testing and Debugging Web Workers, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing, Web Sockets, Tags for Applications developers’ site, Prototypes and How to Expand Objects, Array Iteration Operations IndexedDB in, IndexedDB iteration methods in, Array Iteration Operations manifest file opt-in issue, Debugging Manifest Files MozBlobBuilder, Blobs MozWebSockets, Web Sockets passing complex JavaScript objects, Worker Communication postMessage() in, A Pattern for Reuse of Multithread Processing <progress> tag support, Tags for Applications Selenium IDE for, Selenium, Constructing Tests with the Selenium IDE, Debugging Manifest Files storage objects in, The localStorage and sessionStorage Objects web workers in, Testing and Debugging Web Workers, A Pattern for Reuse of Multithread Processing FireRainbow, JavaScript Tools You Should Know first class citizens, Lambda Functions Are Powerful, Functional Programming :first-child() CSS selector, New CSS Flanagan, David, The Power of JavaScript flow control, Selenium Commands for loops, alternatives to, Array Iteration Operations forks, Adding Power to Web Applications FormData interface, Uploading Files fractal computation examples, Web Worker Fractal Example, Web Worker Fractal Example Fulton, Jeff, Graphics, Canvas and SVG Fulton, Steve, Graphics, Canvas and SVG function expressions, Lambda Functions Are Powerful function generators, Closures function interceptor example, Expanding Functions with Prototypes Function prototype, Expanding Functions with Prototypes function statements, Lambda Functions Are Powerful functional programming, Functional Programming, Functional Programming, JavaScript Tools You Should Know functions, Lambda Functions Are Powerful, Lambda Functions Are Powerful, Closures, Functional Programming, Functional Programming anonymous, Lambda Functions Are Powerful as first class citizens, Lambda Functions Are Powerful, Functional Programming higher order, Functional Programming inner and outer, Closures functions, expanding with prototypes, Expanding Functions with Prototypes, Expanding Functions with Prototypes G Garret, Jesse James, Functional Programming Gears, Google, Developing Web Applications, Local Storage, Introduction to the Manifest File, Splitting Up Work Through Web Workers offline file access, Introduction to the Manifest File SQLite database, Local Storage worker pool, Splitting Up Work Through Web Workers geolocation, Maps, Geolocation $.get() method (Hive API), Libraries for Web Workers getBlob() method (BlobBuilder), Blobs getCurrentPosition() method, Geolocation getEval() method (Selenese API), Selenese Command Programming Interface getText() method (Selenese API), Selenese Command Programming Interface getXpathCount() method (Selenese API), Selenese Command Programming Interface Gmail, Google’s, Files, Web Sockets Goerzen, John, Functional Programming Google Chrome, Tags for Applications (see Chrome, Google) Google Gears, Developing Web Applications (see Gears, Google) Google search predefined vocabularies, Microdata Google Web Toolkit, JavaScript’s Triumph grid object (ExtJS), Using localStorage in ExtJS H handleButtonClick() function, A Simple Example Haskell, Currying and Object Parameters Head First jQuery (Benedetti & Cranley), JavaScript’s Triumph Hello World testing example, Selenese Command Programming Interface Hickey, Rich, JavaScript Tools You Should Know High Performance JavaScript (Zakas), The Power of JavaScript High Performance Web Sites (Souders), JavaScript Tools You Should Know higher order functions, Functional Programming hoisting, Lambda Functions Are Powerful <hr> tag, Accessibility Through WAI-ARIA, Accessibility Through WAI-ARIA, Accessibility Through WAI-ARIA HTML 5, Putting It All Together, Introduction to the Manifest File, Graphics, Web Worker Fractal Example, New Tags, New CSS, New Form Types, Canvas and SVG, New CSS Canvas, Graphics, Web Worker Fractal Example, Canvas and SVG manifest declaration example, Introduction to the Manifest File new CSS features, New CSS new form types, New Form Types new tags, New Tags, New CSS progress bar, Putting It All Together HTML5 Canvas (Fulton & Fulton), Graphics, Canvas and SVG HTML5 Graphics with SVG & CSS3 (Cagle), Canvas and SVG HTML5 Media (Powers), Audio and Video HTML5 Rocks tutorial, Canvas and SVG HTTP (Hypertext Transfer Protocol), Adding Power to Web Applications, Web Sockets, Erlang Yaws I I/O, Nonblocking I/O and Callbacks IDs, importance of assigning, Selenium if statement, Lambda Functions Are Powerful images, Functional Programming, Blobs, Working with Files, Drag-and-Drop, Filesystem, Filesystem, Debugging Manifest Files, Graphics, Graphics, Graphics, Web Worker Fractal Example, Canvas and SVG appending to documents, Working with Files and Canvas, Graphics editing, Filesystem, Graphics missing, Debugging Manifest Files progressive drawing, Web Worker Fractal Example scaling example, Functional Programming streaming video, Filesystem SVG, Canvas and SVG use of src attribute, Blobs, Graphics user access to, Drag-and-Drop <img> tag, Graphics, Accessibility Through WAI-ARIA importScripts() method, The Worker Environment independent event loops, Splitting Up Work Through Web Workers index() method, Adding Indexes IndexedDB, Adding Power to Web Applications, IndexedDB, Deleting Data indexes, adding/removing, Adding Indexes indexOf() method, Prototypes and How to Expand Objects info() method, Web Worker Fractal Example inner functions, Closures integration testing, Testing JavaScript Applications, Selenium interceptor methods, Expanding Functions with Prototypes Internet Explorer (IE), Microsoft, Array Iteration Operations, IndexedDB, A Pattern for Reuse of Multithread Processing iOS Selenium, testing applications for, Selenium RC and a Test Farm iPad/iPod/iPhone platform, Selenium RC and a Test Farm, A Pattern for Reuse of Multithread Processing isDuplicate() method, Deleting Data isElementPresent() method (Selenese API), Selenese Command Programming Interface isTextPresent() method (Selenese API), Selenese Command Programming Interface itemprop attribute, Microdata itemscope attribute, Microdata itemtype attribute, Microdata J JavaScript, JavaScript’s Triumph, JavaScript’s Triumph, Nonblocking I/O and Callbacks, Lambda Functions Are Powerful, Lambda Functions Are Powerful, Closures, Functional Programming, Functional Programming, Prototypes and How to Expand Objects, Prototypes and How to Expand Objects, Prototypes and How to Expand Objects, Expanding Functions with Prototypes, Prototypes and How to Expand Objects, Expanding Functions with Prototypes, Expanding Functions with Prototypes, Currying and Object Parameters, Array Iteration Operations, You Can Extend Objects, Too, You Can Extend Objects, Too, Testing JavaScript Applications, Splitting Up Work Through Web Workers, Worker Communication, JavaScript Tools You Should Know, JavaScript Tools You Should Know, JavaScript Tools You Should Know array iteration operations, Array Iteration Operations, You Can Extend Objects, Too closures, Closures currying and object parameters, Currying and Object Parameters expanding functions, Expanding Functions with Prototypes, Expanding Functions with Prototypes expanding objects, Prototypes and How to Expand Objects, Prototypes and How to Expand Objects extending objects, You Can Extend Objects, Too function statement and function expression, Lambda Functions Are Powerful functional programming in, Functional Programming, Functional Programming functions act as data in, Lambda Functions Are Powerful helpful tools for, JavaScript Tools You Should Know, JavaScript Tools You Should Know libraries, JavaScript’s Triumph nonblocking I/O and callbacks, Nonblocking I/O and Callbacks passing objects in Firefox, Worker Communication primitives in, Prototypes and How to Expand Objects prototypes, Prototypes and How to Expand Objects, Expanding Functions with Prototypes recent improvements in, JavaScript’s Triumph runtime event loop, Splitting Up Work Through Web Workers runtime model, Testing JavaScript Applications syntax checker, JavaScript Tools You Should Know JavaScript Patterns (Stefanov), The Power of JavaScript JavaScript: The Definitive Guide (Flanagan), The Power of JavaScript JavaScript: The Good Parts (Crockford), JavaScript’s Triumph, The Power of JavaScript, JavaScript Tools You Should Know jQuery, JavaScript’s Triumph, Functional Programming, DSt, jStore, IndexedDB, IndexedDB, Libraries for Web Workers DSt plug-in, DSt Hive extension, Libraries for Web Workers IndexedDB plug-in, IndexedDB, IndexedDB jStore plug-in, jStore library, JavaScript’s Triumph, Functional Programming jQuery Cookbook (Lindley), JavaScript’s Triumph JS2 mode, Emacs, JavaScript Tools You Should Know JSBeautifier, JavaScript Tools You Should Know JSLint, The Power of JavaScript, JavaScript Tools You Should Know JSMin, JavaScript Tools You Should Know JSON manifest file, Introduction to the Manifest File JsonStore object, Offline Loading with a Data Store jStore plug-in, jStore L Lambda Calculus, Lambda Functions Are Powerful lambda functions, Lambda Functions Are Powerful lastIndexOf(), Prototypes and How to Expand Objects libraries, JavaScript’s Triumph, Libraries for Web Workers Lindley, Cody, JavaScript’s Triumph Lisp lambdas, Lambda Functions Are Powerful list recursion, Functional Programming list test examples, Testing JavaScript Applications load() method (JSON), Offline Loading with a Data Store local data storage, Adding Power to Web Applications, Local Storage, jStore local state provider, ExtJS, Using localStorage in ExtJS localStorage object, The localStorage and sessionStorage Objects, Using localStorage in ExtJS, Storing Changes for a Later Server Sync location object, The Worker Environment loops, Array Iteration Operations, Selenium Commands, Splitting Up Work Through Web Workers, Splitting Up Work Through Web Workers, A Pattern for Reuse of Multithread Processing for, Array Iteration Operations independent event, Splitting Up Work Through Web Workers runtime event, Splitting Up Work Through Web Workers and Selenium, Selenium Commands while, A Pattern for Reuse of Multithread Processing M macros, recording web, Selenium Mandelbrot computation examples, Web Worker Fractal Example, Web Worker Fractal Example manifest file, Adding Power to Web Applications, Introduction to the Manifest File, Debugging Manifest Files map() method, Array Iteration Operations, You Can Extend Objects, Too match() method, Prototypes and How to Expand Objects McCarthy, John, Lambda Functions Are Powerful MD5 checksum, Updates to the Manifest File memory leaks, Selenium Commands <meter> tag, Tags for Applications microdata, Microdata Microsoft Internet Explorer, Array Iteration Operations, IndexedDB, A Pattern for Reuse of Multithread Processing minification, JavaScript Tools You Should Know MongoDB, IndexedDB mouseDown command (Selenium), Selenium Commands mouseOver command (Selenium), Selenium Commands mouseUp command (Selenium), Selenium Commands MozBlobBuilder, Blobs Mozilla Firefox, Prototypes and How to Expand Objects (see Firefox, Mozilla) mozSlice() method (Firefox), Blobs MozWebSockets, Web Sockets N name/value pairs, Currying and Object Parameters navigator object, The Worker Environment .NET/CLR, Web Socket Example NETWORK section, manifest, Structure of the Manifest File node trees, You Can Extend Objects, Too Node.js, Web Sockets, Web Socket Example, JavaScript Tools You Should Know nonblocking I/O, Nonblocking I/O and Callbacks :not() CSS selector, New CSS notDeepEqual() method, Testing with QUnit notEqual() method, Testing with QUnit notStrictEqual() method, Testing with QUnit noupdate events, Events :nth-child() CSS selector, New CSS number form input, New Form Types numbers, Lambda Functions Are Powerful, Prototypes and How to Expand Objects, Prototypes and How to Expand Objects, Expanding Functions with Prototypes, Expanding Functions with Prototypes, Expanding Functions with Prototypes, Array Iteration Operations cubing example, Expanding Functions with Prototypes Fibonacci calculation examples, Expanding Functions with Prototypes, Expanding Functions with Prototypes as objects, Prototypes and How to Expand Objects squaring examples, Lambda Functions Are Powerful, Prototypes and How to Expand Objects, Array Iteration Operations O object parameters, Currying and Object Parameters object stores, IndexedDB, IndexedDB, Retrieving Data objects, extending, You Can Extend Objects, Too Offer-Aggregates specs, Microdata Offers specs, Microdata offline use, Local Storage, Offline Loading with a Data Store, Offline Loading with a Data Store, Storing Changes for a Later Server Sync, Introduction to the Manifest File, Debugging Manifest Files data access, Local Storage loading with data store, Offline Loading with a Data Store, Offline Loading with a Data Store manifest file, Introduction to the Manifest File, Debugging Manifest Files storing changes, Storing Changes for a Later Server Sync ok() method, Testing with QUnit onclose() method, The Web Sockets Interface onmessage() method, Using Web Workers, Web Worker Fractal Example, A Pattern for Reuse of Multithread Processing onopen() method, The Web Sockets Interface open command (Selenium), Selenium Commands Opera Dragonfly, JavaScript’s Triumph, A Pattern for Reuse of Multithread Processing Organizations specs, Microdata outer functions, Closures O’Reilly Answers website, The Power of JavaScript O’Sullivan, Bryan, Functional Programming P parameter blocks, Currying and Object Parameters path() method, You Can Extend Objects, Too pattern for reuse of multithread processing, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing Payne, Alex, Functional Programming People specs, Microdata persistent local storage, Local Storage PhoneGap, Developing Web Applications PHP, Lambda Functions Are Powerful phpUnderControl, Selenese Command Programming Interface PHPUnit testing framework, Automatically Running Tests, Selenese Command Programming Interface pixel, drawing a, Web Worker Fractal Example PollenJS library, Libraries for Web Workers populate_form() method (DSt), DSt populating (example), Prototypes and How to Expand Objects port 443 (wss), Setting Up a Web Socket port 80 (ws), Setting Up a Web Socket port 8080, Web Socket Example $.post() method (Hive API), Libraries for Web Workers postMessage() method, Using Web Workers, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing Powers, Shelley, Audio and Video PreloadStore object (JSON), Offline Loading with a Data Store pretty printer example, JavaScript Tools You Should Know primitives in JavaScript, Prototypes and How to Expand Objects Products specs, Microdata Programming Scala (Wampler & Payne), Functional Programming progress events, Events progress indicator examples, Putting It All Together, Tags for Applications <progress> tag, Tags for Applications prompt() method, Nonblocking I/O and Callbacks prototype object, Prototypes and How to Expand Objects prototypes, expanding functions with, Expanding Functions with Prototypes, Expanding Functions with Prototypes Q query access, IndexedDB QUnit, Testing JavaScript Applications, QUnit, Testing with QUnit, Running QUnit from Selenium R race conditions, IndexedDB, Splitting Up Work Through Web Workers raises() method, Testing with QUnit rar files, Drag-and-Drop RC server, Selenium, Selenium readAsArrayBuffer() method (FileReader), Working with Files readAsBinaryString() method (FileReader), Working with Files readAsText() method (FileReader), Working with Files readDataAsURL() method (FileReader), Working with Files Real World Haskell (Goerzen & Stewart), Functional Programming recall() method (DSt), DSt reduce(), reduceRight() methods, Array Iteration Operations refresh command (Selenium), Selenium Commands remove() method, Deleting Data replace() method, Prototypes and How to Expand Objects required attribute (forms), New Form Types Resig, John, JavaScript’s Triumph reuse of multithread processing, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing Review-Aggregates specs, Microdata Reviews specs, Microdata revokeBlobURL() method, Blobs Rhino, JavaScript Tools You Should Know role attribute, Accessibility Through WAI-ARIA route finder, Maps Ruby, Web Socket Example Ruby Event Machine, Ruby Event Machine run function example, A Pattern for Reuse of Multithread Processing run() method, Web Worker Fractal Example running average example, Array Iteration Operations runtime model, JavaScript, Testing JavaScript Applications S Safari Nightly builds, Blobs Safari, Apple’s, JavaScript’s Triumph, A Pattern for Reuse of Multithread Processing, Libraries for Web Workers, Web Sockets same origin policy, The localStorage and sessionStorage Objects, IndexedDB sandboxed environment, Developing Web Applications, Filesystem save queue examples, Storing Changes for a Later Server Sync Scala, Web Socket Example Scalable Vector Graphics, Canvas and SVG scaling images, Functional Programming scope, Lambda Functions Are Powerful, Closures <script> tag, The Worker Environment search form input, New Form Types Selenese, Selenium Commands, Selenese Command Programming Interface, Selenese Command Programming Interface Selenium, Testing JavaScript Applications, Selenium, Selenium, Selenium, Selenium Commands, Selenium Commands, Selenium Commands, Constructing Tests with the Selenium IDE, Constructing Tests with the Selenium IDE, Automatically Running Tests, Automatically Running Tests, Selenese Command Programming Interface, Selenese Command Programming Interface, Running QUnit from Selenium, Drag-and-Drop automatically running tests, Automatically Running Tests, Automatically Running Tests commands, Selenium Commands, Selenium Commands constructing tests, Constructing Tests with the Selenium IDE example tests, Selenium IDE, Selenium, Constructing Tests with the Selenium IDE location options, Selenium Commands no drag-and-drop, Drag-and-Drop running QUnit from, Running QUnit from Selenium Selenese, Selenese Command Programming Interface, Selenese Command Programming Interface test table, Selenium Selenium Grid, Automatically Running Tests Selenium RC server, Selenium, Selenium RC and a Test Farm self object, The Worker Environment Sencha ExtJS library, JavaScript’s Triumph send(“data”) method, The Web Sockets Interface server delay, Developing Web Applications, Web Sockets server polling, Web Sockets server-side testing, Testing JavaScript Applications, Testing JavaScript Applications, Selenese Command Programming Interface sessionStorage object, The localStorage and sessionStorage Objects, Using localStorage in ExtJS setInterval() method, Expanding Functions with Prototypes, The Worker Environment setTimeout() method, Expanding Functions with Prototypes, Testing with QUnit, The Worker Environment, A Pattern for Reuse of Multithread Processing, A Pattern for Reuse of Multithread Processing setVersion transaction, Adding Indexes side effects, Functional Programming single-step mode, Selenium sleep() method, Selenese Command Programming Interface slice() method, Prototypes and How to Expand Objects, Blobs slider, form, New Form Types smartphones, Developing Web Applications some() method, Array Iteration Operations Souders, Steve, JavaScript Tools You Should Know speech input type, New Form Types Speed Tracer, JavaScript Tools You Should Know speed, data storage and, Local Storage split() method, Prototypes and How to Expand Objects SQL Injection attacks, IndexedDB SQLite versus IndexedDB, IndexedDB squaring numbers example, Prototypes and How to Expand Objects src attribute, Audio and Video StackOverflow website, The Power of JavaScript startWorker() method, Web Worker Fractal Example static data storage, Local Storage Stefanov, Stoyan, The Power of JavaScript step through, Selenium, Testing and Debugging Web Workers Stewart, Donald Bruce, Functional Programming stock price examples, Web Socket Example, Ruby Event Machine stop() method, A Pattern for Reuse of Multithread Processing storage events, The localStorage and sessionStorage Objects storage viewer widget, The localStorage and sessionStorage Objects $.storage() method (Hive API), Libraries for Web Workers store() method (DSt), DSt store_form() method (DSt), DSt strictEqual() method, Testing with QUnit string token replacement, Prototypes and How to Expand Objects strings, methods for, Prototypes and How to Expand Objects Structure and Interpretation of Computer Programs (Abelson & Sussman), Functional Programming structured data, query access to, IndexedDB subclassing, Currying and Object Parameters Sussman, Gerald Jay, Functional Programming SVG, Canvas and SVG <svg> tag, Graphics Symfony Yaml Library, Updates to the Manifest File T tar files, Drag-and-Drop TCP socket, Web Socket Protocol TCP/IP sockets, Web Sockets tel form input, New Form Types test machines, Automatically Running Tests test suites, Testing JavaScript Applications, QUnit, Testing with QUnit, Selenium, Selenium RC and a Test Farm, Selenium, Selenium, Running QUnit from Selenium programming language based, Selenium QUnit, QUnit, Testing with QUnit, Selenium, Running QUnit from Selenium Selenium, Selenium, Selenium RC and a Test Farm server-side, Testing JavaScript Applications Test-driven development, Testing JavaScript Applications, Testing JavaScript Applications thread safety, Splitting Up Work Through Web Workers threads, Adding Power to Web Applications time form input, New Form Types title attribute, Accessibility Through WAI-ARIA transaction object, database, IndexedDB transaction.abort() method (jQuery), IndexedDB transaction.done() method (jQuery), IndexedDB True Type font files, New CSS type command (Selenium), Selenium Commands U undefined value, Functional Programming unit testing, Testing JavaScript Applications update() method (IndexedDB), Adding and Updating Records updateEach() method (IndexedDB), Adding and Updating Records uploading files, Uploading Files URLs, QUnit, Blobs, Working with Files, Structure of the Manifest File, Events, Events, Debugging Manifest Files, The Web Sockets Interface adding ?


pages: 924 words: 196,343

JavaScript & jQuery: The Missing Manual by David Sawyer McFarland

Firefox, framing effect, HyperCard, information retrieval, Ruby on Rails, Steve Jobs, web application

, Negating a condition, Nesting Conditional Statements, Negating a condition, Nesting Conditional Statements NOT operator, Negating a condition, Nesting Conditional Statements, Negating a condition, Nesting Conditional Statements Expression Web Designer, Commercial Software external HTML files, loading into web page, Talking to the Web Server, The get() and post() Functions, Using the load() Function, Using the load() Function, The programming, The programming, The programming, The programming, The get() and post() Functions external JavaScript files, External JavaScript Files, External JavaScript Files, External JavaScript Files, External JavaScript Files, External JavaScript Files, External JavaScript Files, Attaching an External JavaScript File, Attaching an External JavaScript File, Using External JavaScript Files, Using External JavaScript Files, Using External JavaScript Files, Incorrect Path to External JavaScript File, Disappearing Variables and Functions, Incorrect Paths Within External JavaScript Files, Disappearing Variables and Functions attaching to web pages, External JavaScript Files, External JavaScript Files, Attaching an External JavaScript File, Attaching an External JavaScript File multiple, order of, External JavaScript Files path errors involving, Incorrect Path to External JavaScript File, Disappearing Variables and Functions, Incorrect Paths Within External JavaScript Files, Disappearing Variables and Functions external links, opening in new window, Opening External Links in a New Window, Opening External Links in a New Window, Opening External Links in a New Window, Opening External Links in a New Window, Opening External Links in a New Window F fadeIn() function, jQuery, Attaching an External JavaScript File, Fading Elements In and Out fadeOut() function, jQuery, Acting on Each Element in a Selection, Fading Elements In and Out fadeTo() function, jQuery, Fading Elements In and Out, Traversing the DOM fadeToggle() function, jQuery, Fading Elements In and Out FancyBox plug-in, Advanced Gallery with jQuery FancyBox, Tutorial: FancyBox Photo Gallery, The Basics, The Basics, Creating a Gallery of Images, The Basics, The Basics, Creating a Gallery of Images, The Basics, The Basics, The Basics, The Basics, Creating a Gallery of Images, Creating a Gallery of Images, Customizing FancyBox, Tutorial: FancyBox Photo Gallery, FancyBox options, FancyBox options, FancyBox options, Styling FancyBox, Styling FancyBox, Styling FancyBox, Styling FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Opening Pages in a Window on the Page, Tutorial: Opening a Page Within a Page, Opening Pages in a Window on the Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page CSS sprites used by, Styling FancyBox customizing, Customizing FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery downloading files for, The Basics, Creating a Gallery of Images, The Basics, Creating a Gallery of Images gallery page for, setting up, The Basics, Creating a Gallery of Images, The Basics, The Basics, Creating a Gallery of Images opening a page within a page, Opening Pages in a Window on the Page, Tutorial: Opening a Page Within a Page, Opening Pages in a Window on the Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page, Tutorial: Opening a Page Within a Page fancybox.png file, Styling FancyBox FAQ (Frequently Asked Questions) tutorial, Tutorial: A One-Page FAQ, The Programming, The Programming, The Programming fields in forms, Form Events, Understanding Forms, Selecting Form Elements, Selecting Form Elements, Getting and Setting the Value of a Form Element, Selecting Form Elements, Selecting Form Elements, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Determining Whether Buttons and Boxes Are Checked, Determining Whether Buttons and Boxes Are Checked, Focus, Focus, Change, Focusing the First Field in a Form, Disabling and Enabling Fields, Hiding and Showing Form Options, Hiding and Showing Form Options, Tutorial: Basic Form Enhancements, Hiding and Showing Form Options, Tutorial: Basic Form Enhancements, Focusing a Field, Disabling Form Fields, Hiding Form Fields, Hiding Form Fields, Advanced Validation, Advanced error messages changing value of, Change checking status of, Determining Whether Buttons and Boxes Are Checked disabling, Disabling and Enabling Fields focus on, Form Events, Focus, Focus, Focusing the First Field in a Form, Focusing a Field getting value of, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Determining Whether Buttons and Boxes Are Checked hiding, Hiding and Showing Form Options, Hiding and Showing Form Options, Hiding Form Fields, Hiding Form Fields selecting, Selecting Form Elements, Getting and Setting the Value of a Form Element, Selecting Form Elements, Getting and Setting the Value of a Form Element setting value of, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element, Getting and Setting the Value of a Form Element showing, Hiding and Showing Form Options, Tutorial: Basic Form Enhancements, Tutorial: Basic Form Enhancements tags for, Understanding Forms, Selecting Form Elements, Selecting Form Elements validating, Advanced Validation, Advanced error messages filters for selectors, jQuery Filters, Selecting Form Elements find() function, jQuery, Tutorial: Using the get() Function, Optimizing Your Selectors, Traversing the DOM, Traversing the DOM Firebug plug-in, The Firefox JavaScript Console, Replacing and Removing Selections, Disappearing Variables and Functions, Installing and Turning On Firebug, Installing and Turning On Firebug, Using console.log() to Track Script Progress, Using console.log() to Track Script Progress, Tutorial: Using the Firebug Console, Tutorial: Using the Firebug Console, Tutorial: Using the Firebug Console, Tutorial: Using the Firebug Console, More Powerful Debugging, More Powerful Debugging, More Powerful Debugging, Watching your script installing, Installing and Turning On Firebug Firefox, Tracking Down Errors, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console JavaScript console in, Tracking Down Errors, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console flags, boolean data type used for, Adding a Backup Plan Flash, Introducing Programming Flickr, Introducing JSONP, Tutorial: Adding Flickr Images to Your Site, Constructing the URL, Constructing the URL, A few other options for the public photos feed, Understanding the Flickr JSON Feed, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site images from, adding to web page, Introducing JSONP, Tutorial: Adding Flickr Images to Your Site, Constructing the URL, Constructing the URL, A few other options for the public photos feed, Understanding the Flickr JSON Feed, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site floor() method, Match object, Creating a Random Number focus event, Form Events, Focus, Focus focus for form fields, Form Events, Focus, Focus, Focusing the First Field in a Form, Focusing a Field focus() function, jQuery, Focus, Focusing the First Field in a Form, Focusing a Field focus() method, window object, Use the window reference for loops, For Loops, Do/While Loops, For Loops, Do/While Loops Form plug-in, Adding Google Maps to Your Site form tag, HTML, Enhancing Web Forms, Selecting Form Elements, Understanding Forms, Understanding Forms, Selecting Form Elements forms, Writing Your First JavaScript Program, Form Events, Enhancing Web Forms, Adding Smarts to Your Forms, Understanding Forms, Understanding Forms, Selecting Form Elements, Selecting Form Elements, Form Events, Form Events, Submit, Submit, Click, Adding Smarts to Your Forms, Adding Smarts to Your Forms, Advanced Validation, Advanced error messages events for, Form Events, Form Events, Submit, Click fields in, Selecting Form Elements getting values of, Selecting Form Elements in HTML5, Writing Your First JavaScript Program validating, Advanced Validation, Advanced error messages Frequently Asked Questions (FAQ) tutorial, Tutorial: A One-Page FAQ, The Programming, The Programming functions, jQuery, Chaining functions, Changing Multiple CSS Properties at Once, Anonymous Functions, Anonymous Functions, The hover() event anonymous, Anonymous Functions, Anonymous Functions, The hover() event chaining, Chaining functions, Changing Multiple CSS Properties at Once functions, user-defined in JavaScript, Functions: Turn Useful Code Into Reusable Commands, Tutorial: A Simple Quiz, Functions: Turn Useful Code Into Reusable Commands, Mini-Tutorial, Functions: Turn Useful Code Into Reusable Commands, Functions: Turn Useful Code Into Reusable Commands, Functions: Turn Useful Code Into Reusable Commands, Mini-Tutorial, Mini-Tutorial, Giving Information to Your Functions, Giving Information to Your Functions, Retrieving Information from Functions, Retrieving Information from Functions, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding, Tutorial: A Simple Quiz, A function for selecting a random number calling, Functions: Turn Useful Code Into Reusable Commands creating, Functions: Turn Useful Code Into Reusable Commands, Mini-Tutorial, Mini-Tutorial, Mini-Tutorial for random numbers, A function for selecting a random number naming, Functions: Turn Useful Code Into Reusable Commands returning a value from, Retrieving Information from Functions, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding scope of variables in, Keeping Variables from Colliding, Keeping Variables from Colliding, Keeping Variables from Colliding G get() function, jQuery, The get() and post() Functions, The get() and post() Functions, Tutorial: Using the get() Function, Overview, The programming, The programming getDate() method, Date object, Dates and Times getDay() method, Date object, Dates and Times, Getting the Day of the Week getElementById() method, document object, Understanding the Document Object Model getElementsByTagName() method, document object, Understanding the Document Object Model getFullYear() method, Date object, Dates and Times getHours() method, Date object, Dates and Times, Getting the Month, Getting the Time, Getting the Time, Padding single digits, Creating a Date Other Than Today getJSON() function, jQuery, JSON, Complex JSON Objects, Complex JSON Objects, Introducing JSONP, Using the $.getJSON() Function getMinutes() method, Date object, Dates and Times, Getting the Day of the Week, Getting the Time, Getting the Time, Padding single digits, Padding single digits getMonth() method, Date object, Dates and Times, Getting the Month getSeconds() method, Date object, Dates and Times, Getting the Day of the Week, Getting the Time, Getting the Time, Padding single digits getTime() method, Date object, Dates and Times global variables, Keeping Variables from Colliding, Tutorial: A Simple Quiz, Keeping Variables from Colliding, Tutorial: A Simple Quiz GoMap plug-in, Adding Google Maps to Your Site, GoMap Tutorial, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Setting a Location for the Map, Other GoMap Options, Setting a Location for the Map, Setting a Location for the Map, Setting a Location for the Map, Other GoMap Options, Other GoMap Options, Other GoMap Options, Other GoMap Options, Other GoMap Options, Other GoMap Options, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Information Windows to Markers, GoMap Tutorial, GoMap Tutorial, GoMap Tutorial, GoMap Tutorial information windows, adding, Adding Information Windows to Markers map location, setting, Setting a Location for the Map, Other GoMap Options, Setting a Location for the Map, Other GoMap Options markers in map, adding, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers, Adding Markers navigation controls, removing, Other GoMap Options scale of, Other GoMap Options marker for, adding, Other GoMap Options type of map, Other GoMap Options, Other GoMap Options setting, Other GoMap Options switching between, Other GoMap Options using, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site Google Docs (web site), What Is JavaScript?

., Using External JavaScript Files titlePosition option, FancyBox, FancyBox options toFixed() method, JavaScript, Formatting Currency Values toggle event, The toggle() Event toggleClass() function, jQuery, Classes toLowerCase() method, strings, Changing the Case of a String toolbar property, windows, Window Properties tooltips, Adding Tooltips, Tooltips Tutorial, The HTML, The HTML, The HTML, The HTML, The HTML, The CSS, The CSS, The CSS, The JavaScript, The JavaScript, The JavaScript, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial CSS styles for, The CSS div tag for, The HTML, The HTML, Tooltips Tutorial hiding when page loads, The CSS, The JavaScript, Tooltips Tutorial mouseover event for, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial trigger for, The HTML, The HTML, Tooltips Tutorial tutorial for, The JavaScript, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial top property, windows, Window Properties toUpperCase() method, strings, Changing the Case of a String, Searching a String: indexOf() Technique, Changing the Case of a String, Searching a String: indexOf() Technique transitionIn option, FancyBox, FancyBox options transitionOut option, FancyBox, FancyBox options trigger, for tooltip, Adding Tooltips, The HTML, Tooltips Tutorial troubleshooting, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, Displaying the Internet Explorer 9 Console, Displaying the Internet Explorer 9 Console, Opening the Chrome JavaScript Console, Accessing the Safari Error Console, Accessing the Safari Error Console, Accessing the Safari Error Console, Accessing the Safari Error Console, Tips for Writing Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements, Non-Closed Pairs Chrome JavaScript Console for, Opening the Chrome JavaScript Console, Accessing the Safari Error Console conditional statements, Tips for Writing Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements Firefox JavaScript Console for, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console, The Firefox JavaScript Console Internet Explorer 9 Console for, Displaying the Internet Explorer 9 Console, Displaying the Internet Explorer 9 Console logic errors, Non-Closed Pairs Safari Error Console for, Accessing the Safari Error Console, Accessing the Safari Error Console, Accessing the Safari Error Console tutorials, Tutorial: Using Variables to Create Messages, Arrays, Tutorial: Using Variables to Create Messages, Tutorial: Asking for Information, Arrays, Arrays, Tutorial: Writing to a Web Page Using Arrays, A Quick Object Lesson, A Quick Object Lesson, A Quick Object Lesson, Tips for Writing Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements, Functions: Turn Useful Code Into Reusable Commands, Giving Information to Your Functions, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Automatic Pull Quotes, Programming, Overview, Overview, Programming, Programming, Programming, Tutorial: Introducing Events, Tutorial: Introducing Events, Tutorial: Introducing Events, Tutorial: Introducing Events, More jQuery Event Concepts, Tutorial: Login Slider, The Programming, Tutorial: Animated Dashboard, The Programming, The Programming, The Programming, Rollover Images, Tutorial: Adding Rollover Images, Overview of the Task, Overview of the Task, The Programming, The Programming, The Programming, The Programming, Tutorial: Photo Gallery with Effects, Overview of Task, Overview of Task, The Programming, The Programming, The Programming, Advanced Gallery with jQuery FancyBox, Styling FancyBox, Styling FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery, Tutorial: Basic Form Enhancements, Disabling Form Fields, Disabling Form Fields, Hiding Form Fields, Basic Validation, Basic Validation, Advanced Validation, Advanced Validation, Advanced Validation, Validating Checkboxes and Radio Buttons, Validating Checkboxes and Radio Buttons, Tabbed Panels Tutorial, Adding a Content Slider to Your Site, Tabbed Panels Tutorial, Tabbed Panels Tutorial, Tabbed Panels Tutorial, Adding a Content Slider to Your Site, The JavaScript, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial, Overview, The programming, The programming, Tutorial: Using the get() Function, Overview, The programming, Understanding the Flickr JSON Feed, Adding Google Maps to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Adding Google Maps to Your Site, Adding Google Maps to Your Site, GoMap Tutorial, Debugging Tutorial, Debugging Tutorial Ajax, Overview, The programming, The programming, Tutorial: Using the get() Function, Overview, The programming, Tutorial: Adding Flickr Images to Your Site, Adding Google Maps to Your Site animated dashboard, Tutorial: Animated Dashboard, The Programming, The Programming, The Programming arrays, Tutorial: Writing to a Web Page Using Arrays, A Quick Object Lesson, A Quick Object Lesson, A Quick Object Lesson conditional statements, Tips for Writing Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements, Tutorial: Using Conditional Statements CSS selectors, Overview, Programming, Programming debugging, Debugging Tutorial, Debugging Tutorial effects, Tutorial: Login Slider, The Programming, Tutorial: Photo Gallery with Effects events, Tutorial: Introducing Events, Tutorial: Introducing Events, Tutorial: Introducing Events, Tutorial: Introducing Events, More jQuery Event Concepts Flickr, Understanding the Flickr JSON Feed, Adding Google Maps to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Tutorial: Adding Flickr Images to Your Site, Adding Google Maps to Your Site form validation, Basic Validation, Basic Validation, Advanced Validation, Advanced Validation, Advanced Validation, Validating Checkboxes and Radio Buttons, Validating Checkboxes and Radio Buttons forms, Tutorial: Basic Form Enhancements, Disabling Form Fields, Disabling Form Fields, Hiding Form Fields functions, Functions: Turn Useful Code Into Reusable Commands, Giving Information to Your Functions, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz GoMap plug-in, GoMap Tutorial images, Rollover Images, Overview of the Task, Overview of the Task, The Programming, The Programming, The Programming, The Programming, Overview of Task, Overview of Task, The Programming, The Programming, The Programming, Advanced Gallery with jQuery FancyBox, Styling FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery photo gallery, Styling FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery with FancyBox, Styling FancyBox, Tutorial: FancyBox Photo Gallery, Tutorial: FancyBox Photo Gallery pull quotes, Automatic Pull Quotes, Programming, Overview, Programming quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz, Tutorial: A Simple Quiz rollover images, Tutorial: Adding Rollover Images tabbed panels, Tabbed Panels Tutorial, Adding a Content Slider to Your Site, Tabbed Panels Tutorial, Tabbed Panels Tutorial, Tabbed Panels Tutorial, Adding a Content Slider to Your Site tooltips, The JavaScript, Tooltips Tutorial, Tooltips Tutorial, Tooltips Tutorial variables, Tutorial: Using Variables to Create Messages, Arrays, Tutorial: Using Variables to Create Messages, Tutorial: Asking for Information, Arrays, Arrays Twitter plug-in, Adding Google Maps to Your Site type attribute, script tag, How to Add JavaScript to a Page typeof operator, A Quick Object Lesson U U.S. phone numbers, regular expression for, U.S. phone number, Email address, Email address U.S.

Here’s how to install it: Visit http://addons.mozilla.org/firefox/addon/firebug using Firefox, and click the “Add to Firefox” button. To protect you from accidentally installing a malicious extension, Firefox stops your first attempt at installing the extension. A Software Installation window appears, warning you that malicious software is bad (oh, really?). Don’t worry; Firebug is perfectly safe. Click the Install Now button. Firefox installs the extension, but it won’t work until you restart Firefox. A small window appears explaining that very thing. Click the Restart button. Voila, Firebug is installed and ready to use, but first you need to open it. On Windows, choose Firefox→Web Developer→Firebug→Open Firebug or Press F12; on Macs, choose Tools→ Web Developer→Firebug→Enable Firebug. Now you can begin using Firebug to help you debug your scripts. Viewing Errors with Firebug Firebug provides an easier and more useful way to view errors than Firefox’s built-in error console.


pages: 435 words: 62,013

HTML5 Cookbook by Christopher Schmitt, Kyle Simpson

Firefox, Internet Archive, security theater, web application, WebSocket

At the time of this writing, some browsers are starting to visually highlight fields that do not validate on blur when the user exits the input field, but do not display the error message until the form is submitted. Other browsers provide no feedback until the form is submitted. See Table 3-2 for a browser support chart. Table 3-2. Browsers supporting the email, url, and tel input types IE Firefox Chrome Safari Opera iOS Android 10 Platform Preview 2 4.0+ 10+ 4.0+ 11.0+ ✓ ✓ Figure 3-3. The email input field error messaging in Firefox 4 Figure 3-4. The email input field error messaging in Chrome 12 Figure 3-5. The url input field error messaging in Firefox 4 Figure 3-6. The url input field error messaging in the second Internet Explorer Platform Preview Customizing the default error message If you look closely at Figures 3-5 and 3-6, you’ll notice that the default error message varies from browser to browser.

Get the frameBuffer data: var fbData = event.frameBuffer; Set the step increment: var stepInc = (frameBufferLength / channels) / canvas.width; and set the wave amplitude: var waveAmp = canvas.height / 2; Next, reset canvas so the strokes don’t build on top of each other: canvas.width = canvas.width; Finally, build the stroke and set stroke properties: context.beginPath(); context.moveTo(0, waveAmp - fbData[0] * waveAmp); for(var i=1; i < canvas.width; i++){ context.lineTo(i, waveAmp - fbData[i*stepInc] * waveAmp); } context.strokeStyle = "#fff"; Add the stroke to canvas: context.stroke(); } and play the audio: audio.play(); } </script> Discussion Just as generating real-time audio with JavaScript (see Recipe 4.3) is limited to Firefox 4+, so is this method of audio visualization with canvas. This is because only the Mozilla Audio Data API allows you to access the key audio data (in this example, frameBuffer) necessary to create the canvas drawing. Further, this method of audio visualization must run on a web server, and it requires that the audio file reside on that same server due to Firefox security measures (https://wiki.mozilla.org/Audio_Data_API#Security). Note While this recipe makes use of the Mozilla Audio Data API, browsers (including Firefox) may support the Web Audio API from the W3C. For more information, see the specification at https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html.

Solution Add the poster attribute with the placeholder image file path as the value: <video controls width="640" height="360" poster="video_still.png"> <source src="video.mp4" type="video/mp4" /> <source src="video.ogv" type="video/ogg" /> Your device does not support HTML5 video. </video> Discussion Poster images can be a nice user enhancement, especially when the video doesn’t load or can’t be displayed. Consider a single-source .mp4 video viewed in Firefox, as shown in Figure 5-2. Figure 5-2. Since Firefox doesn’t support .mp4 files, the browser displays a dark gray box if there is no poster image specified Unfortunately, different browsers handle poster images differently: Firefox stretches the image to fill the dimensions of the player (see Recipe 5.3). Chrome keeps the image at its original size. Safari displays the poster image until the video data is loaded, at which point it displays the first frame from the video. If the poster image is a different size from the video, the video is resized to match the aspect ratio of the poster image (see Figure 5-3).


pages: 372 words: 67,140

Jenkins Continuous Integration Cookbook by Alan Berg

anti-pattern, continuous integration, Debian, don't repeat yourself, en.wikipedia.org, Firefox, job automation, performance metric, revision control, web application

The reason was that the dependencies in the Maven plugin for Selenium did not like the newer version of Firefox that was installed by an auto-update script. The resolution to the problem was to install the binary for Firefox 3.63 under the Jenkins home directory, and point directly at the binary in pom.xml, replacing: <browser>*firefox</browser> With: <browser>*firefox Path</browser> Where the Path is similar to /var/lib/Jenkins/firefox/firefox-bin. Another cause of issues is the need to create a custom profile for Firefox that includes helper plugins to stop pop ups or the rejection of self-signed certificates. For more complete information, review http://seleniumhq.org/docs/. An alternative to using Firefox as a browser is Chrome. There is a Jenkins plugin that helps provision Chrome across Jenkins nodes (https://wiki.jenkins-ci.org/display/JENKINS/ChromeDriver+plugin).

You will pull in the Jenkins RSS feeds using a Firefox add-on. This allows you to view the build process, while going about your everyday business. Getting ready You will need Firefox 5 or later installed on your computer and an account on at least one Jenkins instance, with a history of running Jobs. A plug for the developers If you like the add-on and want more features in the future, then it is enlightened in the self-interest to donate a few bucks at the add-on author's website. How to do it... Select the Firefox tab at the top-left hand side of the browser. In the Search box (top-right) with the title Search all add-ons, search for Jenkins. Click on the Install button for the Jenkins Build monitor. Restart Firefox. Select the Firefox tab at the top left-hand side of the browser.

A few interesting fixtures to review are listed as follows: RestFixture for REST services:https://github.com/smartrics/RestFixture/wiki Webtestfixtures using Selenium for web-based functional testing:http://sourceforge.net/projects/webtestfixtures/ DBfit, which allows you to test databases:http://gojko.net/fitnesse/dbfit/ See also Testing with Fitnesse Running Selenium IDE tests Selenium IDE allows you to record your clicks within web pages and replay them in Firefox. This is good for functional testing. The test plans are saved in an HTML format. This recipe shows you how to replay the tests automatically using Maven and then Jenkins. It uses an in-memory X server Xvfb (http://en.wikipedia.org/wiki/Xvfb) so that Firefox can be run on an otherwise headless server. Maven runs the tests using Selenium RC, which then acts as a proxy between the tests and the browser. Although we record with Firefox, you can run the tests with the other browser types as well. It is beyond the scope of this chapter to discuss Selenium Grid (http://selenium-grid.seleniumhq.org/), other than to note that Selenium Grid allows you to run Selenium tests in parallel across a number of OSs.


Engineering Security by Peter Gutmann

active measures, algorithmic trading, Amazon Web Services, Asperger Syndrome, bank run, barriers to entry, bitcoin, Brian Krebs, business process, call centre, card file, cloud computing, cognitive bias, cognitive dissonance, combinatorial explosion, Credit Default Swap, crowdsourcing, cryptocurrency, Daniel Kahneman / Amos Tversky, Debian, domain-specific language, Donald Davies, Donald Knuth, double helix, en.wikipedia.org, endowment effect, fault tolerance, Firefox, fundamental attribution error, George Akerlof, glass ceiling, GnuPG, Google Chrome, iterative process, Jacob Appelbaum, Jane Jacobs, Jeff Bezos, John Conway, John Markoff, John von Neumann, Kickstarter, lake wobegon effect, Laplace demon, linear programming, litecoin, load shedding, MITM: man-in-the-middle, Network effects, Parkinson's law, pattern recognition, peer-to-peer, Pierre-Simon Laplace, place-making, post-materialism, QR code, race to the bottom, random walk, recommendation engine, RFID, risk tolerance, Robert Metcalfe, Ruby on Rails, Sapir-Whorf hypothesis, Satoshi Nakamoto, security theater, semantic web, Skype, slashdot, smart meter, social intelligence, speech recognition, statistical model, Steve Jobs, Steven Pinker, Stuxnet, telemarketer, text mining, the built environment, The Death and Life of Great American Cities, The Market for Lemons, the payments system, Therac-25, too big to fail, Turing complete, Turing machine, Turing test, web application, web of trust, x509 certificate, Y2K, zero day, Zimmermann PGP

By laundering it through the firefoxuri: handler an attacker could bypass the controls that Firefox normally placed on such code. URL Web page Browser Firefox Shell Firefox Javascript handler JS Engine Registry URI handlers Figure 76: DFD for presumed (top) and actual (bottom) Firefox URL handling The DFDs for the Firefox URL handling are shown in Figure 76, with the top half of the figure showing the (presumed) threat model in which the URL data comes from an unspecified source that doesn’t require any further checking. The DFD for the actual threat model is shown in the bottom half of the diagram, which gives a much clearer idea of where the data could really be coming from. Even without going to the lengths of creating the second form of the DFD, the simple step of identifying the presence of a trust boundary between the URL source and Firefox would have indicated that the data coming over this path had to be treated with caution.

The awkward certificate-warning process introduced in Firefox 3 and Internet Explorer 8 is a prime example of a phenomenon that social psychologists describe as task focus overriding goal focus, in which users have to expend so much effort focussing on the mechanistic aspects of a particular task that they lose sight of the overall goal. This task-focus induced perceptual narrowing is aptly summed up by one user’s experience with the Firefox 3 certificate warning mechanism, “Firefox makes me jump through so many hoops that all my focus is on getting through the hoops, rather than evaluating security” [572]. This result was echoed in a study into warning dialogs, in which the more obnoxious dialogs, like the certificate warnings introduced in Firefox 3/IE8, caused users to focus on working past the dialog rather than thinking about the underlying security issue.

Although SQL injection is the canonical example of this type of data laundering, another example of this that comes with a nice DFD-based threat analysis is the Firefox URI-handling vulnerability [165][166]. This vulnerability was created through Firefox registering a URI handler for firefoxuri: that would be invoked by specifying the web page to visit as its accompanying URL parameter. This facility might be used in conjunction with the ‘About’ box of an application to take the user to the application’s home page or to implement an online help facility. The problem Threat Modelling 267 with this handler was that you weren’t limited to using just a plain URL but could insert anything you wanted, including Javascript which was then executed by Firefox when it was invoked, allowing an attacker to execute arbitrary (Javascript) code coming from an external source like a web page [167]. The assumption by Firefox was that the data that it was being fed would only come from a trusted source like an application that wanted to redirect the user to the application’s home page and not arbitrary data coming from an untrusted source on the Internet.


pages: 351 words: 123,876

Beautiful Testing: Leading Professionals Reveal How They Improve Software (Theory in Practice) by Adam Goucher, Tim Riley

Albert Einstein, barriers to entry, Black Swan, call centre, continuous integration, Debian, Donald Knuth, en.wikipedia.org, Firefox, Grace Hopper, index card, Isaac Newton, natural language processing, p-value, performance metric, revision control, six sigma, software as a service, software patent, the scientific method, Therac-25, Valgrind, web application

Sisyphus doesn’t install Firefox, but instead can launch any specific previously installed version of Firefox. This is good, in a way, as it allows you to easily substitute custom builds, such as special patched builds or debug builds. Still, it would be cool to just point at an installable binary and say, “Go!”—just pick your build, install it, and start throwing websites at it. Currently, the sequence is: pick an installed Firefox ‖ See “Testing Extensions and Firefox for Memory Leaks with a Debug Build” at https://wiki.mozilla.org/ MozillaQualityAssurance:Home_Page:Firefox_3.0_TestPlan:Leaks:LeakTesting-How-To and “Debugging memory leaks” at https://developer.mozilla.org/En/Debugging_memory_leaks. TESTING ONE MILLION WEB PAGES 299 build, launch Firefox, install extensions, run the tests, exit Firefox, and repeat, a million times if you like.

Example of running JavaScript tests from the CLI windmill 'browser' 'url' jsdir=js_tests_dir ex. windmill firefox http://www.google.com jsdir=js_tests_dir 290 CHAPTER TWENTY-ONE EXAMPLE 21-6. Example of running JavaScript tests from the shell windmill shell 'browser' 'url' Running: At prompt, In [1]: run_js_tests('/path/to/js_tests_dir') Debugging Test Windmill’s most prominent debugging feature is the ability to execute Windmill actions directly from the shell; this allows you to control your browser without even touching it (Example 21-7). EXAMPLE 21-7. Example shell session interacting with the browser zsh% windmill shell firefox http://www.google.com (Start the Windmill server in shell mode) Started ['/Applications/Firefox.app/Contents/MacOS/firefox-bin', '-profile', '/var/folders/YO/YOAvf2hSGt0+VnBIAKuImE+++TM/-Tmp-/tmpy0xq6y.mozrunner', 'http://www.google.com/windmill-serv/start.html'] (Windmill output telling you what was launched and from where) In [1]: from windmill.authoring import WindmillTestClient (Import the Windmill Test Client) In [2]: client = WindmillTestClient(__name__) (Access the Windmill client) In [3]: client.click(name=u"q") (Click on a DOM node in the browser with a name attribute of "q") Out[3]: {u'endtime': u'2009-3-9T18:1:3.813Z', u'method': u'click', u'output': None, u'params': {u'name': u'q', u'uuid': u'101d4630-256b-11de-b49f-002332da2796'}, u'result': True, u'starttime': u'2009-3-9T18:1:3.811Z', u'suite_name': u'windmill.bin.shell_objects', u'version': u'0.1'} (All of the output associated with the click action) In addition to the debugging features, Windmill also has some client-side features built in for debugging the Document Object Model (DOM) and JavaScript.

We linked it with the Spider tool and the top-500 sites framework, and tried it out. It worked great! When we first tried to scale the tests, we simply wanted to find a better way of running the leak tests. We needed something that would start Firefox, load a website, and then quit Firefox. Running a debug build provided the functionally to collect memory leak and assertion information, and to continue testing even if Firefox crashed. We wondered how to save a logfile. It turned out there was a preference to have leak data piped into a logfile. The next challenge was to be able to run this with different versions of Firefox. We had a special TraceMonkey build (TraceMonkey adds native-code compilation to Mozilla’s JavaScript engine) along with trunk, 3.0, and 3.5 builds. We were able to easily bolt this onto Sisyphus. We started running the automated JavaScript tests with Sisyphus.


pages: 779 words: 116,439

Test-Driven Development With Python by Harry J. W. Percival

continuous integration, database schema, Debian, DevOps, don't repeat yourself, Firefox, loose coupling, MVC pattern, platform as a service, pull request, web application, WebSocket

The first test looks like this, and you can type it in using the PythonAnywhere editor just fine: from selenium import webdriver browser = webdriver.Firefox() browser.get('http://localhost:8000') assert 'Django' in browser.title But when you try and run it (in a Bash console), you’ll get an error: $ python3 functional_tests.py Traceback (most recent call last): File "tests.py", line 3, in <module> browser = webdriver.Firefox() File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/webdrive self.binary, timeout), File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/extensio self.binary.launch_browser(self.profile) File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/firefox_ self._wait_until_connectable() File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/firefox_ 409 www.it-ebooks.info self._get_firefox_output()) selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited before we could connect. The output was: Error: no display specified\n' The fix is to use Xvfb, which stands for X Virtual Framebuffer. It will start up a “virtual” display, which Firefox can use even though the server doesn’t have a real one.

www.it-ebooks.info APPENDIX A PythonAnywhere Are you planning to use PythonAnywhere to follow along with this book? Here’s a few notes on how to get things working, specifically with regards to Selenium/Firefox tests, running the test server, and screenshots. If you haven’t already, you’ll need to sign up for a PythonAnywhere account. A free one should be fine. Running Firefox Selenium Sessions with Xvfb The next thing is that PythonAnywhere is a console-only environment, so it doesn’t have a display in which to pop up Firefox. But we can use a virtual display. In Chapter 1, when we write our first ever test, you’ll find things don’t work as expected. The first test looks like this, and you can type it in using the PythonAnywhere editor just fine: from selenium import webdriver browser = webdriver.Firefox() browser.get('http://localhost:8000') assert 'Django' in browser.title But when you try and run it (in a Bash console), you’ll get an error: $ python3 functional_tests.py Traceback (most recent call last): File "tests.py", line 3, in <module> browser = webdriver.Firefox() File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/webdrive self.binary, timeout), File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/extensio self.binary.launch_browser(self.profile) File "/usr/local/lib/python3.3/site-packages/selenium/webdriver/firefox/firefox_ self.

Firstly, the message “AssertionError” isn’t very helpful—it would be nice if the test told us what it actually found as the browser title. Also, it’s left a Firefox window hanging around the desktop, it would be nice if this would clear up for us automatically. One option would be to use the second parameter to the assert keyword, something like: assert 'To-Do' in browser.title, "Browser title was " + browser.title And we could also use a try/finally to clean up the old Firefox window. But these sorts of problems are quite common in testing, and there are some ready-made solutions for us in the standard library’s unittest module. Let’s use that! In functional_tests.py: functional_tests.py. from selenium import webdriver import unittest class NewVisitorTest(unittest.TestCase): # def setUp(self): # self.browser = webdriver.Firefox() def tearDown(self): # self.browser.quit() def test_can_start_a_list_and_retrieve_it_later(self): # # Edith has heard about a cool new online to-do app.


pages: 312 words: 52,762

Gray Hat Python: Python Programming for Hackers and Reverse Engineers by Justin Seitz

Firefox, web application

= "\x00": buffer += byte offset += 1 continue else: break if pattern in buffer: print "Pre-Encrypted: %s" % buffer return DBG_CONTINUE # Quick and dirty process enumeration to find firefox.exe for (pid, name) in dbg.enumerate_processes(): if name.lower() == "firefox.exe": found_firefox = True hooks = utils.hook_container() dbg.attach(pid) print "[*] Attaching to firefox.exe with PID: %d" % pid # Resolve the function address hook_address = dbg.func_resolve_debuggee("nspr4.dll","PR_Write") if hook_address: # Add the hook to the container. We aren't interested # in using an exit callback, so we set it to None. hooks.add( dbg, hook_address, 2, ssl_sniff, None ) print "[*] nspr4.PR_Write hooked at: 0x%08x" % hook_address break else: print "[*] Error: Couldn't resolve hook address." sys.exit(-1) if found_firefox: print "[*] Hooks set, continuing process." dbg.run() else: print "[*] Error: Couldn't find the firefox.exe process." sys.exit(-1) The code is fairly straightforward: It sets a hook on PR_Write, and when the hook gets hit, we attempt to read out an ASCII string pointed to by the second parameter.

Normally to understand how a client or server application interacts with the network, we would use a traffic analyzer like Wireshark.[33] Unfortunately, Wireshark is limited in that it can only see the data post encryption, which obfuscates the true nature of the protocol we are studying. Using a soft hooking technique, we can trap the data before it is encrypted and trap it again after it has been received and decrypted. Our target application will be the popular open-source web browser Mozilla Firefox.[34] For this exercise we are going to pretend that Firefox is closed source (otherwise it wouldn't be much fun now, would it?) and that it is our job to sniff data out of the firefox.exe process before it is encrypted and sent to a server. The most common form of encryption that Firefox performs is Secure Sockets Layer (SSL) encryption, so we'll choose that as the main target for our exercise. In order to track down the call or calls that are responsible for passing around the unencrypted data, you can use the technique for logging intermodular calls as described at http://forum.immunityinc.com/index.php?

The prototype of an exit hook callback function is slightly different in that it also has a ret parameter, which is the return value of the function (the value of EAX): def exit_hook( dbg, args, ret ): # Hook code here return DBG_CONTINUE To illustrate how to use an entry hook callback to sniff pre-encrypted traffic, open up a new Python file, name it firefox_hook.py, and punch out the following code. firefox_hook.py firefox_hook.py from pydbg import * from pydbg.defines import * import utils import sys dbg = pydbg() found_firefox = False # Let's set a global pattern that we can make the hook # search for pattern = "password" # This is our entry hook callback function # the argument we are interested in is args[1] def ssl_sniff( dbg, args ): # Now we read out the memory pointed to by the second argument # it is stored as an ASCII string, so we'll loop on a read until # we reach a NULL byte buffer = "" offset = 0 while 1: byte = dbg.read_process_memory( args[1] + offset, 1 ) if byte !


pages: 141 words: 9,896

Pragmatic Guide to JavaScript by Christophe Porteneuve

barriers to entry, commoditize, domain-specific language, en.wikipedia.org, Firefox, web application, WebSocket

I should confess, though, that my usual debugging cycle goes like this. First, code with either Safari or Firefox. Then verify and adjust (if needed) in “the other one” (either Firefox or Safari) and then in IE8, IE7, and IE6 (in that order). Finally, just to be sure, run a quick check in Opera and Chrome. Thus, I follow the sequence I use for XHTML/CSS development. And just like markup and styling, once you get JavaScript working all right in Safari, Firefox, and the IE set, it usually works like a charm in Chrome and Opera. So, debugging in Opera is a rare need for me. As a final note, know there is a Debug menu you can enable in Opera that gives you direct access to a number of functions reminiscent of Firefox’s Web Developer Toolbar extension or Safari’s Development menu. You can enable it by downloading a configuration file from within Opera.6 B.7 Virtual Machines Are Your Friends Nowadays RAM is cheap.

Syndicating Your Twitter Updates 92 Task 34. Syndicating Your Flickr Updates 94 Task 35. Geocoding a Location and Getting Photos For It 96 Report erratum Download from Wow! eBook <www.wowebook.com>this copy is (P1.0 printing, November 2010) CONTENTS 8 VII Appendices 98 A JavaScript Cheat Sheet 99 B Debugging JavaScript B.1 Here Be Dragons . . . . . . . . . . . . . . . . . . . B.2 Firefox and Firebug . . . . . . . . . . . . . . . . . . B.3 Safari and Web Inspector . . . . . . . . . . . . . . . B.4 IE6, IE7, the IE Toolbar, and Web Developer Express B.5 IE8 and Developer Tools . . . . . . . . . . . . . . . B.6 Opera and Dragonfly . . . . . . . . . . . . . . . . . B.7 Virtual Machines Are Your Friends . . . . . . . . . B.8 The Network May Be Your Enemy . . . . . . . . . 102 102 103 107 109 112 113 114 115 C JavaScript Frameworks C.1 Prototype, script.aculo.us, and Scripty2 C.2 jQuery and jQuery UI . . . . . . . . .

eBook <www.wowebook.com>this copy is (P1.0 printing, November 2010) 26 O BTAINING R EFERENCES TO DOM E LEMENTS 27 Grab an element by its ID. document.getElementById('elementId') $('elementId') $('#elementId') Y.one('#elementId') dojo.byId('elementId') Ext.getDom('elementId') // // // // // // Plain W3C DOM Prototype, MooTools jQuery YUI 3 Dojo Ext JS 3 Grab elements by XPath/CSS selection. Supported syntaxes vary depending on the library, and the W3C Selectors API is available (but blazingly fast) only in recent-enough browsers: Firefox 3.1+, Safari 3.1+, IE8+ (standards mode), Chrome, and Opera 10+. Also, note that all libraries provide some way to specify the context, the root node within which to explore (by default the entire document). Narrowing the context down whenever possible speeds up your code and reduces memory usage. document.querySelectorAll('selectors') $$('selectors') someRootElement.select('selectors') $('selectors') Y.all('selectors') dojo.query('selectors') Ext.query('selectors') // // // // // // // Native (see above) Prototype, MooTools Prototype jQuery YUI 3 Dojo Ext JS 3 Move around (DOM traversals).


pages: 468 words: 233,091

Founders at Work: Stories of Startups' Early Days by Jessica Livingston

8-hour work day, affirmative action, AltaVista, Apple II, Brewster Kahle, business cycle, business process, Byte Shop, Danny Hillis, David Heinemeier Hansson, don't be evil, fear of failure, financial independence, Firefox, full text search, game design, Googley, HyperCard, illegal immigration, Internet Archive, Jeff Bezos, Joi Ito, Justin.tv, Larry Wall, Maui Hawaii, Menlo Park, Mitch Kapor, nuclear winter, Paul Buchheit, Paul Graham, Peter Thiel, Richard Feynman, Robert Metcalfe, Ruby on Rails, Sam Altman, Sand Hill Road, side project, Silicon Valley, slashdot, social software, software patent, South of Market, San Francisco, Startup school, stealth mode startup, Steve Ballmer, Steve Jobs, Steve Wozniak, web application, Y Combinator

C H A P T E 29 R Blake Ross Creator, Firefox Blake Ross and Dave Hyatt started Firefox as a side project while working at the Mozilla Foundation. They were working to revive the struggling Netscape browser, but became frustrated by the constraints imposed on them. So Ross and Hyatt decided to build a browser that they would actually want to use. Working in their spare time, they began developing a new browser that was fast, simple, and reliable. In 2002, they launched the initial version, called Phoenix, and in 2004 they released Firefox 1.0, which was an instant hit. Like a lot of things described in this book, Firefox was something new. It was an open source project run like a startup, both in the concern for the end user and in the attention paid to marketing. The results were impressive: Firefox has cut into the formerly overwhelming market share of Internet Explorer, and dominates among technical users.

Smells like Firefox all over again. Those kinds of comments are so motivating. I love the challenge. We talked to plenty of people at the very beginning of Firefox. It was obvious that people were not happy with their browser, and it was very clear that, if we could do something better, we might be able to get them to use it. Livingston: Do you remember people’s reactions when you gave an early demo of it? Ross: People loved the simplicity and went crazy over tabbed browsing. What’s weird is that I didn’t really talk to anyone I knew personally throughout the course of Firefox development. My parents and my friends—most of them didn’t really know I was working on Firefox until it came out and there was the Business 2.0 article. That’s when everyone was like, “Wait, you work on Firefox?” They knew I “did something” with computers, but . . .

Livingston: Did he leave Apple? Ross: No. He still works on Safari right now. He did Firefox and then went off to Apple. Livingston: So then it was just a few of you. Ross: The Firefox team is always changing. It’s not fair to say there are just a few of us, because we’re based on Mozilla, which obviously has dozens of developers, and there are a lot of developers working on Gecko, the core layout engine. The Firefox team itself—the people worrying about everything wrapped around the engine and working on the separate fork of the code base—was always about four or five different people for the first year. Now there are a lot more, obviously, because it’s the main source tree. All those people that were working on Mozilla now work on Firefox. Livingston: What was the first turning point when you knew you were really onto something?


pages: 305 words: 93,091

The Art of Invisibility: The World's Most Famous Hacker Teaches You How to Be Safe in the Age of Big Brother and Big Data by Kevin Mitnick, Mikko Hypponen, Robert Vamosi

4chan, big-box store, bitcoin, blockchain, connected car, crowdsourcing, Edward Snowden, en.wikipedia.org, Firefox, Google Chrome, Google Earth, Internet of things, Kickstarter, license plate recognition, Mark Zuckerberg, MITM: man-in-the-middle, pattern recognition, ransomware, Ross Ulbricht, self-driving car, Silicon Valley, Skype, Snapchat, speech recognition, Tesla Model S, web application, WikiLeaks, zero day, Zimmermann PGP

They’re crap, because they’re mini versions of the desktop and laptop browsers and lack some of the security and privacy protections the more robust versions have. For example, iPhones ship with Safari, but you might also want to consider going to the online Apple store and downloading the mobile version of Chrome or Firefox, browsers that were designed for the mobile environment. Newer versions of Android do ship with Chrome as the default. All mobile browsers at least support private browsing. And if you use a Kindle Fire, neither Firefox nor Chrome are download options through Amazon. Instead you have to use a few manual tricks to install Mozilla’s Firefox or Chrome through Amazon’s Silk browser. To install Firefox on the Kindle Fire, open the Silk browser and go to the Mozilla FTP site. Select “Go,” then select the file that ends with the extension .apk. Private browsing doesn’t create temporary files, and therefore it keeps your browsing history off your laptop or mobile device.

Perhaps you can avoid collecting such history in the first place. Browsers such as Mozilla’s Firefox, Google’s Chrome, Apple’s Safari, and Microsoft’s Internet Explorer and Edge all offer a built-in alternative way to search anonymously on whatever device you prefer—whether you use a traditional PC or a mobile device. In each case the browser itself will open a new window and not record what you searched or where you went on the Internet during that open session. Shut down the private browser window, and all traces of the sites you visited will disappear from your PC or device. What you exchange for privacy is that unless you bookmark a site while using private browsing, you can’t go back to it; there’s no history—at least not on your machine. As much as you may feel invincible using a private window on Firefox or the incognito mode on Chrome, your request for private website access, like your e-mails, still has to travel through your ISP—your Internet service provider, the company you pay for Internet or cellular service—and your provider can intercept any information that’s sent without being encrypted.

Private browsing doesn’t create temporary files, and therefore it keeps your browsing history off your laptop or mobile device. Could a third party still see your interaction with a given website? Yes, unless that interaction is first encrypted. To accomplish this, the Electronic Frontier Foundation has created a browser plug-in called HTTPS Everywhere.4 This is a plug-in for the Firefox and Chrome browsers on your traditional PC and for the Firefox browser on your Android device. There’s no iOS version at the time of this writing. But HTTPS Everywhere can confer a distinct advantage: consider that in the first few seconds of connection, the browser and the site negotiate what kind of security to use. You want perfect forward secrecy, which I talked about in the previous chapter. Not all sites use PFS. And not all negotiations end with PFS—even if it is offered.


pages: 193 words: 36,189

Html5 Boilerplate Web Development by Divya Manian

en.wikipedia.org, Firefox, Google Chrome, node package manager, pull request, Ruby on Rails, search engine result page

But wait, we are not done yet! We have written all the code, but how about some testing? There are so many variants of browsers out there and it is impossible to test on each and every one of them. Fortunately, it is pretty simple to test on most major versions of browsers. If you are on Windows, I recommend you install the latest versions of Opera, Opera Next, Safari, Chrome, Chrome Canary, Firefox, Firefox Nightly, IE8, and IE10. If you are on Mac, get every browser listed above, except IE. If you are able to afford it, buy a Windows Operating System and install it as a virtual image on Virtual Box (www.virtualbox.org/). Microsoft provides older IEs as virtual images for testing, which you could also install on Virtual Box using ievms (github.com/xdissent/ievms). For a far easier but less rigorous testing option—say when you have not yet finalized your website—try www.browserstack.com or browserling.com.

You can disable them by adding the following code within the head tag in the index.html file: <metahttp-equiv="imagetoolbar" content="false"> Writing CSS3 easier with tools CSS3 is at the bleeding edge. Some properties require what is known as a vendor prefix. For example, the 3D transforms property perspective is implemented as follows, in different browsers: -webkit-perspective //Safari, Chrome -ms-perspective // Internet Explorer perspective // Firefox Only a short while ago, Firefox implemented this property as –moz-perspective, but have since dropped support for the –moz- prefix. As you will come to realize, it is really hard to keep track of which browser requires a prefix and which browser does not, and it is not quite feasible to keep all the sites that we create updated on a regular basis every time a browser adds or drops support for a prefix. To make this easier, we could use abstractions without these prefixes such that a tool that has an updated index of which property requires which prefix could convert them into the required final CSS.

For this, we can use the CSS page-break-inside property that allows you to tell the browser if you prefer these elements to break over two pages or stay within the same page. The code for this is shown in the following code snippet: pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } Do note that page-break-inside is not supported in Firefox, but is available in all other browsers. Rendering tables better By default, putting headings within the thead tag would ensure that the headings get repeated every time a table breaks across two pages. However, only Firefox and Opera have support for this at the moment. In IE, you can do this but you would have to explicitly state it, as stated in the following code snippet: thead { display: table-header-group; /* h5bp.com/t */ } Rendering images better Ideally, we want to prevent table rows and images from breaking across pages, so we use the now familiar page-break-inside property to tell the browser of our preference, as shown in the following code snippet: tr, img { page-break-inside: avoid; } It also does not appear too well, when images run off beyond the page or print cropped while appearing in full on the website.


pages: 400 words: 94,847

Reinventing Discovery: The New Era of Networked Science by Michael Nielsen

Albert Einstein, augmented reality, barriers to entry, bioinformatics, Cass Sunstein, Climategate, Climatic Research Unit, conceptual framework, dark matter, discovery of DNA, Donald Knuth, double helix, Douglas Engelbart, Douglas Engelbart, en.wikipedia.org, Erik Brynjolfsson, fault tolerance, Fellow of the Royal Society, Firefox, Freestyle chess, Galaxy Zoo, Internet Archive, invisible hand, Jane Jacobs, Jaron Lanier, Johannes Kepler, Kevin Kelly, Magellanic Cloud, means of production, medical residency, Nicholas Carr, P = NP, publish or perish, Richard Feynman, Richard Stallman, selection bias, semantic web, Silicon Valley, Silicon Valley startup, Simon Singh, Skype, slashdot, social intelligence, social web, statistical model, Stephen Hawking, Stewart Brand, Ted Nelson, The Death and Life of Great American Cities, The Nature of the Firm, The Wisdom of Crowds, University of East Anglia, Vannevar Bush, Vernor Vinge

We’ve seen how Wikipedia and similar reference wikis use a carefully chosen page structure to modularize. Another approach to modularity is illustrated by the way work on the Firefox web browser is organized. If you’re not familiar with Firefox, it’s a popular alternative to the Internet Explorer web browser. Like Linux, Firefox is an open source project. But the Firefox developers organize their work using a different approach from that of both Linux and Wikipedia. In particular, they organize much of their work using a tool known as an issue tracker. To understand how the issue tracker works, imagine you’re a user of Firefox who’s run into a bug. For example, a bug I’ve sometimes noticed is this: in my list of Firefox bookmarks, the little pictures (called favicons) alongside my bookmarks sometimes get mixed up. That is, the wrong picture will show up beside a bookmark, or seemingly random favicons from other sites will show up for no apparent reason.

Anyway, having noticed this bug, you decide to help the Firefox project out by reporting it. To do this, you visit Firefox’s online issue tracker, a website where you can enter a description of the problem you’re having, and any other details that might come in handy to people trying to fix the bug: what webpage you were browsing when you noticed the bug, what operating system you use, what version of Firefox, and so on. I asked you to imagine doing this, but actually you don’t need to imagine it. I checked the Firefox issue tracker, and someone going by the name Bob did exactly what I’ve just described on January 11, 2008. Once he submitted his report for the favicon bug, it quickly made its way to the issue tracker’s list of “Hot Bugs.” The Hot Bug list is Firefox Central Station, with many of the developers who work on Firefox watching the list closely.

p 53: The Million Penguins blog is at http://www.amillionpenguins.com/blog/, and has links to other resources associated with the Million Penguins project, including the wiki used to write the novel. I learned of the project from [139], which ran the same excerpt from the novel I have used. p 55: Firefox’s online issue tracker may be found at http://bugzilla.mozilla.org. p 55: The favicon bug in Firefox is described at https://bugzilla.mozilla.org/show_bug.cgi?id=411966. p 56 The issue tracker isn’t just for fixing bugs, it’s also used to propose and implement new features: In fact, the issue tracker is just one of several ways in which Firefox developers can propose new features. Other forums used to propose new features include an online mailing list, a wiki, and even a weekly conference phone call of Firefox developers. p 58 more than a billion lines: This and the estimate of the rate of code growth are conservative estimates, based on work by Deshpande and Riehle [51], current as of the end of 2006.


pages: 680 words: 157,865

Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design by Diomidis Spinellis, Georgios Gousios

Albert Einstein, barriers to entry, business intelligence, business process, call centre, continuous integration, corporate governance, database schema, Debian, domain-specific language, don't repeat yourself, Donald Knuth, en.wikipedia.org, fault tolerance, Firefox, general-purpose programming language, iterative process, linked data, locality of reference, loose coupling, meta analysis, meta-analysis, MVC pattern, peer-to-peer, premature optimization, recommendation engine, Richard Stallman, Ruby on Rails, semantic web, smart cities, social graph, social web, SPARQL, Steve Jobs, Stewart Brand, traveling salesman, Turing complete, type inference, web application, zero-coupon bond

Taking the same techniques even further, developers can replace the standard Firefox chrome altogether and radically reshape the entire user interface—to adapt it for use on mobile devices, for example. Like Eclipse plug-ins, Firefox chrome packages include a significant amount of metadata. And, resembling Eclipse’s Plug-in Development Environment plug-in, there is a Firefox extension to help people write Firefox extensions. So there is still a significant amount of work required up front before one can extend or fix Firefox. However, Firefox’s automatic display management and simplified event handling mean that the effort required is still not as high as that needed to write an Eclipse plug-in. Firefox’s developers are working to improve the performance of its JavaScript implementation. Although this obviously helps users visiting JavaScript-heavy websites, it also allows the Firefox developers to migrate more and more of the browser itself from C++ to JavaScript, a much more comfortable and flexible language for the problem.

As in Emacs, the process of dispatching input events to JavaScript code is managed by the browser. Firefox takes care of deciding which element of the web page an event was directed at, finds an appropriate handler, and invokes it. However, Firefox takes the ideas behind these modern web applications a bit further: Firefox’s own user interface is implemented using the same underlying code that displays web pages and handles their interactions. A set of packages known as chrome describe the interface’s structure and style, and include JavaScript code to bring it to life.[57] This architecture allows third-party developers to write add-ons that extend Firefox’s user interface with new chrome packages. Taking the same techniques even further, developers can replace the standard Firefox chrome altogether and radically reshape the entire user interface—to adapt it for use on mobile devices, for example.

versus design, Architecture Versus Design asynchronous I/O, Asynchronous I/O Guardian operating system, Asynchronous I/O asynchronous notifications, The Changing Shape of Xen event channels in Xen, The Changing Shape of Xen audio architecture, First Steps into Design Town filters and pipelines, First Steps into Design Town auditing, Flexible Auditing and Support JPC, Flexible Auditing and Support authentication, A Simple Web Service Authentication Handshake Facebook Platform, A Simple Web Service Authentication Handshake automatic propagation, Principles, Properties, and Structures defined, Principles, Properties, and Structures B batching, Method Call Batching method calls, Method Call Batching beans files, Modules and Launcher Lifetouch, Modules and Launcher binding, Acknowledgments (see dynamic binding) bindings, Bindings Lifetouch, Bindings Blaauw, Gerrit, Creating a Software Architecture on complexity, Creating a Software Architecture board layouts, Mechanical Layout Tandem computers, Mechanical Layout boot image runner, The Boot Image Runner and VM.boot Jikes RVM, The Boot Image Runner and VM.boot bootstrapping, Bootstrapping a Self-Hosting Runtime, The Boot Image Runner and VM.boot self-hosting runtimes, Bootstrapping a Self-Hosting Runtime, The Boot Image Runner and VM.boot Brooks, Fred, Creating a Software Architecture on complexity and conceptual integrity, Creating a Software Architecture buffers, Emacs in Use, The Model: Buffers GNU Emacs, Emacs in Use, The Model: Buffers buildability, Principles, Properties, and Structures, Creating a Software Architecture as an architectural concern, Creating a Software Architecture defined, Principles, Properties, and Structures bytecode manipulation, Bytecode manipulation JVM, Bytecode manipulation C cache, The Perils of Protected Mode, Class Loading and Unloading, but on a Big Scale, The Akonadi Architecture Akonadi, The Akonadi Architecture HotSpot code cache, Class Loading and Unloading, but on a Big Scale lookup caching, The Perils of Protected Mode Channel Service, Communication Services Project Darkstar, Communication Services channels, The Changing Shape of Xen event channels, The Changing Shape of Xen Charybdis, Assessing the Functional Approach reusability, Assessing the Functional Approach checkpointing, Process Pairs, Revisited Tandem computers, Process Pairs, Revisited chips, Context Moore’s law and scaling, Context Chomsky, Noam, Rereading the Classics chrome, Firefox Firefox and JavaScript, Firefox cities, A Tale of Two Systems: A Modern-Day Software Fable as an analogy for software systems, A Tale of Two Systems: A Modern-Day Software Fable class loaders, Class Loaders and Reflection Jikes RVM, Class Loaders and Reflection class loading and unloading, Class Loading and Unloading, but on a Big Scale, Codeblock replacement JVM, Class Loading and Unloading, but on a Big Scale, Codeblock replacement classes, Design-only tags, Compiling the Primordials and Filling in the JTOC, Combinators Are Good, Types Are Better, Using Software Contracts and Genericity, The Modularization Policy, Inheritance, Deferred Classes and Features compared to combinators, Using Software Contracts and Genericity CSS classes, Design-only tags deferred, Deferred Classes and Features defining objects, Combinators Are Good, Types Are Better inheritance, Inheritance modularization policy, The Modularization Policy primordials in Jikes RVM, Compiling the Primordials and Filling in the JTOC classpath “pollution”, Launcher Lifetouch, Launcher client interfaces, An Agent-Based Library to Make the Visitor Pattern Unnecessary using agent-based libraries, An Agent-Based Library to Make the Visitor Pattern Unnecessary client-server model, Interchangeable Workstations Lifetouch, Interchangeable Workstations clients, The Game World role in MMOs architecture, The Game World closures, Acknowledgments (see agents) code, The Messy Metropolis, Code problems, Locating functionality, Managing technical debt, Unit tests shape design, NIO image transfer, The PC Architecture, Simple code generation, Class Loading and Unloading, but on a Big Scale, Ultimate Security, Background, Native Interface, History and Structure of the KDE Project architecture-neutral machine code, Background generation in JVM, Simple code generation HotSpot code cache, Class Loading and Unloading, but on a Big Scale JPC, The PC Architecture location of in Design Town project, Locating functionality in Messy Metropolis project, The Messy Metropolis, Code problems native code, Native Interface quality of in Free Software community, History and Structure of the KDE Project reviewing in Lifetouch, NIO image transfer security on JPC, Ultimate Security technical debt in Design Town project, Managing technical debt unit testing in Design Town project, Unit tests shape design codeblocks, Codeblock replacement replacing, Codeblock replacement cohesion, Lack of cohesion in Messy Metropolis architecture, Lack of cohesion combinators, Combinators Are Good, Types Are Better, Using Software Contracts and Genericity compared to classes, Using Software Contracts and Genericity versus types, Combinators Are Good, Types Are Better command-query separation principle, State Intervention Eiffel method, State Intervention commands, How complex is the command set?


The Icon Handbook by Jon Hicks

augmented reality, Debian, Firefox, Google Chrome, Kickstarter, Skype, web application

It was the Great Wave icon for Camino that got the attention of Steven Garrity, who was charged with finding volunteers for a new Mozilla visual identity team to create a new identity for their new browser. Originally called Phoenix and then Firebird, it was eventually given the permanent name of Firefox for its first public release in 2004. We all came up with various ideas, but the fox with a fiery tail we decided on came from Daniel Burka, which was then sketched by Stephen Desroches, before I took it on and rendered it: Strictly speaking, a firefox is a red panda (without doubt a very cute animal), but the European fox looked bolder and more iconic. The new icon was launched in early 2004, and since then Firefox has become a global brand and the icon has been updated further by the Iconfactory. It was a big leap in profile for me, and has allowed me to follow icon design projects ever since, for clients such as Skype, Opera and Linotype.

Prior to 2004, a wide variety of esoteric symbols were used to depict an RSS feed, from (bizarrely) medication to coffee cups. The most common was the simple orange block with ‘RSS’, as seen here in Firefox 0.9: The problem with using the text RSS was that, technically, it’s just one format a feed could be in. It was shorter than ‘Syndication’ at least. A way of describing the concept, rather than one particular implementation, was needed. Up to this point, it was still better than a pill or coffee cup, though. That all changed very quickly, when Stephen Horlander created a new RSS icon for Firefox 1.0. The white radio waves indicate the broadcasting aspect of feeds clearly and simply. By 2005, however, Microsoft’s Internet Explorer and Outlook had adopted it too, followed by Opera the following year.

The subsections below will cover the different considerations: What is the context? What sizes are needed? Which formats are needed? What is the context? A favicon could appear on a variety of backgrounds, so we will need to use transparency to get the best option to fit all. It won’t always be displayed on a white address bar background — it may appear on Windows Aero glass, a grey Mac OS X UI, or a dark browser theme. Firefox 4 also adds a grey button background to favicons in its address bar; it is set slightly larger so it will always border the favicon. What sizes are needed? If you were to create a favicon for every possible use, the sizes you would need to create are: 16px: For general use in all browsers, could be displayed in the address bar, tabs or bookmarks views. 24px: Pinned site in Internet Explorer 9 32px: New tab page in Internet Explorer, taskbar button in Windows 7+ and Safari’s ‘Read Later’ sidebar 57px: Standard iOS home screen (iPod Touch, iPhone first generation to 3G) 72px: iPad home screen icon 96px: Favicon used by the GoogleTV platform 114px: iPhone 4+ home screen icon (twice the standard size for the retina display) 128px: Chrome Web Store 195px: Opera Speed Dial Opera Speed Dial Chrome Web Store 57px and 114px favicons in iOS, and 96px favicon in Google TV Do we really need to supply all of these?


pages: 834 words: 180,700

The Architecture of Open Source Applications by Amy Brown, Greg Wilson

8-hour work day, anti-pattern, bioinformatics, c2.com, cloud computing, collaborative editing, combinatorial explosion, computer vision, continuous integration, create, read, update, delete, David Heinemeier Hansson, Debian, domain-specific language, Donald Knuth, en.wikipedia.org, fault tolerance, finite state, Firefox, friendly fire, Guido van Rossum, linked data, load shedding, locality of reference, loose coupling, Mars Rover, MITM: man-in-the-middle, MVC pattern, peer-to-peer, Perl 6, premature optimization, recommendation engine, revision control, Ruby on Rails, side project, Skype, slashdot, social web, speech recognition, the scientific method, The Wisdom of Crowds, web application, WebSocket

We knew that however we implemented the remote WebDriver protocol, we would need support for both pieces in the languages we wanted to use as clients. The first iteration of the design was developed as part of the Firefox driver. Mozilla, and therefore Firefox, was always seen as being a multi-platform application by its developers. In order to facilitate the development, Mozilla created a framework inspired by Microsoft's COM that allowed components to be built and bolted together called XPCOM (cross-platform COM). An XPCOM interface is declared using IDL, and there are language bindings for C and Javascript as well as other languages. Because XPCOM is used to construct Firefox, and because XPCOM has Javascript bindings, it's possible to make use of XPCOM objects in Firefox extensions. Normal Win32 COM allows interfaces to be accessed remotely. There were plans to add the same ability to XPCOM too, and Darin Fisher added an XPCOM ServerSocket implementation to facilitate this.

There were plans to add the same ability to XPCOM too, and Darin Fisher added an XPCOM ServerSocket implementation to facilitate this. Although the plans for D-XPCOM never came to fruition, like an appendix, the vestigial infrastructure is still there. We took advantage of this to create a very basic server within a custom Firefox extension containing all the logic for controlling Firefox. The protocol used was originally text-based and line-oriented, encoding all strings as UTF-2. Each request or response began with a number, indicating how many newlines to count before concluding that the request or reply had been sent. Crucially, this scheme was easy to implement in Javascript as SeaMonkey (Firefox's Javascript engine at the time) stores Javascript strings internally as 16 bit unsigned integers. Although futzing with custom encoding protocols over raw sockets is a fun way to pass the time, it has several drawbacks.

Sadly, although URL Templates were proposed at the same time, we only became aware of them relatively late in the day, and therefore they are not used to describe the wire protocol. Because the method we're executing is idempotent4, the correct HTTP method to use is a GET. We delegate down to a Java library that can handle HTTP (the Apache HTTP Client) to call the server. Figure 16.4: Overview of the Firefox Driver Architecture The Firefox driver is implemented as a Firefox extension, the basic design of which is shown in Figure 16.4. Somewhat unusually, it has an embedded HTTP server. Although originally we used one that we had built ourselves, writing HTTP servers in XPCOM wasn't one of our core competencies, so when the opportunity arose we replaced it with a basic HTTPD written by Mozilla themselves. Requests are received by the HTTPD and almost straight away passed to a dispatcher object.


Designing Interfaces by Jenifer Tidwell

A Pattern Language, business intelligence, crowdsourcing, Firefox, longitudinal study, school vouchers, social software, social web, sorting algorithm, Tony Hsieh, web application

Use social networking resources for these, or more traditional online forums. Examples Firefox is “merely” a web browser, and a free one at that, but its help systems are stellar. Help is offered at most of the levels described in the preceding list, so both beginners and experts are well supported. All of the following examples come from Firefox so that you can see the range of help that can be offered for one product. When you visit Firefox’s site in order to download the browser, you are greeted by an outline of the install process and a very clear call to action, as shown in Figure 2-41. Figure 2-41. Firefox download page When you launch it for the first time, you see an introductory screen that may intrigue the user: easy ways to customize the Firefox look, connections to social media, and links to help resources (see Figure 2-42).

The page also confirms for the user that the install was successful; if the user needs to do anything more, such as get security updates, the introductory page will say so. Figure 2-42. Firefox startup page Each tool on the browser window has a tool tip (see Figure 2-43). The basic buttons—back, next, reload, home—will be familiar to almost all users, but the more obscure items may need to be explained. Figure 2-43. Firefox tool tips The main text fields use Input Prompt to describe themselves (see Figure 2-44). This is a more appropriate choice than Input Hints (which would be displayed beside the text fields) because it keeps the window clean and uncluttered. Furthermore, not much knowledge is lost when a user starts typing into the text field, erasing the prompt. See the pattern descriptions for Input Hints and Input Prompt in Chapter 8. Figure 2-44. Firefox input prompts Some dialogs attempt to describe themselves, as shown in Figure 2-45.

Firefox input prompts Some dialogs attempt to describe themselves, as shown in Figure 2-45. Figure 2-45. Firefox toolbars dialog Other dialogs offer links to the formal help system; an appropriate help page is displayed in a browser window when the user clicks the round purple button in the lower-left corner (see Figures Figure 2-46 and Figure 2-47). Figure 2-46. Firefox preferences dialog Figure 2-47. Firefox preferences dialog help page Finally, if all other sources of help are exhausted, a user can turn to the wider user community for advice. We’ve now moved beyond the realm of software design per se, but this is still product design—the user experience extends beyond the bits installed on users’ computers. It includes the interactions they have with the organization, its employees or other representatives, and its website (see Figure 2-48).


pages: 234 words: 57,267

Python Network Programming Cookbook by M. Omar Faruque Sarker

business intelligence, cloud computing, Debian, DevOps, Firefox, inflight wifi, RFID, web application

However, if the URL is not correct, it can't find the return response inside the accepted list of return codes. Spoofing Mozilla Firefox in your client code From your Python code, you would like to pretend to the web server that you are browsing from Mozilla Firefox. How to do it... You can send the custom user-agent values in the HTTP request header. Listing 4.7 explains spoofing Mozilla Firefox in your client code as follows: #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter – 4 # This program is optimized for Python 2.7. # It may run on any other version with/without modifications. import urllib2 BROWSER = 'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0' URL = 'http://www.python.org' def spoof_firefox(): opener = urllib2.build_opener() opener.addheaders = [('User-agent', BROWSER)] result = opener.open(URL) print "Response headers:" for header in result.headers.headers: print "\t",header if __name__ == '__main__': spoof_firefox() If you run this script, you will see the following output: $ python 4_7_spoof_mozilla_firefox_in_client_code.py Response headers: Date: Sun, 05 May 2013 16:56:36 GMT Server: Apache/2.2.16 (Debian) Last-Modified: Sun, 05 May 2013 00:51:40 GMT ETag: "105800d-5280-4dbedfcb07f00" Accept-Ranges: bytes Content-Length: 21120 Vary: Accept-Encoding Connection: close Content-Type: text/html How it works...

. # It may run on any other version with/without modifications. import urllib2 BROWSER = 'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0' URL = 'http://www.python.org' def spoof_firefox(): opener = urllib2.build_opener() opener.addheaders = [('User-agent', BROWSER)] result = opener.open(URL) print "Response headers:" for header in result.headers.headers: print "\t",header if __name__ == '__main__': spoof_firefox() If you run this script, you will see the following output: $ python 4_7_spoof_mozilla_firefox_in_client_code.py Response headers: Date: Sun, 05 May 2013 16:56:36 GMT Server: Apache/2.2.16 (Debian) Last-Modified: Sun, 05 May 2013 00:51:40 GMT ETag: "105800d-5280-4dbedfcb07f00" Accept-Ranges: bytes Content-Length: 21120 Vary: Accept-Encoding Connection: close Content-Type: text/html How it works... We used the build_opener() method of urllib2 to create our custom browser whose user-agent string has been set up as Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0. Saving bandwidth in web requests with the HTTP compression You would like to give your web server users better performance in downloading web pages.

Serving HTTP requests from your machine How to do it... How it works... Extracting cookie information after visiting a website How to do it... How it works... Submitting web forms Getting ready How to do it... How it works... Sending web requests through a proxy server Getting ready How to do it... How it works... Checking whether a web page exists with the HEAD request How to do it... How it works... Spoofing Mozilla Firefox in your client code How to do it... How it works... Saving bandwidth in web requests with the HTTP compression How to do it... How it works... Writing an HTTP fail-over client with resume and partial downloading How to do it... How it works... Writing a simple HTTPS server code with Python and OpenSSL Getting ready How to do it... How it works... 5. E-mail Protocols, FTP, and CGI Programming Introduction Listing the files in a remote FTP server Getting ready How to do it...


pages: 1,302 words: 289,469

The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws by Dafydd Stuttard, Marcus Pinto

call centre, cloud computing, commoditize, database schema, defense in depth, easy for humans, difficult for computers, Firefox, information retrieval, lateral thinking, MITM: man-in-the-middle, MVC pattern, optical character recognition, Ruby on Rails, Turing test, web application

Chapter 20 A Web Application Hacker's Toolkit 749 Figure 20-1: HttpWatch analyzes the HTTP requests issued by Internet Explorer Fi refox Firefox is currently the second most widely used web browser. By most estimates it makes up approximately 35% of the market. The majority of web applications work correctly on Firefox; however, it has no native support for ActiveX controls. There are many subtle variations among different browsers' handling of HTML and JavaScript, particularly when they do not strictly comply with the standards. Often, you will find that an application's defenses against bugs such as cross-site scripting mean that your attacks are not effective against every browser platform. Firefox's popularity is sufficient that Firefox-specific XSS exploits are perfectly valid, so you should test these against Firefox if you encounter difficulties getting them to work against IE.

Firefox's popularity is sufficient that Firefox-specific XSS exploits are perfectly valid, so you should test these against Firefox if you encounter difficulties getting them to work against IE. Also, features specific to Firefox have historically allowed a range of attacks to work that are not possible against IE, as described in Chapter 13. 750 Chapter 20 A Web Application Hacker's Toolkit A large number of browser extensions are available for Firefox that may be useful when attacking web applications, including the following: ■ Http Watch is also available for Firefox. ■ FoxyProxy enables flexible management of the browser's proxy configuration, allowing quick switching, setting of different proxies for different URLs, and so on. ■ LiveHTTPHeaders lets you modify requests and responses and replay individual requests. ■ PrefBar allows you to enable and disable cookies, allowing quick access control checks, as well as switching between different proxies, clearing the cache, and switching the browser's user agent

For example, the following HTML, which uses ECMAScript for XML (E4X) syntax, does not contain a valid opening script tag but nevertheless executes the enclosed script on current versions of Firefox: <script<{alert(1)}/></script> 464 Chapter 12 i Attacking Users: Cross-Site Scripting HI J In several of the filter bypasses described, the attack results in HTML that is malformed but is nevertheless tolerated by the client browser. Because numerous quite legitimate websites contain HTML that does not strictly comply to the standards, browsers accept HTML that is deviant in all kinds of ways. They effectively fix the errors behind the scenes before the page is rendered. Often, when you are trying to fine-tune an attack in an unusual situation, it can be helpful to view the virtual HTML that the browser constructs out of the server's actual response. In Firefox, you can use the WebDeveloper tool, which contains a View Generated Source function that performs precisely this task.


pages: 394 words: 110,352

The Art of Community: Building the New Age of Participation by Jono Bacon

barriers to entry, Benevolent Dictator For Life (BDFL), collaborative editing, crowdsourcing, Debian, DevOps, do-ocracy, en.wikipedia.org, Firefox, game design, Guido van Rossum, Johann Wolfgang von Goethe, Jono Bacon, Kickstarter, Larry Wall, Mark Shuttleworth, Mark Zuckerberg, openstreetmap, Richard Stallman, side project, Silicon Valley, Skype, slashdot, social graph, software as a service, telemarketer, union organizing, VA Linux, web application

An interesting project that really set the standard for this kind of outreach was the Mozilla Firefox promotional campaign, Spread Firefox. Back in November 2004, the SilverOrange Canadian web firm was commissioned to build Mozilla’s website. As part of its work the company produced an evangelist application on its intranet to manage the structure and content of the site. Blake Ross (one of the forefathers of Firefox) conceived the idea that Mozilla should encourage and inspire the global Firefox community to lead the marketing for the launch of the popular browser. One of the people involved in this work was Chris Messina. At the time, Chris was a Firefox community member, keen to see the project get better recognition and more widespread focus. Eventually he would go on to lead the Spread Firefox community marketing project in raising over $220,000 in microdonations to launch Firefox to a worldwide audience with an ad in the New York Times.

In the summer of 2004, Blake Ross and Asa Dotzler started an effort to reach out to bloggers who were saying good things about Firefox and ask them to put up a “download Firefox” button on their site. We needed to distribute the work to make an impact with this campaign, so Blake and Asa blogged, asking for volunteer help in building a tool to manage this process. That was the beginning of Spread Firefox. Spread Firefox became the engagement hub for Mozilla—the first large-scale community-based marketing effort the Web had ever seen. It grew to tens of thousands of members in just a few months and was the launch point for such campaigns as the New York Times Project, Firefox Flicks, and the Download Day campaign that set a Guinness Book record for most software downloads in a single day. Mozilla has both a contributor and end-user community.

What approaches have you used for growing both? We consider everyone that chooses to use Firefox and Mozilla products as valuable members of our community. Whether or not end users realize it, choosing to use Firefox and share it with friends and family is critical to advancing our mission to create a thriving Web. From a product standpoint, we make our users stakeholders. We encourage and enable users to customize Firefox and to take part in test driving and providing feedback on our products. This is everything from thousands of add-ons to a button built right into Firefox to provide direct feedback. Our marketing efforts aren’t traditional, either; we aim to build a personal rapport and create programs that allow users to show their support and feel a part of the overall Firefox community. This spans simple programs like our Affiliates buttons (website badges used to drive downloads), to collectively setting a Guinness World Record, to our Join Us membership program.


pages: 100 words: 15,500

Getting Started with D3 by Mike Dewar

Firefox, Google Chrome, linked data

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 http://getfirebug.com/. Once it’s installed, it will be available in the View menu. In order to get your head around the d3.select(), it’s really useful to run these commands in the developer tool’s console so you can get a firsthand view of what’s actually going on.

A huge benefit of how D3 exposes the designer directly to the web page is that the existing technology in the browser can be leveraged without having to create a whole new plotting language. This appears both when selecting elements, which is performed using CSS selectors (users of JQuery will find many of the idioms underlying D3 very familiar), and when styling elements, which is performed using normal CSS. This allows the designer to use the existing tools that have been developed for web design—most notably Firefox’s Firebug and Chrome’s Developer Tools. Instead of creating a traditional visualization toolkit, which typically places a heavy wrapper between the designer and the web page, D3 is focused on providing helper functions to deal with mundane tasks, such as creating axes and axis ticks, or advanced tasks such as laying out graph visualizations or chord diagrams. This means that, once over D3’s initial learning curve, the designer is opened up to a very rich world of modern, interactive and animated data visualization.

So to place a y-axis title, we create some text at the top of the axis group, specify a rotation that transforms the text through -90 degrees about a point to the left of the top corner of the y-axis group element, and translate the label down into place (see Figure 3-5). d3.select(".y.axis") .append("text") .text("mean distance between failure (miles)") .attr("transform", "rotate (-90, -43, 0) translate(-280)"); Figure 3-5. Rotating the y-axis label into place—the label is rotated first, then translated into place This is another example of a situation where Chrome’s Developer Tools or Firefox’s Firebug are very useful—we can modify the transformations live in the web page and see the results immediately. It’s easy to lose elements of the web page off the side of the screen, so being able to play with the transformation values live instead of editing the source code and reloading again and again saves a lot of time. At this point we have a pretty serviceable scatter chart that implies some relationship between failure and higher injury rates.


pages: 280 words: 40,881

JQuery UI by Eric Sarrion

Chuck Templeton: OpenTable:, Firefox, Ruby on Rails, web application

The tabs are not displayed in the HTML page as expected Formatting Content Using the tabs () method drastically changes the appearance of HTML elements inside the page. Indeed, this method traverses (internally in jQuery UI) HTML code and adds new CSS classes to the elements concerned (here, the tabs) to give them the appropriate style. Figure 2-3 shows the HTML generated by jQuery UI once the tabs () instruction has changed the HTML DOM (Document Object Model) tree (the code was recovered using the Firebug extension in Firefox). It is possible to use CSS classes of elements to customize the display. For example, if we modify the ui-state-default CSS class associated with <li> elements, we should get a new aspect for tabs. Similarly, if we modify the ui-tabs-panel CSS class associated with <div> elements, the contents of the tabs will change in appearance. Modify these elements in the HTML by adding a <style> tag (shown in bold): <script src = jquery.js></script> <script src = jqueryui/js/jquery-ui-1.8.16.custom.min.js></script> <link rel=stylesheet type=text/css href=jqueryui/css/smoothness/jquery-ui-1.8.16.custom.css /> <style type=text/css> li.ui-state-default { font-size : 10px; } div.ui-tabs-panel { font-size : 15px; font-family : georgia; font-style : italic; } </style> <div id=tabs> <ul> <li><a href=#tab1>Tab 1</a></li> <li><a href=#tab2>Tab 2</a></li> <li><a href=#tab3>Tab 3</a></li> </ul> <div id=tab1>Contents of first tab</div> <div id=tab2>Contents of the second tab</div> <div id=tab3>Contents of the third tab</div> </div> <script> $("#tabs").tabs (); </script> The addition of our own styles must be done after those of jQuery UI, otherwise our changes will be ignored.

HTML preview of a simple accordion menu Formatting Content Using the accordion () method drastically changes the appearance of HTML elements in the rendered page. Indeed, this method scans the HTML and adds new CSS classes to the elements (here, the accordion menus) to give them the appropriate style. Here, for example, the HTML code that appears after the accordion () instruction has been changed (Figure 3-3). This code was retrieved using the Firebug extension in Firefox. It is also possible to use the CSS classes of elements to customize the display. For example, if we alter the ui-accordion-header CSS class associated with <h1> elements, we should get a new appearance for the menu titles. Similarly, if we change the ui-accordion-content CSS class associated with <div> elements, we get a new aspect for the content of menus. Figure 3-3. HTML code generated by the accordion () method Modify these elements in the HTML by adding a <style> tag (shown in bold): <!

Formatting Content Using the dialog () method drastically changes the appearance of HTML elements on the rendered page. Indeed, this method scans the HTML and adds new CSS classes to the elements concerned (here, the dialog boxes) to give them the appropriate style. Here, for example, the HTML code that appears after the dialog () instruction has been changed (Figure 4-3). This code was retrieved using the Firebug extension in Firefox. Figure 4-3. HTML code generated with the dialog () method These CSS classes can customize the display of elements. For example, if we change the ui-dialog-titlebar CSS class associated with <div> elements, we get a new aspect for the window title. Similarly, if we change the ui-dialog-content CSS class associated with <div> elements, we get a new appearance for the content of the windows.


pages: 692 words: 95,244

Speaking JavaScript: An In-Depth Guide for Programmers by Axel Rauschmayer

Airbnb, anti-pattern, en.wikipedia.org, Firefox, web application

It documents the status quo as of Chrome 32, Firebug 1.12, Firefox 25, Internet Explorer 11, Node.js 0.10.22, and Safari 7.0. How Standardized Is the Console API Across Engines? The implementations of the console API vary greatly and are constantly changing. If you want authoritative documentation, you have two options. First, you can look at standard-like overviews of the API: Firebug first implemented the console API, and the documentation in its wiki is the closest thing to a standard there currently is. Additionally, Brian Kardell and Paul Irish are working on a specification for the API, which should lead to more consistent behavior. Second, you can look at the documentation of various engines: Chrome Firebug Firefox Internet Explorer Node.js Safari Warning There is a bug in Internet Explorer 9.

Support on various platforms is indicated in the following table: Chrome Firebug Firefox IE Node.js Safari clear ✓ ✓ ✓ ✓ debug ✓ ✓ ✓ ✓ ✓ error ✓ ✓ ✓ ✓ ✓ ✓ exception ✓ info ✓ ✓ ✓ ✓ ✓ ✓ log ✓ ✓ ✓ ✓ ✓ ✓ trace ✓ ✓ ✓ ✓ ✓ ✓ warn ✓ ✓ ✓ ✓ ✓ ✓ exception has been typeset in italics, because it is supported only on a single platform. Checking and Counting The console API includes the following checking and counting methods: console.assert(expr, obj?) If expr is false, log obj to the console and throw an exception. If it is true, do nothing. console.count(label?) Count how many times the line with this statement is executed with this label. Support on various platforms is indicated in the following table: Chrome Firebug Firefox IE Node.js Safari assert ✓ ✓ ✓ ✓ ✓ count ✓ ✓ ✓ ✓ Formatted Logging The console API includes the following methods for formatted logging: console.dir(object) Print a representation of the object to the console.

Those are always a compromise: you give up some quality in exchange for not being limited to a single operating system. In the past, “cross-platform” meant Windows, Mac OS, or Linux. But we now have two additional interactive platforms: web and mobile. With HTML5, you can target all of these platforms via technologies such as PhoneGap, Chrome Apps, and TideSDK. Additionally, several platforms have web apps as native apps or let you install them natively—for example, Chrome OS, Firefox OS, and Android. Other Technologies Complementing JavaScript There are more technologies than just HTML5 that complement JavaScript and make the language more useful: Libraries JavaScript has an abundance of libraries, which enable you to complete tasks ranging from parsing JavaScript (via Esprima) to processing and displaying PDF files (via PDF.js). Node.js The Node.js platform lets you write server-side code and shell scripts (build tools, test runners, etc.).


pages: 597 words: 119,204

Website Optimization by Andrew B. King

AltaVista, bounce rate, don't be evil, en.wikipedia.org, Firefox, In Cold Blood by Truman Capote, information retrieval, iterative process, Kickstarter, medical malpractice, Network effects, performance metric, search engine result page, second-price auction, second-price sealed-bid, semantic web, Silicon Valley, slashdot, social graph, Steve Jobs, web application

IBM Page Detailer Details tab IBM Page Detailer works with both Internet Explorer and Firefox, but you must load it separately from the browser as a standalone application. For performance analysis tools that load right in the web browser, read on. Firebug: A simple alternative Firebug is an add-on for Firefox that adds a cross-platform measurement tool to your belt. Though not as detailed as the aptly named IBM Page Detailer, you can use it to dig in to what's happening in Firefox. Like IBM Page Detailer, Firebug provides a waterfall report, as well as the basic speed metrics such as requests, kilobytes, and load time in seconds (see Figure 10-18). Notice that CSS has the same blocking effect as JavaScript in Firefox. This is one of the differences in the way files are handled between Internet Explorer and Firefox. Another difference that you may encounter is that JavaScript files pulled dynamically (via DOM methods) block objects in Firefox, whereas in Internet Explorer they do not.

-- #nav ul, #nav ul li {list-style:none;} #nav ul li {font-weight:bold;} --></style> Here's the HTML markup: <div id="nav"> <ul> <li>Burma</li> <li>Shave</li> </ul> </div> Now you can declare these styles for all of your navigation, content, and other areas without the need to embed classes within HTML elements. The idea is to strip your HTML down to its structure, group the content within labeled divs, and target this structure with CSS selectors, descendant or otherwise. If all browsers were as well behaved as Opera, Firefox, and Safari, you could use "grouping" elements such as body and html to avoid embedding classes within container divs. Instead, we recommend using labeled container divs such as #nav, #content, and #footer. Use CSS IDs for these main container divs that are used only once per page and then use CSS classes for most everything else. Keep in mind that CSS IDs have stronger specificity than CSS classes.

This technique helps to eliminate the majority of browser differences that plague developers when debugging CSS. For some examples of reset stylesheets, visit http://developer.yahoo.com/yui/reset/ and http://meyerweb.com/eric/tools/css/reset/. ora: Browser Support for CSS The majority of browsers today support the CSS techniques detailed in this chapter. CSS2 browsers include Internet Explorer 7 and later (with some exceptions for Internet Explorer 6, namely the universal selector, *), Firefox 2 and later, Safari 3 and later, Konqueror 3.5.7 and later, and Opera 9.5b and later, which support CSS shorthand, multiple classes, and grouping. The CSS3 attribute selector matching techniques detailed in this chapter are supported by the aforementioned browsers. For details on browser support for CSS2 and CSS3 see http://www.quirksmode.org/css/contents.html. Top 10 Tips for Optimizing CSS The following 10 best practices are designed to speed-optimize your CSS, and your HTML markup: Replace inline style with type selectors to target multiple instances of identical elements.


pages: 602 words: 207,965

Practical Ext JS Projects With Gears by Frank Zammetti

a long time ago in a galaxy far, far away, Albert Einstein, corporate raider, create, read, update, delete, database schema, en.wikipedia.org, Firefox, full text search, Gordon Gekko, Kickstarter, Larry Wall, loose coupling, Ronald Reagan, web application

isAir Contains true if the detected platform is Adobe AIR. isBorderBox Contains true if the detected browser is Internet Explorer running in nonstrict mode. isChrome Contains true if the detected browser is Google’s Chrome. isGecko Contains true if the detected browser uses the Gecko layout engine (e.g., Mozilla or Firefox). isGecko2 Contains true if the detected browser uses a pre–Gecko 1.9 layout engine (e.g., Firefox 2.x). isGecko3 Contains true if the detected browser uses a Gecko 1.9+ layout engine (e.g., Firefox 3.x). isIE Contains true if the detected browser is Internet Explorer. isIE6 Contains true if the detected browser is Internet Explorer 6.x. isIE7 Contains true if the detected browser is Internet Explorer 7.x. isIE8 Contains true if the detected browser is Internet Explorer 8.x. isLinux Contains true if the detected platform is Linux.

The DomQuery Class in Action <html> <head> <title>Chapter 1 - Ext.util Namespace - EXT.DomQuery class</title> <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext/ext-all.js"></script> <style> .cssRow1 { color : #ff0000; } .cssRow2 { color : #0000ff; } .cssCell { background-color : #00ff00; } .cssCellAlt { background-color : #eaeaea; } </style> <script> function testIt() { C ha P t e r 1 ■ I N t r O D U C I N G W e B D e V e LO P M e N t W I t h e X t JS var query = "td[class=\"cssCell\"]"; var elems = Ext.DomQuery.select(query); for (var i = 0; i < elems.length; i++) { console.log(query + " = elems[" + i + "].firstChild.nodeValue = " + elems[i].firstChild.nodeValue); } query = "td[class=\"cssCellAlt\"]"; var f = Ext.DomQuery.compile(query); elems = f(Ext.getDom("row1")); for (var i = 0; i < elems.length; i++) { console.log(query + " = elems[" + i + "].firstChild.nodeValue = " + elems[i].firstChild.nodeValue); } query = "tr[class=\"cssRow2\"]"; console.log("Ext.DomQuery.is(Ext.getDom(\"row2\"), " + query + ") = " + Ext.DomQuery.is(Ext.getDom("row2"), query)); query = "td"; elems = Ext.DomQuery.select(query); console.log("Filtered list = " + Ext.DomQuery.filter(elems, "td[class=\"cssCell\"]").length); } Ext.onReady(testIt); </script> </head> <body> <table border="1" cellpadding="2" cellspacing="2"> <tr id="row1" class="cssRow1"> <td class="cssCell">row1_cell1</td> <td class="cssCellAlt">row1_cell2</td> <td class="cssCell">row1_cell3</td> <td class="cssCellAlt">row1_cell4</td> </tr> <tr id="row2" class="cssRow2"> <td>row2_cell1</td> <td>row2_cell2</td> <td>row2_cell3</td> <td>row2_cell4</td> </tr> </table> </body> </html> 41 42 Ch aPt er 1 ■ INtr ODU C ING W eB DeVeL OP M e N t W I t h e X t JS The first thing to take note of is the table structure in the <body> of the document. It is this structure that we’ll be querying against. Note too the style classes applied to the elements. It is these settings specifically that are queried against. If you open this page in Firefox with Firebug installed, Figure 1-21 will be the output in Firebug’s console pane. ■Note Of course, if you aren’t using Firefox, or don’t have Firebug installed… why not? Seriously, though, to run this example you’ll need to replace the console.log() calls with suitable replacements; alert() should work fine in this case. The discussion that follows assumes you’re using Firefox with Firebug installed. Figure 1-21. The console output for this page The first two lines of output are a result of this code: var query = "td[class=\"cssCell\"]"; var elems = Ext.DomQuery.select(query); for (var i = 0; i < elems.length; i++) { console.log(query + " = elems[" + i + "].firstChild.nodeValue = " + elems[i].firstChild.nodeValue); } First, a simple selector query is created.

We’ve been using Gears throughout this book, the database portion of it at least, but being able to peer into the databases themselves, unless you use the SQLite Manager add-on for Firefox, isn’t something within our power. In this chapter we’ll create an application that aims to alleviate that shortcoming! We’ll build ourselves an application called SQLWorkbench, and in the process we’ll see a few new things in Ext JS. By the end of this chapter we’ll have a handy tool that will prove valuable when we’re using Gears for local database storage. What’s this application do anyway? If you use the Firefox browser—and you do in all probability if you’re a (smart) developer— then I suggest getting familiar with the SQLite Manager add-on (http://code.google.com/p/ sqlite-manager/). This is an especially great tool if you are doing Gears development, as we are in this book. This add-on is a utility for peeking directly into the SQLite databases that Firefox uses under the covers to store user data, as well as the databases created by Gears—in fact, any SQLite database you can name.


pages: 114 words: 27,996

Responsive Web Design by Ethan Marcotte

en.wikipedia.org, Firefox, Merlin Mann

In fact, only Internet Explorer 7 and lower are affected, as is Firefox 2 and lower on Windows. More modern browsers like Safari, Firefox 3+, and IE8+ don’t exhibit a single problem with flexible images. What’s more, the bug seems to have been fixed in Windows 7, so that’s more good news. So with the scope of the problem defined, surely there’s a patch we can apply? Thankfully, there is—with the exception of Firefox 2. Now, this grizzled old browser was released in 2006, so I think it’s safe to assume it isn’t exactly clogging up your site’s traffic logs. At any rate, a patch for Firefox 2 would require some fairly involved browser-sniffing to target specific versions on a specific platform—and browser-sniffing is unreliable at best. But even if we did want to perform that kind of detection, these older versions of Firefox don’t have a switch that could fix our busted-looking images.

FIG 4.22: We’ve revisited our design, considering how widescreen readers might best experience it—and all with a quick media query. In other words, our responsive design is finished. A note about compatibility After covering media queries for not a few pages, I suppose we should briefly quash a few dreams—I mean, um, we should probably talk about browser support. The good news? Media queries enjoy remarkably broad support in modern desktop browsers. Opera has supported media queries since version 9.5, Firefox 3.5 and above supports them, as do WebKit-based desktop browsers like Safari 3+ and Chrome. Even Internet Explorer 9 (http://bkaprt.com/rwd/32/) supports media queries (http://bkaprt.com/rwd/33/)! Somebody pinch me. And moving beyond the desktop, things are also looking good for media queries. WebKit-based mobile browsers, such as Mobile Safari, HP’s webOS, and Android’s browser all support media queries.

And while many modern small screen devices offer decent support, some widely used browsers don’t understand media queries, like IE Mobile and those on older BlackBerrys (http://bkaprt.com/rwd/36/). So things are far from rosy. But that doesn’t mean that responsive layouts are a pipe dream, however. First and foremost, there are a number of JavaScript-based solutions that patch older browsers’ lack of support. The descriptively-named css3-mediaqueries.js library (http://bkaprt.com/rwd/37/) offers to do just that, described as a solution “to make IE5+, Firefox 1+ and Safari 2 transparently parse, test, and apply CSS3 Media Queries.” It’s very much an early release, and one that hasn’t seen a lot of active development, but I can say that it’s worked quite well for me. More recently, I’ve been using a script called respond.js (http://bkaprt.com/rwd/38/), a nimble little library developed by Scott Jehl. Where css3-mediaqueries.js is incredibly feature-rich, almost exhaustively so, Respond simply patches support for min-width and max-width queries in older browsers.


pages: 1,881 words: 178,824

HTML5 Canvas by Steve Fulton, Jeff Fulton

barriers to entry, Firefox, game design, Google Chrome, web application, WebSocket

This includes the following: A new animated Hello World application A discussion of accessibility and the sub-dom concept Multiple methods to clear the Canvas Finding points in the current path Drawing focus rings Animating gradients with text Using pixel data to detect collisions Five new examples that focus on using Box2Dweb for physics-based animations Using getUserMedia() to capture video on the Canvas Making use of the new Web Audio API A* path finding and animation Coarse and fine tile-based scrolling Development of mobile web (iOS) full-screen, scaled applications A new game named Retro Blaster Touch A new drag-and-drop example A discussion of building your own Canvas application framework A short tutorial for building an HTML5 application for Windows 8 What You Need to Run the Examples in the Book The best part about the programming HTML5 Canvas is that the barrier to entry is very low. All you need is a modern web browser and a text editor. As far as compatible browsers go, we suggest that you download and use the latest version of the following web browsers. The browsers are listed in the order that we suggest you test them: Chrome Safari Firefox Internet Explorer (version 10) Opera Every example in this book was tested with Google Chrome, Safari, and Firefox. While we made every attempt to ensure that these examples worked across as many browsers as possible, we suggest that you use Google Chrome or Safari for the best results. What You Need to Know It would be good if you knew your way around programming in some kind of modern language like C, C++, C#, ActionScript 2, ActionScript 3, Java, or JavaScript.

This is a very important tag, because it is one of the main pieces of information a search engine uses to catalog the content on the HTML page. A Simple HTML5 Page Now let’s look at this page in a web browser. (This would be a great time to get your tools together to start developing code.) Open your chosen text editor, and get ready to use your preferred web browser: Safari, Firefox, Opera, Chrome, or IE. In your text editor, type in the code from Example 1-1. Save the code as CH1EX1.html in a directory of your choosing. Under the File menu in Chrome, Safari, or Firefox, you should find the option Open File. Click that selection. You should then see a box to open a file. (On Windows using Chrome, you might need to press Ctrl+O to open a file.) Locate the CH1EX1.html that you just created. Click Open. You should see something similar to Figure 1-1. Figure 1-1.

Most for-profit corporations have implemented support for this format on their platforms, but the developers of open source browsers like Firefox and Opera have not. In late 2010, Google dropped H.264 support in Chrome in favor of WebM. VP8 + Vorbis = .webm WebM is a new open source video standard supported by Google, Adobe, Mozilla, and Opera. It is based on the VP8 codec and includes Vorbis (just like Theora) as an audio codec. When YouTube announced they had converted many of their videos to be HTML5-compatible, one of the formats they used was WebM. Currently, only Google Chrome and Opera support WebM, but broader support should be coming in the future. To summarize, here is a chart of the video formats supported by various browsers. Platform .ogg .mp4 .webm Android X X Firefox X X Chrome X X iPhone X Internet Explorer 9 X Opera X X Safari X As you can see, no one format is supported by all browsers or platforms.


The Art of SEO by Eric Enge, Stephan Spencer, Jessie Stricchiola, Rand Fishkin

AltaVista, barriers to entry, bounce rate, Build a better mousetrap, business intelligence, cloud computing, dark matter, en.wikipedia.org, Firefox, Google Chrome, Google Earth, hypertext link, index card, information retrieval, Internet Archive, Law of Accelerating Returns, linked data, mass immigration, Metcalfe’s law, Network effects, optical character recognition, PageRank, performance metric, risk tolerance, search engine result page, self-driving car, sentiment analysis, social web, sorting algorithm, speech recognition, Steven Levy, text mining, web application, wikimedia commons

identifying and addressing copyright infringement, Identifying and Addressing Copyright Infringement potential creation by use of pagination, Flat Versus Deep Architecture restricting spider access to by placing in iframe, When to Show Different Content to Engines and Visitors search engines' identification of, How Search Engines Identify Duplicate Content tracking, Tracking Duplicate Content viewed as spam, Duplicate Content duplicate content filter, Duplicate Content Issues duplicate content penalty, Duplicate Content Issues dynamic URLs, Technology Decisions E eBay, Experian Hitwise, Additional local info guides local-based searches on, Additional local info guides popular search terms used prior to visiting, Experian Hitwise ecommerce, How Search Engines Drive Commerce on the Web, SEO for Ecommerce Sales sales reports on, How Search Engines Drive Commerce on the Web SEO for sales, SEO for Ecommerce Sales ecommerce sites, A Deeper Look at Action Tracking, Attribution, Glossary action tracking, A Deeper Look at Action Tracking transaction delay from initial customer visit, Attribution editorial links, Glossary email pitch for direct link requests, Basic email pitch embed tag in HTML 5, What search engines cannot see emphasis tags, using in blog posts, More blog optimization basics engagement with website, as ranking factor, Measuring Content Quality and User Engagement Enquiro, eye-tracking results, Eye Tracking: How Users Scan Results Pages, Different Intents and Effects of Listings in Paid Versus Natural Results Eurekster, More specialized vertical search engines Exalead link data, Exalead Experian Hitwise, Uncovering Their Secrets, Experian Hitwise (see also Hitwise) ext: operator, Advanced Google Search Operators eye tracking, users' scans of results pages, Eye Tracking: How Users Scan Results Pages Eyetools, eye-tracking results, Eye Tracking: How Users Scan Results Pages, Different Intents and Effects of Listings in Paid Versus Natural Results F Facebook, Evaluating Social Media Signals, AJAX and JavaScript, Forum and Social Network Participation, Facebook, Facebook Shares/Links as a Ranking Factor, Facebook Likes Are Votes, Too, Bing’s “social search”, Summary of Social Sources to Consider, Facebook, Shelf space, Communities in Social Networks, An Evolving Art Form: The Future of SEO authors of this book on, Communities in Social Networks Comments system, AJAX and JavaScript continuing growth of, An Evolving Art Form: The Future of SEO Likes affecting rankings of content, Facebook Likes Are Votes, Too participation in, for link building, Forum and Social Network Participation rankings on, Shelf space Shares/links as ranking factor, Facebook Shares/Links as a Ranking Factor strategic partnership with Bing, Bing’s “social search” tracking key metrics on Insights, Facebook using for link building, Facebook FaceLift Image Replacement (FLIR), Scalable Inman Flash Replacement (sIFR) failure of search algorithms, reasons for, A Few Reasons Why These Algorithms Sometimes Fail fans of your business, leveraging for SEO, Your Fans feed search, optimizing for, RSS Feed Optimization feed: operator (Bing), Bing Advanced Search Operators FeedBurner, RSS Feed Tracking and Measurement, Blog subscribers feedmaps, Optimizing Your Website for Local Search Engines feeds, Measuring Content Quality and User Engagement, Video Search Optimization (see also RSS feeds) video sites accepting RSS or mRSS feeds, Video Search Optimization Ferrari Google+ Business Page, Google+ Business Pages FFA (Free For All) sites, Glossary file type, search restricted to, Advanced Google Search Operators filetype: operator, Advanced doc type searches filing cabinets and web pages, similarities between, An analogy “Filthy Linking Rich!”, Authority FindGiftCards.com (spam example), Two Spam Examples Firefox, What Content Can Search Engines “See” on a Web Page?, Firefox plug-ins for quicker access to Google advanced search queries, Methods for URL Redirecting and Rewriting, SEO for Firefox Live HTTP Headers plug-in, Methods for URL Redirecting and Rewriting plug-ins for Google advanced search queries, Firefox plug-ins for quicker access to Google advanced search queries SEO for Firefox extension, SEO for Firefox viewing source code, What Content Can Search Engines “See” on a Web Page? First Click Free, How Do Search Engines Interpret Cookies and Session IDs?, When to Show Different Content to Engines and Visitors, Requires form submission Flash, What search engines cannot see, Technology Decisions, Indexable Content, When to Show Different Content to Engines and Visitors, Flash, Flash Coding Best Practices, Scalable Inman Flash Replacement (sIFR), Glossary best practices to make content discoverable for search engines, When to Show Different Content to Engines and Visitors coding best practices for SEO friendliness, Flash Coding Best Practices, Scalable Inman Flash Replacement (sIFR) defined, Glossary difficulties for search engine crawlers, Indexable Content links or content based in, Technology Decisions reasons why it's not SEO-friendly, Flash search engines' reading of files, What search engines cannot see flat versus deep site architecture, Flat Versus Deep Architecture Flesch-Kincaid Grade Level Readability Formula, Measuring Content Quality and User Engagement Flickr, Flickr, Reddit, StumbleUpon, Quora, Yelp, Flickr, Slideshare, and YouTube, Optimizing Through Flickr and Other Image Sharing Sites, Video Search Optimization image search optimization through, Optimizing Through Flickr and Other Image Sharing Sites metrics on, Reddit, StumbleUpon, Quora, Yelp, Flickr, Slideshare, and YouTube using for link building, Flickr videos on, Video Search Optimization FLIR (FaceLift Image Replacement), Scalable Inman Flash Replacement (sIFR) fonts for website content, Content Structure formatting, content, Content Structure forms, Technology Decisions, Spiderable Link Structures, Search and web forms, Forcing form submission, Requires form submission content behind, Technology Decisions content hidden behind forced-form submission, Forcing form submission, Requires form submission links in submission-required forms, Spiderable Link Structures search and web forms, Search and web forms forums, Automated link dropping, NoFollow uses and scams, Leveraging User-Generated Content, Forum and Social Network Participation, Blogs and forums, A Deeper Look at Action Tracking, Content Theft, Forums, Glossary action tracking, A Deeper Look at Action Tracking automated link dropping on, Automated link dropping defined, Glossary metrics on, Blogs and forums NoFollow links in comments, NoFollow uses and scams opening forum on your site, Leveraging User-Generated Content participation in, for link building, Forum and Social Network Participation protection against DMCA infringement, Content Theft SEO and web marketing content, Forums Foursquare, Local Search frames, What search engines cannot see, Spiderable Link Structures, Frames, Glossary and content pulled in from another site, What search engines cannot see defined, Glossary lack of search friendliness, Frames links in, Spiderable Link Structures Free Business Cards for Life contest, Netconcepts for client OvernightPrints.com, How far should you go with link bait?

site:org bookmarks/links/"favorite sites"/ site:gov bookmarks/links/"favorite sites"/ site:edu bookmarks/links/"favorite sites"/ site:org donors Search for relevant forums and discussion boards to participate in discussions and probably link back to your site. inurl:forum OR inurl:forums keyword inurl:forum OR inurl:forums seo Firefox plug-ins for quicker access to Google advanced search queries You can use a number of plug-ins with Firefox to make accessing these advanced queries easier. For example: Advanced Dork (https://addons.mozilla.org/ru/firefox/addon/advanced-dork/), for quick access to intitle:, inurl:, site:, and ext: operators for a highlighted word on a page, as shown in Figure 2-25. Figure 2-25. Advanced Dork plug-in for Firefox SearchStatus (http://www.quirk.biz/searchstatus/), for quick access to a site: operator to explore a currently active domain, as shown in Figure 2-26 Figure 2-26. SearchStatus plug-in for Firefox Bing Advanced Search Operators Bing also offers several unique search operators worth looking into, as shown in Table 2-3.

Note Some analytics packages and independent SEO tools can track duplicate content, such as SEOBook.com’s Duplicate Content Checker: http://training.seobook.com/duplicate-content-checker. Other Third-Party Tools Throughout this chapter, several third-party tools have been mentioned or recommended for analysis, research, and testing. This section introduces a few more that are worth mentioning. SEO for Firefox Aaron Wall of SEO Book created a useful data enhancement tool with the SEO for Firefox extension (http://tools.seobook.com/firefox/seo-for-firefox.html). When turned on, this tool provides extra data that can be populated automatically or on request from within the regular search results of Google, Yahoo!, and Bing. Some of the most popular data points this add-on provides for the URL or domain of each search result include: Google PageRank, site age, various backlink metrics, .edu and .gov link counts, bookmarking and social metrics (such as number of Digg votes), DMOZ listings, and additional reporting from other third-party tools.


pages: 131 words: 22,892

Canvas Pocket Reference: Scripted Graphics for HTML5 by David Flanagan

centre right, Firefox

Safari and Chrome perform compositing “locally”: only the pixels actually drawn by the fill(), stroke(), or other drawing operation count as part of the source. IE 9 is likely to follow suit. Firefox and Opera perform compositing “globally”: every pixel within the current clipping region is composited for every drawing operation. If the source does not set that pixel, then it is treated as transparent black. In Firefox and Opera this means that the five compositing modes listed above actually erase destination pixels outside of the source and inside the clipping region. Figures 1-13 and 1-14 were generated in Firefox, and this is why the boxes around “copy”, “source-in”, “source-out”, “destination-atop”, and “destination-in” are thinner than the other boxes: the rectangle around each sample is the clipping region and these four compositing operations erase the portion of the stroke (half of the lineWidth) that falls inside the path.

Writing graphics programs is fun, and the <canvas> tag gives web developers some relief from the drudgery of the DOM! The <canvas> tag has no appearance of its own but creates a drawing surface within the document and exposes a powerful drawing API to client-side JavaScript. The <canvas> tag is standardized by HTML5 but has been around for longer than that. It was introduced by Apple in Safari 1.3, and has been supported by Firefox since version 1.5 and Opera since version 9. It is also supported in all versions of Chrome. The <canvas> tag is not supported by IE before IE 9, but can be reasonably well emulated in IE 6, 7, and 8. Using the Canvas in IE To use the <canvas> tag in IE 6, 7, or 8, download the open-source ExplorerCanvas project from http://code.google.com/p/explorercanvas/. After unpacking the project, include the “excanvas” script in the <head> of your web pages using an Internet Explorer conditional comment like this: <!

Figures 1-13 and 1-14 were generated in Firefox, and this is why the boxes around “copy”, “source-in”, “source-out”, “destination-atop”, and “destination-in” are thinner than the other boxes: the rectangle around each sample is the clipping region and these four compositing operations erase the portion of the stroke (half of the lineWidth) that falls inside the path. For comparison, Figure 1-15 shows the same images as Figure 1-14, but was generated in Chrome. The HTML5 draft current at the time of this writing specifies the global compositing approach implemented by Firefox and Opera. Browser vendors are aware of the incompatibility and are not satisfied with the current state of the specification. There is a distinct possibility that the specification will be altered to require local compositing instead of global compositing. Figure 1-15. Compositing locally rather than globally Finally, note that it is possible to perform global compositing in browsers like Safari and Chrome that implement local compositing.


The New CSS Layout by Rachel Andrew

Firefox

To demonstrate alignment in CSS Grid Layout, this time I create a four-column and three-row track grid, and lay my items out on the grid using the named areas method I showed you in Chapter 3. .cards { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 100px); grid-template-areas: "a a a b" "a a a b" "c d d d"; grid-gap: 20px; } .one { grid-area: a; } .two { grid-area: b; } .three { grid-area: c; } .four { grid-area: d; } Code example: http://bkaprt.com/ncl/04-05/ The default value for align-items is stretch, just like in flexbox. So if we load this example in a browser, we can see the grid areas we’ve defined (Fig 4.6). Fig 4.6: A four-column, three-row grid with four grid areas. A quick tip: as we start to look at more complex examples, it helps to see the grid defined. Firefox DevTools has a grid highlighter tool (http://bkaprt.com/ncl/04-06/). Inspect the element, then click the little grid icon to see your grid (Fig 4.7). Fig 4.7: Our grid, with the lines and gaps highlighted in Firefox. We already know from flexbox that align-items works on the cross axis. If we add the align-items property to our grid container with a value of start, the items all line up at the top of their area (Fig 4.8). .cards { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 100px); grid-template-areas: "a a a b" "a a a b" "c d d d"; grid-gap: 20px; align-items: start; } Fig 4.8: The grid with align-items set to start.

By giving us more power to rearrange our visual display, the specifications also require us to be more mindful of how we use it. Evergreen Browsers The existence of old browsers is a constant source of pain for web developers, and becomes an issue when large groups of users are “stuck” on some old browser version. We’ve seen this problem recur throughout the history of the web, with first Netscape 4 being the villain, then Internet Explorer 6. For anyone running Chrome or Firefox, browser updates happen in the background, automatically. New browser features appear, and websites that take advantage of them will suddenly seem to be better. Safari and Edge update with operating system releases; users have grown more and more accustomed to running these updates to ensure for security reasons. They get a new browser at the same time. Sadly, it is not as simple as everyone now having wonderful, self-updating browsers.

Users of old versions of Windows may be unable to install IE11 or Edge. This problem increasingly crops up with phone hardware, too; think of Android users who can’t update their OS, and therefore miss out on the new browser software that comes with the update. Despite not having worldwide evergreen browser support, the situation has generally improved for most of us compared to a few years ago. It’s worth implementing a feature that perhaps Firefox has shipped and Chrome has stated they will implement. Assuming the design will be online for a couple of years, a few months down the road, all Chrome users will see that enhancement. In Chapter 7, we’ll consider modern ways of approaching browser support, and look at how we can create sites that enhance themselves as browsers update—without us needing to write any more code. Outsourcing Our Understanding of CSS There was a time, perhaps ten years ago now, when the real job of a front-end developer was that of a browser-bugs expert.


pages: 504 words: 67,845

Designing Web Interfaces: Principles and Patterns for Rich Interactions by Bill Scott, Theresa Neil

A Pattern Language, anti-pattern, en.wikipedia.org, Firefox, recommendation engine, Ruby on Rails, Silicon Valley, web application

Recently, it digitized photos of the collection and placed them online for virtual viewing.[30] The memorabilia application uses a ZUI interface to move around from artifact to artifact and zoom in to see details on each item (Figure 7-15). Figure 7-15. Hard Rock Café uses a zoomable user interface (ZUI) to allow its memorabilia collection to be viewed online Aza Raskin, son of the late Jef Raskin (who pioneered many of the original ZUI concepts) is continuing to experiment with user interfaces that push the current norms. He demonstrated some potential ZUI interactions in a concept demo for Firefox on the mobile (Figure 7-16).[31] Figure 7-16. Firefox Mobile Concept Prototype showing panning gestures as well as a ZUI interface In this concept prototype, two key ideas are presented: Additional interface elements are just off the page to the top, left, bottom, and/or right. Pulling the content to one side or the other reveals these tools. Moving between the canvas (desktop) and windows is accomplished with a ZUI interface.

Nor is there anything unique about how items are selected. Live Search primarily affects the way searches are retrieved in response to typed queries. Contextual results While ZUGGEST presents a full search interface, sometimes the results can be shown in a more compact way. This is especially useful if you want to contain Live Search in a separate tool on the page or in a sidebar. Firefox version 3 introduced search directly into the URL bar of the browser (Figure 13-9). Figure 13-9. Firefox's AwesomeBar uses Live Search to retrieve results based on previous interest in websites In the words of the Mozilla blog:[52] Dubbed the "AwesomeBar", it lets you use the URL field of your browser to do a keyword search of your history and bookmarks. No longer do you have to know the domain of the page you're looking for—the AwesomeBar will match what you're typing (even multiple words!)

Mail, Perceived performance Yahoo! Photos, Showing upload status Progressive Disclosures, Live Preview, Progressive Disclosure, Progressive Disclosure Picnik, Progressive Disclosure feedback, immediate, Considerations, Immediate feedback, Perceived performance Configurator Process, Considerations Live Preview, Immediate feedback Progress Indicators, Perceived performance Firefox Mobile Concept Prototype, Considerations Firefox's AwesomeBar, Contextual results Fitts's Law, Fitts's Law Five Runs, Expand/Collapse as Overlay, Slide In and Slide Out Expand and Collapse, Expand/Collapse as Overlay Slide In and Slide Out, Slide In and Slide Out Flickr, Theresa's Acknowledgments, Considerations, Multi-Field Inline Edit, Considerations, Discoverability, Considerations, An Invitation, Enhancing Hover Invitation, Considerations, Multiple idioms, Invitation to drop, Carousel Affordance Invitations, Considerations Carousel, Considerations, Carousel clicking directly on title, Theresa's Acknowledgments Contextual Tool, Multiple idioms Drag and Drop Invitation, Invitation to drop editing photo's title inline, Considerations editing photo's title, description, and tags in a separate page, Multi-Field Inline Edit Hover Invitation, Enhancing Hover Invitation Hover-Reveal Tools, Discoverability Object Selection, Considerations providing invitation to edit photo description, An Invitation Flickr Daily Zeitgeist, Opposite effect Flickr Organizr, Call to Action Invitation, Advertising drag and drop, Signaling change Blank Slate Invitation, Advertising drag and drop Call to Action Invitation, Call to Action Invitation Spotlights, Signaling change Flip transition, Flip flow, Flow, Staying in the flow Dialog Overlay, Staying in the flow Fried, Jason, Explain What Just Happened G Garrett, Jesse James, Why We Wrote This Book gesture-based interfaces, Gestures Gibson, J.


pages: 135 words: 31,098

ClojureScript: Up and Running by Stuart Sierra, Luke Vanderhart

domain-specific language, Firefox, MVC pattern, Paul Graham, web application

By specifying a vector representing a shell command that launches a browser, you can launch both the bREPL client and server with the same command. For example: (defproject my-project "1.0.0-SNAPSHOT" ;; other leiningen configuration items :cljsbuild { ;; other configuration items & build configurations :repl-launch-commands {"firefox" ["firefox" "page.html"]}}) If you have the “firefox” binary on your system’s PATH, you can run lein trampoline cljsbuild repl-launch firefox. The final parameter, firefox, will be looked up in the :repl-launch-commands map, and the associated command (firefox page.html) will be executed, launching Firefox and opening the specified page. Of course, you are still responsible for ensuring that the page you specified (in this case, page.html) calls the clojure.browser.repl/connect function to launch the client side of the bREPL. Hooking Into Default Leiningen Tasks Normally, ClojureScript-specific build actions are triggered using the lein cljsbuild command, which pertains exclusively to ClojureScript code.


pages: 186 words: 50,651

Interactive Data Visualization for the Web by Scott Murray

barriers to entry, Firefox, iterative process, web application, your tax dollars at work

(I was lazy and didn’t include them in my original HTML.) One more thing: why am I focusing on Chrome, Firefox, and Safari? Why not Internet Explorer, Opera, or the many other browsers out there? For one, it’s best to develop your projects using a browser with the broadest support for web standards. Internet Explorer made huge progress with versions 9 and 10, but Chrome, Firefox, and Safari are understood to have the broadest standards support, and they are updated more frequently. Second, you’re going to spend a lot of time using the developer tools, so you should develop with a browser that has tools you enjoy using. I was pretty devoted to Safari until the 6.0 update changed everything. Now I’m going back and forth between Chrome and Firefox’s new dev tools. I recommend you try them all and decide what works best for you.

In Chrome 23.0, it’s under View→Developer→View Source. In Firefox 17.0, look under Tools→Web Developer→Page Source. In Safari 6.0, it’s under Develop→Show Page Source (although you must first set the “Develop” menu to display under Safari→Preferences→Advanced). Going forward, I’m going to assume that you’re using the newest version of whatever browser you choose. Figure 3-2. Looking at the source code in a new window That gets you the raw HTML, but if any D3 or JavaScript code has been executed, the current DOM may be vastly different. Fortunately, your browser’s developer tools enable you to see the current state of the DOM. And, again, the developer tools are different in every browser. In Chrome, find them under View→Developer→Developer Tools. In Firefox, try Tools→Web Developer. In Safari, first enable the developer tools (in Safari→Preferences→Advanced).

Servers are typically always on and always connected, but web developers often also run local servers, meaning they run on the same computer that you’re working on. Local means here; remote means somewhere else, on any computer but the one right in front of you. There are lots of different server software packages, but Apache is the most common. Web server software is not pretty, and no one ever wants to look at it. In contrast, web browsers can be very pretty, and we spend a lot of time looking at them. Regular people recognize names like Firefox, Safari, Chrome, and Internet Explorer, all of which are browsers or web clients. Every web page, in theory, can be identified by its URL (Uniform Resource Locator) or URI (Uniform Resource Identifier). Most people don’t know what URL stands for, but they recognize one when they see it. By obsolete convention, URLs commonly begin with www, as in http://www.calmingmanatee.com, but with a properly configured server, the www part is wholly unnecessary.


pages: 270 words: 79,992

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

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, commoditize, creative destruction, crony capitalism, cross-subsidies, crowdsourcing, David Brooks, death of newspapers, disruptive innovation, Donald Trump, Douglas Engelbart, Douglas Engelbart, en.wikipedia.org, Exxon Valdez, Fall of the Berlin Wall, Filter Bubble, Firefox, global supply chain, Google Chrome, Gordon Gekko, Hacker Ethic, Jaron Lanier, Jeff Bezos, jimmy wales, John Markoff, Julian Assange, Kevin Kelly, Khan Academy, Kickstarter, Lean Startup, Mark Zuckerberg, minimum viable product, Mitch Kapor, Mohammed Bouazizi, Mother of all demos, Narrative Science, new economy, Occupy movement, old-boy network, peer-to-peer, period drama, Peter Thiel, pirate software, publication bias, Robert Metcalfe, 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

For three years they worked—unpaid—with other programmers in the open-source community, and, finally, in 2005, Firefox was available—free—to anyone who wanted to use it. In a matter of months, Firefox decimated Microsoft’s market share in Web browsing. Ross went on to start Spread Firefox, an all-volunteer online community whose sole purpose was to convince people to switch to Firefox. As more and more people started using Firefox, the Spread Firefox community got more and more fired up. They raised money to run an ad in the New York Times to encourage people to switch to Firefox. 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.

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. The Necessities of Life It should be clear by now how 3-D printing, crowdsourcing, and open sourcing are bringing the End of Big to service companies (like law firms), manufacturing companies, and technology companies.

The solution was to build a software platform that provided certain efficiencies, chief among them providing a common interface to the hardware. The most common platforms are Microsoft Windows, Apple’s Mac OS (operating system), and Linux (the open-source option common on Web servers). As a software platform, Microsoft Windows worries about communicating with the keyboard, the monitor, the mouse, and the printer—so that applications like Microsoft Word, Skype, Firefox, and Photoshop don’t have to. The platform provides efficiencies between the hardware and the applications, smoothing the user interface (so you don’t have to worry about the zeros and ones) and making the applications more efficient and able to specialize on what they do best—like word processing or Web browsing or any one of a number of things. Every digital device you use, from your mobile phone to the photocopier at your office, has a software platform that brings efficiency to hardware management.


pages: 276 words: 78,094

Design for Hackers: Reverse Engineering Beauty by David Kadavy

Airbnb, complexity theory, en.wikipedia.org, Firefox, Isaac Newton, John Gruber, Paul Graham, Ruby on Rails, semantic web, Silicon Valley, Silicon Valley startup, Steve Jobs, TaskRabbit, web application, wikimedia commons, Y Combinator

At the time of this writing, Internet Explorer and WebKit-based browsers such as Chrome and Safari recognize ligatures as their corresponding letter pair when the Find command is used (that is, if a user is searching for the word fig within the text of your page), whereas Firefox does not. CSS3’s font-variant-ligatures property displays the proper ligatures while not interfering with the actual HTML code of a page, thus retaining use of any browser’s Find command. Internet Explorer, Chrome, and Safari do not currently support this property, while Firefox does. Figure B-16 Ligatures are more necessary in some typefaces than in others. The groupings containing ff for Adobe Garamond are remnants of the typeface’s original incarnation as metal type. So, if you choose to apply ligatures on the content layer, your Firefox users won’t be able to use their Find command; if you choose to use font-variant-ligatures, only your Firefox users will see ligatures. Because of the spotty browser support for ligatures, it wouldn’t be unreasonable to ignore ligatures altogether in body copy.

As with many things in typography, the considerate eye is a better judge of how far to hang punctuation than geometry or rationale. To create a drop cap (which will work in Firefox, Chrome, and Safari, but not Internet Explorer 9) using CSS3, use the first-letter pseudo class, and carefully adjust the size, margins, and line-height so the drop cap is the appropriate size and in the appropriate position. The left side of Figure B-13 is created as follows: p.opening:first-letter { display: block; float: left; font-size: 114px; line-height: 80px; /* Note that Firefox 3.x ignores line-height; this value is adjusted so that WebKit and Opera match Firefox. */ margin: 8px 5px 0 -6px; padding:0; } Note that the irregular shape of the D calls for the first line of the paragraph to be kerned closer to the drop cap, but even if there were a practical way to achieve the proper kerning for this instance, there is no practical way to do this with dynamic content (because you don’t always know what letter the drop cap will be).

This concept of authority also applies generally to your site just being an authoritative site. Google uses a ranking called PageRank to measure how much authority a given page has, on a scale from 1 to 10. There is a complex algorithm behind PageRank that you shouldn’t concern yourself with, but Google does provide a Firefox plug-in called Google Toolbar (shown in Figure 4-19), which shows what the PageRank of a page supposedly is. Seven is considered a very high PageRank. NYT.com has a PageRank of 9. Kadavy.net’s home page is a 4, which is considered decent for a personal blog. Figure 4-19 Google’s Firefox toolbar displays the PageRank of a given page. A number of factors go into determining a given page’s PageRank. Although the actual algorithm is an ever-changing secret, here are a few factors that are widely accepted to be a part of the algorithm: > Age of domain (how long the domain has been registered) > Authority (or PageRank) of pages that link to the page from other domains > Date of expiration of the domain (Is the domain expiring soon, or has the owner registered it a couple years into the future?


pages: 224 words: 48,804

The Productive Programmer by Neal Ford

anti-pattern, business process, c2.com, continuous integration, database schema, domain-specific language, don't repeat yourself, Firefox, general-purpose programming language, knowledge worker, Larry Wall, Ruby on Rails, side project, type inference, web application, William of Occam

With a fast connection, you may not even notice the lag, but you’re slowing down the whole Internet with all those false hits! Internet Explorer Internet Explorer (IE) makes it easier to type in addresses that contain standard prefixes and suffixes. Use the keys Ctrl-Enter to add “www.” to the front of an address and “.com” to the end. Firefox The same Internet Explorer shortcut works for the Windows version of Firefox as well. For Macintosh, Apple-Enter does the same thing. Firefox goes one better: for all the platforms it supports, Alt-Enter places a “.org” at the end. Firefox has other handy shortcut keys that no one seems to leverage. To go directly to a tab, you can use Ctrl + <TAB-NUMBER> in Windows or Apple + <TAB-NUMBER> in OS X. OK, this shortcut is worth a measly eight keystrokes per web page. But think of the number of web pages you visit every day, and those eight characters per page start to add up.

For example, one of the ideas that Raskin promotes is the idea of Quasimode keys, which act like the Shift key (in other words, changing the mode of the keyboard when held down). Enso takes over the pretty worthless Caps Lock key and uses it to launch applications and perform other tasks. You hold the Caps Lock key down and start typing a command, like OPEN FIREFOX, and it will open Firefox. Of course, that is cumbersome to type, so another Enso command is LEARN AS FF FIREFOX, which teaches Enso that the FF command launches Firefox. Enso does more than just launching. If you have a math expression like 4+3 in a document, you can highlight it and invoke the CALCULATE command, and Enso will replace your highlighted text with the value of the calculation. Enso is worth trying to see if Raskin’s views on launching mesh with yours. If you are using Windows Vista, it includes the launching part of these launcher applications.

To make it work, you must start up a proxy server and issue cryptic commands to give it instructions, which are basically just incantations at the command line. I’m not in an IDE, so I can’t use live templates or even macros. I can’t even use batch or shell scripts: I’m running against an interactive proxy. It didn’t take me long to realize that I should save these commands in my key macro tool: cmd=getNewBrowserSession&1=*firefox&2=8080 cmd=open&1=/art_emotherearth_memento/welcome&sessionId= The ugly line of code is issued after I start the proxy server for Selenium, in the very particular format that Remote Control Selenium requires. If you don’t know anything about Selenium, these commands won’t make sense. But making sense out of the commands isn’t the point of the example. This is just one of the hideous command strings that I must type from time to 34 CHAPTER 2: ACCELERATION time.


pages: 62 words: 15,274

Sass for Web Designers by Dan Cederholm

c2.com, don't repeat yourself, Firefox, Kickstarter, Ruby on Rails, web application

To ensure the gradient works in the most browsers possible and falls back to a solid color should the browser not support CSS gradients, we’ll need a hefty stack of properties: header nav[role="navigation"] ul li.active a { padding: 3px 8px; color: #fff; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; /* Fallback for sad browsers */ background-color: #d42a78; /* Mozilla Firefox */ background-image: -moz-linear-gradient(#ff70b1, #d42a78); /* Opera */ background-image: -o-linear-gradient(#ff70b1, #d42a78); /* WebKit (Safari/Chrome 10) */ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff70b1), color-stop(1, #d42a78)); /* WebKit (Chrome 11+) */ background-image: -webkit-linear-gradient(#ff70b1, #d42a78); /* IE10 */ background-image: -ms-linear-gradient(#ff70b1, #d42a78); /* W3C */ background-image: linear-gradient(#ff70b1, #d42a78); } FIG: 3.4: Shared heading styles on the Sasquatch Records site.

Who can remember all of these variations each time a gradient is needed? Let’s make this easier on ourselves. First, let’s build a mixin called linear-gradient, taking out the hex colors so that we can pass those in as $from and $to variables throughout the stylesheet using whatever hues we’d like. @mixin linear-gradient($from, $to) { /* Fallback for sad browsers */ background-color: $to; /* Mozilla Firefox */ background-image:-moz-linear-gradient($from, $to); /* Opera */ background-image:-o-linear-gradient($from, $to); /* WebKit (Safari 4+, Chrome 1+) */ background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, $from), color-stop(1, $to)); /* WebKit (Chrome 11+) */ background-image: -webkit-linear-gradient($from, $to); /* IE10 */ background-image: -ms-linear-gradient($from, $to); /* W3C */ background-image: linear-gradient($from, $to); } Notice that I’m using the $to color to specify the background-color fallback for browsers that don’t support CSS gradients.

Here’s an example of what’s inside mixins.scss: @mixin rounded($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } @mixin shadow($x, $y, $blur, $color) { -webkit-box-shadow: $x $y $blur $color; -moz-box-shadow: $x $y $blur $color; box-shadow: $x $y $blur $color; } @mixin shadow-inset($x, $y, $blur, $color) { -webkit-box-shadow: inset $x $y $blur $color; -moz-box-shadow: inset $x $y $blur $color; box-shadow: inset $x $y $blur $color; } @mixin transition($property) { -webkit-transition: $property .2s ease; -moz-transition: $property .2s ease; -o-transition: $property .2s ease; transition: $property .2s ease; } @mixin box-sizing { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } @mixin linear-gradient($from, $to) { /* Fallback for sad browsers */ background-color: $to; /* Mozilla Firefox */ background-image:-moz-linear-gradient($from, $to); /* Opera */ background-image:-o-linear-gradient($from, $to); /* WebKit (Chrome 11+) */ background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, $from), color-stop(1, $to)); /* WebKit (Safari 5.1+, Chrome 10+) */ background-image: -webkit-linear-gradient($from, $to); /* IE10 */ background-image: -ms-linear-gradient($from, $to); /* W3C */ background-image: linear-gradient($from, $to); } At the top of my main stylesheet (screen.scss in this case) where I define all of my layout and other site-specific styles, I use the @import rule to pull those in so that the mixins are available.


pages: 398 words: 86,023

The Wikipedia Revolution: How a Bunch of Nobodies Created the World's Greatest Encyclopedia by Andrew Lih

Albert Einstein, AltaVista, barriers to entry, Benjamin Mako Hill, c2.com, Cass Sunstein, citation needed, crowdsourcing, Debian, en.wikipedia.org, Firefox, Hacker Ethic, HyperCard, index card, Jane Jacobs, Jason Scott: textfiles.com, jimmy wales, Kickstarter, Marshall McLuhan, Mitch Kapor, Network effects, optical character recognition, Ralph Waldo Emerson, Richard Stallman, side project, Silicon Valley, Skype, slashdot, social software, Steve Jobs, The Death and Life of Great American Cities, The Wisdom of Crowds, urban planning, urban renewal, Vannevar Bush, wikimedia commons, Y2K

Contrast this to what many consider a close cousin, the Mozilla Foundation, which was also established in 2003. As maintainers of the popular Firefox Web browser and other free software packages, Mozilla has a novel revenue model that rakes in tens of millions of dollars a year. The legend in Silicon Valley is that Mozilla has more money than they know what to do with. How does Mozilla make out so well? The numbers are impressive. In October 2007, the Mozilla Foundation disclosed that their 2006 revenue was $66,840,850, with ninety full-time employees. Roughly 85 percent of this revenue came from Google, as it is the default option in the Firefox browser search bar. That and a Firefox-branded Google page as the standard home page means Mozilla gets lots of associated advertising and affiliate revenue. When users see the Google search listings resulting from the Firefox start page, any clicks on advertisements also generate revenue for the Mozilla Foundation.

Calacanis thinks there would be “$50,000 in the bank right now like Mozilla if they put up one advertisement on Wikipedia.”97 As the bad blood regarding the Spanish Fork has shown, advertising or any on-site revenue-generating scheme on the backs of the community is bound to be a dangerous option, even if only for discussion. It’s questionable whether the Mozilla strategy can be directly mapped over to the Wikipedia experience, as the community and the encyclopedia are so intertwined. The difference between Firefox and Wikipedia is the amount of community involvement. Firefox’s community is largely made up of users of the browser, as only a small number of people write the Firefox software. By contrast, Wikipedia depends on legions of volunteer editors who feel invested in the product. If they perceive money is made off the sweat of their work, there is a much larger constituency to deal with regarding the use of the funds. And if the community walks, the project will wither and become stale.

I could not have asked for better people to work with than Will Balliett and Brendan Duffy at Hyperion. I also have my agent, John Brockman, to thank, as he has engaged a fascinating set of authors of which I am privileged to be part. To Will Schwalbe, the original Hyperion editor who first put his faith behind a book about Wikipedia, I owe great thanks. The book was composed on a combination of open source and commercial software. I’m grateful to the many authors of NeoOffice, Mozilla Firefox, Text-Mate, Quicksilver, MacJournal, MyMind, TextExpander, and Colloquy as critical tools for writing. For accessing the Internet from China, OpenVPN, OpenSSH, Foxy-Proxy, Tor, and Skype helped cope with any issues regarding Internet blocking. Writing a book with a broken arm is no easy task, unless you have friends and relatives to help you through eight weeks of disability. These included Abigail Tay, Joe Merican, and Dr.


Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel

active measures, AGPL, barriers to entry, Benjamin Mako Hill, collaborative editing, continuous integration, corporate governance, Debian, Donald Knuth, en.wikipedia.org, experimental subject, Firefox, GnuPG, Hacker Ethic, Internet Archive, iterative process, Kickstarter, natural language processing, patent troll, peer-to-peer, pull request, revision control, Richard Stallman, selection bias, slashdot, software as a service, software patent, SpamAssassin, web application, zero-sum game

One famous example of trademark enforcement in free and open source software demonstrates these distinctions clearly. Case study: Mozilla Firefox, the Debian Project, and Iceweasel The Mozilla Foundation owns the trademarked name "Firefox", which it uses to refer to its popular free software web browser of the same name. The Debian Project, which maintains a long-running and also quite popular GNU/Linux distribution, wanted to package Firefox for users of Debian GNU/Linux. So far, so good: Debian does not need Mozilla's permission to package Firefox, since Firefox is open source software. However, Debian does need Mozilla's permission to call the packaged browser "Firefox" and to use the widely-recognized Firefox logo (you've probably seen it: a long reddish fox curling its body and tail around a blue globe) as the icon for the program, because those are trademarks owned by Mozilla.

After all, having Firefox distributed in Debian is good for Mozilla's mission of promoting openness on the Web. However, various technical and policy effects of the Debian packaging process left Debian unable to fully comply with Mozilla's trademark usage requirements, and as a result, Mozilla informed Debian that their Firefox package could not use the Firefox name or branding. No doubt Mozilla did so with some reluctance, as it is not ideal for them to have their software used without clear attribution. However, they could have given Debian a trademark license and yet chose not to; presumably, this is because Debian was doing something with the code that Mozilla did not want accruing to their own reputation.[100] This decision by Mozilla did not mean that Debian had to remove Firefox from their package system, of course.

Managing Participants Community and Motivation Delegation Praise and Criticism Prevent Territoriality The Automation Ratio Treat Every User as a Potential Participant Meeting In Person (Conferences, Hackfests, Code-a-Thons, Code Sprints, Retreats) Share Management Tasks as Well as Technical Tasks "Manager" Does Not Mean "Owner" Transitions Committers Choosing Committers Revoking Commit Access Partial Commit Access Dormant Committers Avoid Mystery Credit Forks Handling a Fork Initiating a Fork 9. Legal Matters: Licenses, Copyrights, Trademarks and Patents Terminology Aspects of Licenses The GPL and License Compatibility Choosing a License The GNU General Public License Contributor Agreements Doing Nothing Contributor License Agreements Proprietary Relicensing Problems with Proprietary Relicensing Trademarks Case study: Mozilla Firefox, the Debian Project, and Iceweasel Case study: The GNOME Logo and the Fish Pedicure Shop Patents Further Resources A. Canned Hosting Sites B. Obsolete Appendix (was: Free Version Control Systems) C. Obsolete Appendix (was: Free Bug Trackers) D. Obsolete Appendix: (was: Why Should I Care What Color the Bikeshed Is?) E. Obsolete Appendix (was: Example Instructions for Reporting Bugs) F.


jQuery UI 1.8: The User Interface Library for jQuery by Dan Wellman

Firefox, web application

The great thing about jQuery UI's simplified API is that once you have learned to use all of the existing components (as this book will show you), you'll be able to pick up any new components very quickly. As this book is being written, there are already a number of new components nearing release, with many more in the pipeline, and all of these components will automatically be ThemeRoller-ready. Browser support Like jQuery itself, jQuery UI supports all of the major browsers in use today, including the following: • IE6, IE7, IE8, and IE9 • Firefox 2, Firefox 3, and Firefox 4, and Firefox 5 • Opera 9, Opera 10, and Opera 11 • Safari 3, Safari 4, and Safari 5 • Chrome 1 to Chrome 9 The widgets are built from semantically correct HTML elements generated, as needed by the components. Therefore, we won't see excessive or unnecessary elements being created or used. [ 17 ] Introducing jQuery UI Book examples The library is as flexible as standard JavaScript.

Rich uploads with progressbar Instead of relying on user interaction to increase the value of the progressbar and therefore the completion of the specified task, we can instead rely on the system to update it; deterministic means simply that something must be able to update it accurately. [ 203 ] The Progressbar Widget In our final progressbar example, we can incorporate the HTML5 file API, in order to upload a file asynchronously, and can use the onprogress event to update the progressbar, while the file is uploading. Although the onprogress event is defined as part of an official W3C specification, it has only been implemented by Firefox and webkit. This example however, will only work in Firefox 3.5+, as webkit browsers do not implement the getAsBinary() method that we use on file objects. This example will also only work correctly using a full web server with PHP installed and configured. We won't be looking at the server-side part of the upload process in this example; we're not interested in what happens to the file once it's been uploaded, only in updating the progressbar based on feedback received from the system, while it is uploading.

States and images These classes set the images used for icons displayed in the content and heading containers, as well as any clickable elements including default, hover, active, highlight, focus, and error states. Image positioning All of the icon images used by the theme are stored in a single file (known as a sprite file), and are displayed individually by manipulating the background-position properties of the sprite file. This category sets the background positions for all individual icons. Corner radius CSS3 is used to give rounded corners to supporting browsers (just Firefox 3+, Safari 3+, Chrome 1+, Opera 10+, and IE9+). Overlays The image used for the generic overlay defined in the core CSS file is set here, as it is a class that implements a semi-transparent overlay over specified elements. The jQuery UI documentation features an extensive overview of the theming API at: http://docs.jquery.com/UI/Theming/API. Linking to the required framework files For rapid theming of all jQuery UI widgets in a development environment, we can link to all of the individual files using jquery.ui.all.css: <link rel="stylesheet" href="development-bundle/themes/smoothness/jquery.ui.all.css"> To use each file individually when testing a component such as the tabs widget for example, we would use the following <link> elements: <link rel="stylesheet" href="development-bundle/themes/base/jquery.ui.core.css"> <link rel="stylesheet" href="development-bundle/themes/base/jquery.ui.tabs.css"> <link rel="stylesheet" href="development-bundle/themes/base/jquery.ui.theme.css"> [ 30 ] Chapter 2 The CSS resources, when linked to separately, should be added to the HTML page in the following order—core.css, the widget's CSS file, and the theme.css file.


Eloquent JavaScript by Marijn Haverbeke

always be closing, domain-specific language, Donald Knuth, en.wikipedia.org, Firefox, hypertext link, job satisfaction, MITM: man-in-the-middle, premature optimization, slashdot, web application, WebSocket

function forceDirected_noRepeat(graph) { for (let i = 0; i < graph.length; i++) { let node = graph[i]; for (let j = i + 1; j < graph.length; j++) { let other = graph[j]; let apart = other.pos.minus(node.pos); let distance = Math.max(1, apart.length); let forceSize = -repulsionStrength / (distance * distance); if (node.hasEdge(other)) { forceSize += (distance - springLength) * springStrength; } let applied = apart.times(forceSize / distance); node.pos = node.pos.plus(applied); other.pos = other.pos.minus(applied); } } } Measuring this code shows a significant speed boost. It is twice as fast on Firefox 58, about 30 percent faster on Chrome 63, and 75 percent faster on Edge 6. The big boost on Firefox and Edge is only partially a result of the actual optimization. Because we need the inner loop to go over only part of the array, the new function replaces the for/of loops with regular for loops. On Chrome, this has no measurable effect on the speed of the program, but on Firefox simply not using iterators makes the code 20 percent faster—and on Edge it makes a 50 percent difference. So, different JavaScript engines work differently and may run programs at different speeds. A change that makes code run faster in one engine may not help (or may even hurt) in another engine—or even a different version of the same engine.

This was the dark age of compatibility, often called the browser wars. Web developers were left with not one unified web but two or three incompatible platforms. To make things worse, the browsers in use around 2003 were all full of bugs, and of course the bugs were different for each browser. Life was hard for people writing web pages. Mozilla Firefox, a not-for-profit offshoot of Netscape, challenged Internet Explorer’s position in the late 2000s. Because Microsoft was not particularly interested in staying competitive at the time, Firefox took a lot of market share away from it. Around the same time, Google introduced its Chrome browser, and Apple’s Safari browser gained popularity, leading to a situation where there were four major players, rather than one. The new players had a more serious attitude toward standards and better engineering practices, giving us less incompatibility and fewer bugs.

GraphNode.prototype.hasEdgeFast = function(other) { for (let i = 0; i < this.edges.length; i++) { if (this.edges[i] === other) return true; } return false; }; On Chrome, this shaves about 17 percent off the time it takes to compute the layout, which is most of the time taken by includes in the profile. On Edge, it makes the program 40 percent faster. But on Firefox, it makes it slightly (about 3 percent) slower. So, in this case, Firefox’s engine (called SpiderMonkey) did a better job optimizing calls to includes. The row labeled “Minor GC” in the profile gives us the time spent cleaning up memory that is no longer being used. Given that our program creates a huge number of vector objects, the 3 percent time spent reclaiming memory is strikingly low. JavaScript engines tend to have very effective garbage collectors.


Mastering Structured Data on the Semantic Web: From HTML5 Microdata to Linked Open Data by Leslie Sikos

AGPL, Amazon Web Services, bioinformatics, business process, cloud computing, create, read, update, delete, Debian, en.wikipedia.org, fault tolerance, Firefox, Google Chrome, Google Earth, information retrieval, Infrastructure as a Service, Internet of things, linked data, natural language processing, openstreetmap, optical character recognition, platform as a service, search engine result page, semantic web, Silicon Valley, social graph, software as a service, SPARQL, text mining, Watson beat the top human players on Jeopardy!, web application, wikimedia commons

ODE adds two options to the standard View menu, both in the main menu and the context menu (see Figure 4-21). The Data Explorer is available for Internet Explorer, Firefox, Safari, Google Chrome, and Opera (http://ode.openlinksw.com/#Download). Let’s install the add-on, say, for Firefox! 114 1. Go to http://s3.amazonaws.com/opldownload/ajax-tools/ode/1.1/ firefox3.0/ode.xpi. 2. Depending on your security settings, Firefox might prevent automatic installation. Click Allow to download the add-on. 3. The Software Installation pop-up asks for permission to proceed (“Install add-ons from authors whom you trust.”) Click Install Now. 4. Restart Firefox. Chapter 4 ■ Semantic Web Development Tools Figure 4-21. ODE options in the context menu Once installed, the plug-in becomes available from the View menu as well as the context menu.

Microformats can be implemented not only in (X)HTML markup but also in XML, RSS, Atom, and so on. Microformats can express site structure, link weight, content type, and human relationships with the class, rel, and rev attribute values. They are very easy to write, and a great deal of software supports them (the Operator and Tails Export add-ons for Firefox, the Michromeformats Google Chrome extension, the microformats transformer Optimus, or the Microformats Bookmarklet for Safari, Firefox, and IE). 24 Chapter 2 ■ Knowledge Representation However, due to limitations and open issues, other machine-readable annotation formats gradually overtook microformats. Applying various microformats as multiple values on the same a element, such as rel="nofollow" and rel="friend", cannot be used. The rev attribute used by the Vote Links microformat is not supported by HTML5.

Semantic Web browsers can convert non-linked data to Linked Data and create links to related URIs. They provide text search or SPARQL queries, or both, and support the five-star data deployment scheme discussed in Chapter 3, for data consumption, generation, aggregation, augment, and reinterpretation. Tabulator Tabulator is W3C’s Semantic Web browser and editor available as a web application and a Firefox plug-in at http://www.w3.org/2005/ajar/tab. It can display Linked Data in various visualization formats. Tabulator contains an RDF store written in JavaScript. The tool has two modes: Exploration Mode and Query Mode. 113 Chapter 4 ■ Semantic Web Development Tools In Exploration Mode, it displays a table of predicate-object pairs, which might also include nested properties. One of the exploration options is Outline Mode, with which the user can explore resources by opening the branches of the tree structure.


pages: 302 words: 73,946

People Powered: How Communities Can Supercharge Your Business, Brand, and Teams by Jono Bacon

Airbnb, barriers to entry, blockchain, bounce rate, Cass Sunstein, Charles Lindbergh, Debian, Firefox, if you build it, they will come, IKEA effect, Internet Archive, Jono Bacon, Kickstarter, Kubernetes, lateral thinking, Mark Shuttleworth, Minecraft, minimum viable product, more computing power than Apollo, planetary scale, pull request, Richard Stallman, Richard Thaler, sexual politics, Silicon Valley, Travis Kalanick, Y Combinator

,” TED, October 2012, https://www.ted.com/talks/dan_ariely_what_makes_us_feel_good_about_our_work. 22. “Salesforce Customers List,” Sales Inside, accessed May 2, 2018, https://www.salesinsideinc.com/services-details/salesforce-customers-list. 23. “Salesforce Trailblazer Community,” Salesforce, accessed February 25, 2019, https://success.salesforce.com/. 24. “Firefox Crop Circle,” FirefoxCropCircle.com, accessed November 30, 2018, https://firefoxcropcircle.com/circle/; “SpreadFirefox,” Mozilla Firefox, November 2013, https://blog.mozilla.org/press/files/2013/11/nytimes-firefox-final.pdf. 25. “Pebble Time—Awesome Smartwatch, No Compromises,” Kickstarter, accessed November 25, 2018, https://www.kickstarter.com/projects/getpebble/pebble-time-awesome-smartwatch-no-compromises/description; “Exploding Kittens,” Kickstarter, accessed November 25, 2018, https://www.kickstarter.com/projects/elanlee/exploding-kittens/description. 26.

Microsoft had produced the ubiquitous Internet Explorer web browser, but there were concerns that Microsoft would try to lock down the open standards of the web so many sites would not work in other browsers. The new Mozilla community, forged from the ashes of Netscape, kicked off the GetFirefox community. They advocated for an open web and open standards. They fervently advocated Firefox as a solution for this freer and more-open Internet. As the global community grew, they promoted this message online and in local communities. They were incredibly creative in how they attracted eyeballs. They produced swag, did online promotion, and even produced crop circles and generated enough money to put a full-page ad in the New York Times.24 There is little doubt that this community had a profound impact in the growth of Firefox and, subsequently, an open web. With the birth of crowdfunding on platforms such as Kickstarter and Indiegogo, community advocacy and promotion has similarly played a pivotal role.

One person’s creativity is another person’s snooze-fest, but you are going to need a mountain of it to successfully tap into and build momentum in your target audience. The world is fighting more than ever before for our attention. You understand the value you want to create. You know your audience. You know ways to build growth and engage with your audience. Now you need to come up with ideas that will both surprise and intrigue them. Without wishing to sound like a raging cliché, think outside the box. The Firefox community made crop circles as part of their advocacy. They solicited donations from their fifty-thousand-strong community and put an ad in the New York Times where the logo was comprised of the names of the donors.9 They thought bigger, and it grabbed people’s attention. The best ideas come from different brains, so get more brains involved in the process. You never know: you just might touch on something that electrifies your audience with excitement.


Sass and Compass for Designers by Ben Frain

anti-pattern, don't repeat yourself, Firefox, Steve Jobs

Debug help in the browser Thanks to the popularity of Sass there are now experimental features in browsers to make debugging Sass even easier. When inspecting an element with developer tools, the source file and line number is provided, making it easier to find the offending selector. For Chrome, here's a step-by-step explanation: http://benfra.in/1z1 Alternatively, if using Firefox, check out the FireSass extension: https://addons.mozilla.org/en-us/firefox/addon/ firesass-for-firebug/ Let's create another partial file called _modules.scss. This will contain all the modular pieces of code. This means, should we need to move the .testimonial section (which should be a modular section) in the source code, it's not necessary to move it from one partial file to another (which would be the case if the partial files were named according to their existing layout).

This time we'll debug the current value returned by the bb-opos function we looked at earlier in the chapter: @debug bb-opos($bb-flow); This produces a message ending like this on the command line: Chapter8/code/sass/partials/_chapter-examples.scss:48 DEBUG: right Here's a screenshot to illustrate this: The @debug directive isn't something that's needed every day but it can be useful when trying to troubleshoot custom mixins and functions. Although we covered it in Chapter 3, Nesting, Extend, Placeholders, and Mixins, in case you missed it, both the Chrome Developer Tools and the FireSass plugin for Firefox provide debug info in the browser. There's a step-by-step for Chrome at http://benfra.in/1z1 and the FireSass plugin can be found at https://addons.mozilla.org/en-US/ firefox/addon/firesass-for-firebug/. [ 218 ] Chapter 8 The @warn directive Sass also has a @warn directive that enjoys similar functionality to @debug. For example: @warn $theme-tint; Unlike @debug, messages generated by @warn can be universally suppressed by adding the following to Compass's config.rb file: sass_options = {:quiet => true} To re-enable warnings, either comment out the line or amend it like so: sass_options = {:quiet => false} Summary In this chapter, we have had a good look at some of Sass's most complex, yet powerful capabilities.

Until then, we've got the grid within a grid taking care of the layout of these links: [ 141 ] Responsive and Flexible Grids with Sass and Compass Sub-pixel rounding issues I have a confession; I've been keeping something from you. Take a look at the following screenshot and if you are the kind of designer that freaks out when there is a pixel astray, please make sure you're sitting down. Can you see an odd-sized gap before the final red grid item? The screenshot is taken in Safari 6. This same problem isn't apparent in Chrome or Firefox. That's because Safari rounds down sub-pixels. Why? Although the outer dimensions of the grid (the context) may be set as ems, all the column widths within the grid are defined as percentages. That's a large part of what enables the grid to be responsive to different viewports. To actually paint the page, browsers convert percentage values into pixels. Parts of pixels cannot be rendered so they are rounded.


pages: 73 words: 17,793

HTML5 for Web Designers by Jeremy Keith

Firefox, web application

Although the MP3 format has become ubiquitous, it is not an open format. Because the format is patent-encumbered, technologies can’t decode MP3 files without paying the patent piper. That’s fine for corporations like Apple or Adobe, but it’s not so easy for smaller companies or open-source groups. Hence, Safari will happily play back MP3 files while Firefox will not. There are other audio formats out there. The Vorbis codec—usually delivered as an .ogg file—isn’t crippled by any patents. Firefox supports Ogg Vorbis—but Safari doesn’t. Fortunately, there’s a way to use the audio element without having to make a Sophie’s Choice between file formats. Instead of using the src attribute in the opening <audio> tag, you can specify multiple file formats using the source element: <audio controls> <source src="witchitalineman.ogg"> <source src="witchitalineman.mp3"> </audio> A browser that can play back Ogg Vorbis files will look no further than the first source element.

SVG, Scalable Vector Graphics, is an XML format that can describe the same kind of shapes as canvas. Because XML is a text-based data format, the contents of SVG are theoretically available to screen readers. FIG 3.04: Using canvas to generate a graph from data input by users. In practice, SVG hasn’t captured the imagination of developers in the same way that canvas has. Even though canvas is the new kid on the block, it already enjoys excellent browser support. Safari, Firefox, Opera, and Chrome support canvas. There’s even a JavaScript library that adds canvas support to Internet Explorer (http://bkaprt.com/html5/4).4 Given its mantras of “pave the cowpaths,” and “don’t reinvent the wheel,” it might seem odd that the WHATWG would advocate canvas in HTML5 when SVG already exists. As is so often the case, the HTML5 specification is really just documenting what browsers already do.

The long URL: http://www.w3.org/TR/wai-aria/roles#role_definitions [↵] Index 2012, 7, 11 2022, 7 A Ajax, 22, 63, 76, 80 Allsopp, John, 58 API, 20–21, 24–25, 28, 32 Apple, 4, 29, 34 ARIA, 80, 82 article, 67, 75, 76 aside, 65, 67, 78 audio, 22, 29–37, 82 autobuffer, 32–33 autocomplete, 44–45 autofocus, 42–44 autoplay, 30–31, 37 B Berners-Lee, Sir Tim, 1, 5 Bespin, 26 big, 18 C canvas, 23–29, 70, 82 character encoding, 14 Chrome, 29 cite, 19 class, 57 color, 53, 83 controls, 31, 33–38 CSS, 3, 7, 14, 18, 20, 39, 40, 57, 76, 79 D datalist, 45–46 date, 51–53 datetime, 51–52 datetime-local, 51–52 div, 63, 69 doctype, 12–13, 16, 81, 82 document.write, 21 DOM, 27, 41, 50, 57, 63 drag and drop, 21 E em, 18, 60 email, 47, 83 error handling, 11 F Firefox, 29, 34 Flash, 22, 26, 30, 35, 37 font, 11, 18, 77 footer, 64–65, 66, 78, 81 French Revolution, 9 H header, 64, 67, 78, 81, 83 hgroup, 74, 78 Hickson, Ian, 4, 7, 10, 85 HTML 3.2, 13 HTML 4.01, 2, 10, 12, 14, 81 I IETF, 2 img, 2, 22, 24, 39 innerHTML, 21 input, 44, 45, 47, 82 Internet Explorer, 3, 7, 21, 29, 35, 78, 82 IRC, 85 J JavaScript, 14, 15, 20–21, 40, 50, 54, 79, 82 jQuery, 28 L Lawson, Bruce, 83 lint, 16 M mark, 60 microdata, 59 microformats, 10, 57–59, 61 Mobile Safari, 48 Modernizr, 82 month, 51, 52 Mosaic, 2, 23 Mozilla, 4, 26 MP3, 30, 34 MP4, 38 N nav, 66–67, 78, 80 Nottingham, Mark, 59 number, 50–51 O obsolete, 17 Ogg Vorbis, 34, 36 Opera, 4, 29, 49, 52 outline, 70–76, 79–80 P pattern, 54 Pilgrim, Mark, 84 placeholder, 41–42 poster, 37, 38 preload, 33, 37 progress, 62–63 pubdate, 67 Python, 15 Q QuickTime, 30 R range, 49–51, 83 RDFa, 58–59 Real Audio, 30 required, 44 role, 81 S Safari, 29, 33, 47, 49, 50 scoped, 76–77 search, 47, 60, 81, 83 sectioning content, 70–75, 79 sectioning roots, 75 SGML, 1 Sharp, Remy, 79, 82, 84 significant white space, 15 Sivonen, Henri, 81 small, 18 Sneddon, Geoffrey, 79 source, 34–37, 38 strong, 60 SVG, 28–29 syntax, 6, 15–16, 31, 35 T table, 28 tel, 47 Theora Video, 38 time, 61–62 U UndoManager, 21 url, 47 V validate, 53, 54, 81 video, 37–39, 70, 82, 83 W W3C, 2–6, 9, 16, 29, 41, 81, 84 Web Apps 1.0, 4–5, 21 Web Forms 2.0, 5, 41 Web Standards Project, 3 week, 52 WHATWG, 4–6, 9, 29, 41, 84, 85 window.history, 21 X XHTML 1.0, 2–3, 12, 15–16 XHTML 1.1, 3 XHTML 2, 3–4, 5, 6, 9, 10 XML, 2–3, 5, 6, 15, 29, 57 XMLHttpRequest, 29 Y year, 52 About A Book Apart Web design is about multi-disciplinary mastery and laser focus, and that’s the thinking behind our new line of brief books for people who make websites.


pages: 982 words: 221,145

Ajax: The Definitive Guide by Anthony T. Holdener

AltaVista, Amazon Web Services, business process, centre right, create, read, update, delete, database schema, David Heinemeier Hansson, en.wikipedia.org, Firefox, full text search, game design, general-purpose programming language, Guido van Rossum, information retrieval, loose coupling, MVC pattern, Necker cube, p-value, Ruby on Rails, slashdot, sorting algorithm, web application

The first thing that comes to mind, especially in browsers such as Firefox, is the ability to change the browser’s theme. In addition, most browsers also enable users to change such aspects as the page’s font size, style, and character encoding. Figure 11-1 shows these user choices in a typical Firefox browser. Typically, you’d find these choices under the browser’s View menu. In Internet Explorer, the user will find in the View menu choices for font size (Text Size) and character encoding. Natively, Internet Explorer does not enable users to change the style of a page. For Firefox, the View menu allows the user to change the font size (Text Size), page style, and character encoding. These choices are also available in Opera. 363 Figure 11-1. The View menu of a Firefox browser allows for user changes Stylesheets As I said, Internet Explorer does not natively allow the user to change the style of someone else’s page.

Therefore, we will take a closer look not only at how to create these boxes, but also at how to use them effectively with Ajax driving the content. The Alert Box The alert box takes many forms depending on the theme of the desktop and the browser being used. This makes an alert from Internet Explorer look different depending on whether the user is using the default theme, the Windows classic theme, the Windows XP theme, and so forth. This problem will occur across platforms; the alert for Firefox on the Windows platform will look different from the alert for Firefox on the Linux platform. Figures 10-1, 10-2, and 10-3 show different alert windows on Windows, Mac OS X, and Linux platforms, respectively. The problem with these windows looking so different is that there is never any continuity between the alert window and the application that is being used. We want to change this. Integrating the Window To integrate an alert window into a web application, unfortunately you must create the window from scratch.

Browsers such as Internet Explorer enable users to choose from five font sizes (Smallest, Smaller, Medium, Larger, Largest), whereas most other browsers allow users to just increment or decrement the font size through steps (percentages). Character Encoding All browsers also enable users to choose the character encoding on the page, typically by selecting View ➝ Character Encoding from the File menu, as shown in Figure 11-5. 366 | Chapter 11: Customizing the Client Figure 11-4. The Text Size drop down found in the Firefox browser Figure 11-5. The Character Encoding drop down found in the Firefox browser Character encoding is very important, especially in Eastern European and Asian countries, where the characters used are not the standard Western Roman ones. Some browsers even allow users to change the direction in which the characters are written to the page. This is also an important characteristic that a browser should utilize when rendering Asian character sets.


pages: 410 words: 101,260

Originals: How Non-Conformists Move the World by Adam Grant

Albert Einstein, Apple's 1984 Super Bowl advert, availability heuristic, barriers to entry, business process, business process outsourcing, Cass Sunstein, clean water, cognitive dissonance, creative destruction, cuban missile crisis, Daniel Kahneman / Amos Tversky, Dean Kamen, double helix, Elon Musk, fear of failure, Firefox, George Santayana, Ignaz Semmelweis: hand washing, Jeff Bezos, job satisfaction, job-hopping, Joseph Schumpeter, Kickstarter, Lean Startup, Louis Pasteur, Mahatma Gandhi, Mark Zuckerberg, meta analysis, meta-analysis, minimum viable product, Nelson Mandela, Network effects, pattern recognition, Paul Graham, Peter Thiel, Ralph Waldo Emerson, random walk, risk tolerance, Rosa Parks, Saturday Night Live, Silicon Valley, Skype, Steve Jobs, Steve Wozniak, Steven Pinker, The Wisdom of Crowds, women in the workforce

But when he looked at the results, he was stunned: Employees who used Firefox or Chrome to browse the Web remained in their jobs 15 percent longer than those who used Internet Explorer or Safari. Thinking it was a coincidence, Housman ran the same analysis for absences from work. The pattern was the same: Firefox and Chrome users were 19 percent less likely to miss work than Internet Explorer and Safari fans. Then he looked at performance. His team had assembled nearly three million data points on sales, customer satisfaction, and average call length. The Firefox and Chrome users had significantly higher sales, and their call times were shorter. Their customers were happier, too: After 90 days on the job, the Firefox and Chrome users had customer satisfaction levels that Internet Explorer and Safari users reached only after 120 days at work.

Their customers were happier, too: After 90 days on the job, the Firefox and Chrome users had customer satisfaction levels that Internet Explorer and Safari users reached only after 120 days at work. It’s not the browser itself that’s causing them to stick around, show up dependably, and succeed. Rather, it’s what their browser preference signals about their habits. Why are the Firefox and Chrome users more committed and better performers on every metric? The obvious answer was that they’re more tech savvy, so I asked Housman if he could explore that. The employees had all taken a computer proficiency test, which assessed their knowledge of keyboard shortcuts, software programs, and hardware, as well as a timed test of their typing speed. But the Firefox and Chrome group didn’t prove to have significantly more computer expertise, and they weren’t faster or more accurate typists. Even after accounting for those scores, the browser effect persisted. Technical knowledge and skill weren’t the source of their advantage.

Almost two thirds of the customer service agents used the default browser, never questioning whether a better one was available. To get Firefox or Chrome, you have to demonstrate some resourcefulness and download a different browser. Instead of accepting the default, you take a bit of initiative to seek out an option that might be better. And that act of initiative, however tiny, is a window into what you do at work. The customer service agents who accepted the defaults of Internet Explorer and Safari approached their job the same way. They stayed on script in sales calls and followed standard operating procedures for handling customer complaints. They saw their job descriptions as fixed, so when they were unhappy with their work, they started missing days, and eventually just quit. The employees who took the initiative to change their browsers to Firefox or Chrome approached their jobs differently.


pages: 603 words: 141,814

Python for Unix and Linux System Administration by Noah Gift, Jeremy M. Jones

Amazon Web Services, bash_history, Bram Moolenaar, cloud computing, create, read, update, delete, database schema, Debian, distributed revision control, Firefox, Guido van Rossum, industrial robot, inventory management, job automation, Mark Shuttleworth, MVC pattern, skunkworks, web application

Let’s start backward this time and see what it looks like when we query it: snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.28664.100 UCD-SNMP-MIB::ucdavis.28664.100.1.1 = INTEGER: 1 UCD-SNMP-MIB::ucdavis.28664.100.2.1 = STRING: "FirefoxHits" UCD-SNMP-MIB::ucdavis.28664.100.3.1 = STRING: "/usr/bin/python /opt/local/snmp_scripts/agent_ext_logs.py" UCD-SNMP-MIB::ucdavis.28664.100.100.1 = INTEGER: 0 UCD-SNMP-MIB::ucdavis.28664.100.101.1 = STRING: "Total number of Firefox Browser Hits: 15702" UCD-SNMP-MIB::ucdavis.28664.100.102.1 = INTEGER: 0 UCD-SNMP-MIB::ucdavis.28664.100.103.1 = "" If you look at the value of 100.101.1, you will see the output of a script that uses a generator pipeline to parse an Apache log and look for all Firefox hits in the log. It then sums them and returns the output via SNMP. Example 7-5 is the script that gets run when we query this OID. Example 7-5. Generator pipeline to look for total firefox hits in Apache logfile import re """Returns Hit Count for Firefox""" def grep(lines,pattern="Firefox"): pat = re.compile(pattern) for line in lines: if pat.search(line): yield line def increment(lines): num = 0 for line in lines: num += 1 return num wwwlog = open("/home/noahgift/logs/noahgift.com-combined-log") column = (line.rsplit(None,1)[1] for line in wwwlog) match = grep(column) count = increment(match) print "Total Number of Firefox Hits: %s" % count In order for our query to work in the first place, we needed to tell snmpd.conf about this script, and here is what that section looks like: syslocation "O'Reilly" syscontact bofh@oreilly.com rocommunity public exec helloworld /usr/bin/python -c "print 'hello world from Python'" exec .1.3.6.1.4.1.2021.28664.100 FirefoxHits /usr/bin/python /opt/local/snmp_scripts/agent_ext_logs.py The magic portion is the last line, in which .1.3.6.1.4.1.2021 is the ucdavis enterprise number, 28664 our enterprise number, and 100 is some contrived value that we decided we wanted to use.

If we specify a field parameter, the search criteria has to match that field in order for that item to be included in the result set: In [1]: ps = !ps aux In [2]: ps.grep('jmjones', field=0) Out[2]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value: 0: jmjones 5361 0.0 0.1 46412 1828 ? SL Apr11 0:00 /usr/bin/gnome-keyring-daemon -d 1: jmjones 5364 0.0 1.4 214948 14552 ? Ssl Apr11 0:03 x-session-manager .... 53: jmjones 32425 0.0 0.0 3908 584 ? S Apr15 0:00 /bin/sh /usr/lib/firefox/run-mozilla. 54: jmjones 32429 0.1 8.6 603780 88656 ? Sl Apr15 2:38 /usr/lib/firefox/firefox-bin This matched the exact rows that we wanted, but printed out the whole row. To get at just the PID, we’ll have to do something like this: In [3]: ps.grep('jmjones', field=0).fields(1) Out[3]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value: 0: 5361 1: 5364 .... 53: 32425 54: 32429 And with that, we are able to meet the goal of performing that specific awk filter.

Getting output from one-liners isn’t really Python’s strength, and it is kind of silly. Here is an example of a script that parses the total number of Firefox hits in an Apache log and then returns the number for a custom enterprise number. Let’s start backward this time and see what it looks like when we query it: snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.28664.100 UCD-SNMP-MIB::ucdavis.28664.100.1.1 = INTEGER: 1 UCD-SNMP-MIB::ucdavis.28664.100.2.1 = STRING: "FirefoxHits" UCD-SNMP-MIB::ucdavis.28664.100.3.1 = STRING: "/usr/bin/python /opt/local/snmp_scripts/agent_ext_logs.py" UCD-SNMP-MIB::ucdavis.28664.100.100.1 = INTEGER: 0 UCD-SNMP-MIB::ucdavis.28664.100.101.1 = STRING: "Total number of Firefox Browser Hits: 15702" UCD-SNMP-MIB::ucdavis.28664.100.102.1 = INTEGER: 0 UCD-SNMP-MIB::ucdavis.28664.100.103.1 = "" If you look at the value of 100.101.1, you will see the output of a script that uses a generator pipeline to parse an Apache log and look for all Firefox hits in the log.


pages: 996 words: 180,520

Nagios: System and Network Monitoring, 2nd Edition by Wolfgang Barth

business process, Chuck Templeton: OpenTable:, Debian, en.wikipedia.org, Firefox, RFC: Request For Comment, web application

* * * [324] svn co svn://svnanon.samba.org/lorikeet/trunk/mod_auth_ntlm_winbind_mod_auth_ntlm_winbind [325] http://samba.org/ftp/unpacked/lorikeet/mod_auth_ntlm_winbind/ [326] http://adldap.sourceforge.net/mod_auth_ntlm_winbind.php E.4 Mozilla Firefox as a Web Client Configuring the Mozilla Web browser in Windows XP is very simple, provided that the workstation is a member in the Active Directory domain. With the address about:config you can call up the current configuration in Firefox and enter negotiate as the filter (see Figure E-2). In the network.negotiate-auth.trusted-uris parameter you enter all hosts or domains for which an automatic login should take place. Multiple entries are separated by spaces or commas. If a target host or its domain is not in the list, Firefox will certainly ask for the user name and password. These are transmitted in plain text, however, which is why you should prefer automatic login in all cases. Figure E-2. Single sign-on via SPNEGO/Kerberos is enabled in the Firefox settings under network.negotiate In Linux you can also authenticate yourself with Firefox automatically via the negotiation procedure.

This plugin does not work under Linux, however; in Windows it works with Internet Explorer, and also with Netscape, Mozilla, and Firefox.[159] A good overview of VRML software, organized according to operating system and browser, is provided by the National Institute of Standards and Technology (NIST) on its Web site.[160] Of the VRML plugins for Linux, OpenVRML,[161] and free WRL[162] are the most likely to be used. The standard Linux distributions usually do not include a finished package. OpenVRML is included in Fedora in Extras; on the homepage of freeWRL there are binary packages for Fedora and Ubuntu. You should not try compiling the software yourself unless you are an experienced system administrator or software developer: there are a large number of pitfalls. If you have never worked with the Java compiler before and have not compiled complex software packages such as Mozilla or Firefox yourself, then you should leave it alone.

Single sign-on via SPNEGO/Kerberos is enabled in the Firefox settings under network.negotiate In Linux you can also authenticate yourself with Firefox automatically via the negotiation procedure. You need only a valid user ticket to do this. As long as the Linux workstation logins are not already actively processed via Kerberos, it is enough just to obtain the ticket manually with kinit. In addition the file /etc/krb5.conf must be configured as described in E.2.3 Kerberos configuration from page 642. As a normal user, you fetch the ticket with the realm of the corresponding Windows user: user@linux:~$ kinit myuser@EXAMPLE.NET Password for myuser@EXAMPLE.NET: ****** Afterward, you can check with klist to see whether you really have received a ticket. This is usually only valid for eight hours. After the time has expired, you must fetch a new ticket, because without a valid ticket Firefox will announce itself again with the user/password query.


pages: 215 words: 55,212

The Mesh: Why the Future of Business Is Sharing by Lisa Gansky

Airbnb, Amazon Mechanical Turk, Amazon Web Services, banking crisis, barriers to entry, carbon footprint, Chuck Templeton: OpenTable:, cloud computing, credit crunch, crowdsourcing, diversification, Firefox, fixed income, Google Earth, industrial cluster, Internet of things, Joi Ito, Kickstarter, late fees, Network effects, new economy, peer-to-peer lending, recommendation engine, RFID, Richard Florida, Richard Thaler, ride hailing / ride sharing, sharing economy, Silicon Valley, smart grid, social web, software as a service, TaskRabbit, the built environment, walkable city, yield management, young professional, Zipcar

I’ve seen up close how open architecture can drive hyperinnovation, while creating a greater sense of community. Mozilla, where I have been an active friend and adviser for years, is perhaps the best example of that ethos, system, and commitment. Mozilla developed the browser Firefox to create a better Web experience. Many of us were concerned about one or a few companies controlling the channel that has become the Internet. Firefox’s intellectual property is held under a special type of open-source license. The code, developed by community and incorporated into Firefox, continues to be held by those members, who in return grant access to Mozilla to embed and use it. This “communal IP,” as I call it, is a wonderful example of the share economy ethos that was, and hopefully will remain, at the core of the Internet. Mozilla, Creative Commons, Wikipedia, and Architecture for Humanity remain strong embodiments of that ethos.

See Product design double bottom line of energy cooperatives government initiatives for green business practices and profits green criteria and purchasing decisions Mesh companies purchasing decisions, green drivers of recycling and reuse services sustainable design upcycling waste management, natural approach to Etsy Expedia Expensure Expert-advice sharing, Mesh companies for Facebook Firefox, community input First mover advantage Flash branding Flextronics, Mesh strategies Florida, Richard Folcia, Federico Food co-ops, Mesh companies Freepeats FreshlyBranded FriendlyFavor Friendster Full Mesh model Gardening, Mesh companies Geek Squad General Electric Get Satisfaction Global Green Godin, Seth Goodall, Jane GoodGuide Goods swaps, Mesh companies Google Google Earth Gordon, Chuck Green initiatives.

See Income and profits and social networks. See Social networking starting Mesh company Sweet Spot trends influencing growth of trust building Millennial generation Mobile networks digital translation to physical and flash branding as foundation of the Mesh share-based business operation users, increase in Modular design Mohsenin, Kamran Movie rentals online, Mesh companies Mozilla Firefox Music-based businesses, Mesh companies Natural ecosystem, relationship to Mesh ecosystem Netflix annual sales as information business Mesh strategy perfection recommendation engine recommendations Network effect Niche markets for maintaining/servicing products Mesh companies opening, reason for sharing as North Portland Tool Library (NPTL) Ofoto Olapic Ombudsman Open Architecture Network Open Design Open innovation service provider Open networks advantages of Architecture for Humanity communal IP concept and marketing products openness versus proprietary approach and product improvement software development OpenTable O’Reilly, Tim Ostrom, Elinor Own-to-Mesh model car-sharing services profits, generation from retirees as customers Partnerships characteristics of corporations and Mesh companies income generation from in Mesh ecosystem unexpected value of Patagonia recycled textiles of Walmart partnership Paul, Sunil Payne, Steven Peer-to-peer lending.


Data Wrangling With Python: Tips and Tools to Make Your Life Easier by Jacqueline Kazil

Amazon Web Services, bash_history, cloud computing, correlation coefficient, crowdsourcing, data acquisition, database schema, Debian, en.wikipedia.org, Firefox, Google Chrome, job automation, Nate Silver, natural language processing, pull request, Ronald Reagan, Ruby on Rails, selection bias, social web, statistical model, web application, WikiLeaks

Sele‐ nium supports many different browsers, but ships with a built-in driver for Firefox. If you don’t have Firefox installed, you can either install it, or install the Selenium driver for Chrome, Internet Explorer, or Safari. Let’s see if we can open a web page using Selenium (in our examples, we’ll be using Firefox, but it’s very easy to switch and use a different driver): from selenium import webdriver browser = webdriver.Firefox() browser.get('http://www.fairphone.com/we-are-fairphone/') browser.maximize_window() Imports the webdriver module from Selenium. This module is used to call any installed drivers. Instantiates a Firefox browser object by using the Firefox class from the web driver module. This should open a new Firefox window on your computer. Accesses the URL we want to scrape by using the get method and passing a URL.

Analyzing a Web Page Most of your time web scraping will be spent staring at markup in your browser and figuring out how to interact with it. Getting used to your favorite browser’s debug‐ ging or development tools is an essential part of becoming an advanced web scraper. Depending on what browser you use, the tools might have different names and func‐ tionality, but the concepts are the same. You’ll want to educate yourself on your favor‐ ite browser’s tools, be it Internet Explorer, Safari, Chrome, or Firefox. The basics of every browser debugger are similar. You’ll have an area where you can see the requests and page load data (usually called Network or something similar). You’ll have another area where you can analyze the markup of the page and see the styles and content in each tag (usually called Inspection or Elements or DOM). You’ll have a third area where you can see JavaScript errors and interact with the JavaScript on the page, usually called Console.

When researching child labor in Africa, we came across data connecting child labor 282 | Chapter 11: Web Scraping: Acquiring and Storing Data from the Web practices with conflicts. This led us to organizations working to stop conflict zones and conflict mining across Africa. Open up a page for one of those organizations: the Enough Project’s Take Action page. When we first open our developer tools—select Tools→Developer Tools in Chrome, press F12 in Internet Explorer, choose Tools→Web Developer→Inspector in Firefox, or enable the Develop menu in Safari’s advanced preferences—we will see markup in one panel, CSS rules and styles in another small panel, and the actual page in a panel above the tools. Depending on your browser, the layout might be different, but the tools should be similar enough to see these features (displayed in Figure 11-2). Figure 11-2. Enough Project Take Action page If you move your cursor over an element in the markup section (Inspection tab) of the developer tools, you will probably see differ‐ ent areas of the page highlight.


pages: 324 words: 87,064

Learning Ext Js by Shea Frederick

call centre, Firefox, framing effect, side project, web application

Their editor can debug JavaScript, CSS, PHP, and many other languages as you type, and the best part is that you can link the editor up with your libraries and classes to get code auto-completion specific to your development. The debugger can alert you to errors in your code before you get to the browser (enable the JSLint debugger), and can suggest fixes for the errors. The final point here is an absolute necessity—get Firefox and Firebug installed on your computer! Don't even ask why, because Firebug will soon become the program you just cannot do your job without. Soon, you will be wondering how you ever got any work done before Firebug. What it does is allows you to monitor and interact with the web page in real time. When you start working with singlepage web applications and AJAX, you quickly lose the ability to look at the requests and responses for communications such as form submission.

One of the things that Firebug provides you with is a way to watch and inspect this communication. The other main thing that it does is allow you to modify the HTML and JavaScript in your web page and watch these changes take effect in real time. The built-in script debugger lets us pause code execution and inspect or even modify code and variables. Once you are set up with a local (or remote) development web server, your favorite editor and debugger, and Firefox with Firebug, you are ready to start Learning Ext JS. Who is this book for This book is written for Web Application Developers who are familiar with HTML, but may have little to no experience with JavaScript application development. If you are starting to build a new web application, or you are revamping an existing web application, then this book is for you. Conventions In this book, you will find a number of styles of text that distinguish between different kinds of information.

Cross-browser DOM (Document Object Model) I am sure I don't need to explain the pitfalls of browser compatibility. From the first time you create a DIV tag and apply a style to it, it becomes apparent that it's not going to look the same in every browser unless you are very diligent. When we use Ext widgets, the browser compatibility is taken care of by the Ext library, so that each widget looks exactly the same in most of the popular browsers, which are: • Internet Explorer 6+ • Firefox 1.5+ (PC, Mac) • Safari 2+ • Opera 9+ (PC, Mac) Event-driven interfaces Events describe when certain actions happen. An event could be a user action such as a click on an element, or it could be a response to an AJAX call. When a user interacts with a button, there is a reaction, with not just one but many events happening. There is an event for the cursor hovering over the button, and an event for the cursor clicking on the button, and an event for the cursor leaving the button.


pages: 260 words: 67,823

Always Day One: How the Tech Titans Plan to Stay on Top Forever by Alex Kantrowitz

accounting loophole / creative accounting, Albert Einstein, AltaVista, Amazon Web Services, augmented reality, Automated Insights, autonomous vehicles, Bernie Sanders, Clayton Christensen, cloud computing, collective bargaining, computer vision, Donald Trump, drone strike, Elon Musk, Firefox, Google Chrome, hive mind, income inequality, Infrastructure as a Service, inventory management, iterative process, Jeff Bezos, job automation, Jony Ive, knowledge economy, Lyft, Mark Zuckerberg, Menlo Park, new economy, Peter Thiel, QR code, ride hailing / ride sharing, self-driving car, Silicon Valley, Skype, Snapchat, Steve Ballmer, Steve Jobs, Steve Wozniak, Tim Cook: Apple, uber lyft, wealth creators, zero-sum game

When Chrome debuted, Pichai had to sell it to two entities: the public and his colleagues, many of whom had poured significant effort into developing Firefox. Google had invested in Mozilla, the nonprofit that built Firefox, in a deal that made Google the browser’s default search engine. “The idea of going and competing with Firefox is not something any of us wanted to do,” Upson told me. Pichai won over his colleagues not by brute-forcing his product, but by letting them figure it out for themselves. He never mandated that Googlers use Chrome. “It was, ‘Could we win over our employees just on the merits of the product itself?’” Upson said. “Even today, you don’t see everyone using Chrome at Google. You still see people using Firefox.” This soft-handed approach won Pichai trust across divisions inside Google, and from Google’s founders.

It took the team down to essentially maintenance mode.” With Microsoft impeding Internet Explorer, the browser became slow and bloated. This wasn’t received well by Google leadership, who saw Microsoft attacking its search business and hampering its productivity tools as well. That Microsoft carried out this attack with a poorly functioning browser made it susceptible to challenge. Google at first significantly invested in Mozilla Firefox, Internet Explorer’s top competitor. But at a certain point, the company decided its ideal browser needed to be built from the ground up, and that Google ought to build it itself. “From a purely technical standpoint, we came to the conclusion that we wanted to start from a blank slate, just throw all the legacy away,” Upson told me. “There are times when it’s best to start from scratch.” Google thus embarked on a project to build a new browser with a clear goal: speed up the internet.

See invention “disagree and commit” principle, 24 Dorsey, Jack, 212 Downey, Allen, 200 Dweck, Carol, 185 Dyer, Lee, 210–13 dystopian technological scenarios, 191–205 education system, 213–15 Eichenwald, Kurt, 189–90 Elamiri, Abdellah, 164, 165, 189 Element.ai, 13 Elison, Meg, 193 eMarketer, 73, 111, 114, 147, 195 employment, technology’s impact on, 35–36, 201–2, 204–5, 215–16, 223–24 Engineer’s Mindset about, 14–18, 17 and Apple, 17, 131, 143, 151, 161 at aQuantive, 163 general adoption of, 18, 211, 213, 225 tech leaders with (see Bezos, Jeff; Nadella, Satya; Pichai, Sundar; Zuckerberg, Mark) three applications of, 15–17, 17 (see also collaboration; hierarchies; invention) execution work, 8–10, 11–14, 226 Facebook, 55–91 abuses of power by, 195–96 addressing feedback failures at, 83–89 advertising revenues of, 195–96 algorithmic compensation model of, 81–82 artificial intelligence/machine learning at, 75–81, 88 and Cambridge Analytica, 83, 84, 158 and congressional investigations, 83–84, 85–86 content moderation at, 77–81, 86 contractors’ wages at, 155 dominance of, 3 Engineer’s Mindset at, 16 and Facebook Groups, 69–70, 201 and Facebook Live, 77 feedback culture at, 1–2, 16, 55–57, 60–62, 66, 68 and feedback from staff, 65–68, 70–74 and feedback from users, 59, 59n, 68–70 Friday Q&As at, 62–63 idea pathways at, 62–63 invention at, 58–60, 101 leadership team at, 63–64 mobile app of, 65–68 and News Feed, 68–69 and Oculus Connect (virtual reality), 89–90 optimism evident at, 85–86 and presidential election of 2016, 16, 59, 64, 83 and privacy emphasis of Apple, 157–58 reinventions of, 7, 74, 89–90 and Sandberg, 64–65 Stories feature of, 70–74 suicide-prevention tool of, 79–80 training on feedback delivery, 55–57 vulnerability of, 58 See also Zuckerberg, Mark face-recognition technology, 75–76 factories, 207–8 Farestart, 217 Federal Bureau of Investigation (FBI), 155–59 Federighi, Craig, 129, 134 feedback and feedback cultures addressing gaps/failures in, 85–89 and Apple’s Siri, 144 Facebook’s culture of, 1–2, 16, 55–57, 60–62, 66, 68 and hierarchy, 55, 213 at Microsoft, 181 from the public, 59, 59n receiving, 57 training on delivery of, 55–57 VitalSmarts’ method of, 56 Firefox by Mozilla, 104, 106–7 Fitzpatrick, Jen, 114–15 Fong-Jones, Liz, 119 Fox, Nick, 116 General Motors (GM), 9 Gershgorn, Dave, 188 Ghonim, Wael, 193 Giannandrea, John, 134 Giridharadas, Anand, 217 Give and Take (Grant), 63 Gizmodo, 94 Gleit, Naomi, 62, 63 Go grocery store of Amazon, 21–22, 25, 53 Goldstein, Robin Diane, 132, 138 Goler, Lori, 62, 81, 82 Google, 93–128 abuses of power by, 195–96 advertising revenues of, 195–96 and AI Principles, 122 and Alphabet restructuring, 110–11 and Amazon Echo, 109, 111 and Android, 96, 108 and artificial intelligence/machine learning, 13, 109, 111–12, 114, 119–23 and Chrome, 7, 96, 102–8 communication tools enabling collaboration at, 96–99, 115–16, 123, 125, 128 cross-company collaboration at, 17, 96–97, 114–16, 118–19 and Damore memo, 93–95 dissent at, 119–28 dominance of, 3 empowerment of employees at, 105–6 Engineer’s Mindset at, 17 and Gmail, 102–4, 112 and Google+, 115 and Google Assistant, 7, 17, 96, 113–19 and Google Home, 116–17, 118, 147 invention encouraged at, 101 and Microsoft, 96, 100, 102, 103–4 and partnerships for Toolbar distribution, 100–102, 107 and Pentagon’s Maven project, 119–23, 127 productivity apps of, 103 products developed by, 7 reinventions of, 95–96, 110–11, 114 transparency at, 96, 115–16, 121, 127, 128, 138 Walkout at (2018), 123–28, 154–55 See also Pichai, Sundar government, change needed in, 226 Graham, Don, 60–62, 64 Grant, Adam, 63, 214 Green, Cee Lo, 11 Green, Diane, 120 growth, productivity, 197, 225 growth mindset cultures, 185–86 Hardesty, Ken, 160 Hartman, Marty, 216, 219 Henry, Alyssa, 212 Herbrich, Ralf, 38–39, 42, 52, 220 hierarchies, 184 at Apple, 17, 131, 136 at aQuantive, 163 and Engineer’s Mindset, 16, 17 at Facebook, 55, 62 and hardware operations, 116–17 at Microsoft, 166, 180–83, 190 See also feedback and feedback cultures Hill, Ned, 9 Hired (Bloodworth), 33 Hirsch, Gil, 75 Hit Refresh (Nadella), 165, 180, 183, 184 Hoefflinger, Mike, 65 homelessness, 216–17 HomePod of Apple, 129–31 Honan, Mat, 2 housing, lack of affordable, 216–17 Human Side of Enterprise, The (McGregor), 208–9 Hyman, Louis, 213 IBM, 13 idea work, 8–10, 14, 15 income inequality, 215–19 independent-thinking skills, 214 initiative, value of, 215 “innovator’s dilemma,” 9 Instagram Stories, 73 Internet use, social effects of, 200 introverts, 212 invention Amazon’s culture of, 16, 22–26, 45, 51 Amazon’s system of, 26–30, 36, 101 at Apple, 131, 136–37, 160–61 at aQuantive, 163 and copying other products, 74 cultivation of, 211 democratic invention, 15–16, 17 enabled by technological advances, 9–10 and Engineer’s Mindset, 15–16, 17 exercising thoughtfulness in, 224 at Facebook, 58–60, 101 at Google, 101 incentivizing, 212 at Microsoft, 164, 166, 172–73, 179–80, 190 and reinvention, 7–8, 74 in smaller companies, 225 stymied by tech giants, 196 systems that support, 211–12 Isilon Systems, 18 Ive, Jony, 134, 135 Jassy, Andy, 45 Jobs, Steve death of, 142–43 and iPhone, 7, 142 on values represented in marketing, 159 vision of, 132–33 Judah, Norm, 177, 178 Kiva Systems, 31 knowledge economy, 9 Kumar, Dilip, 45–46 Kwon, Elaine, 40, 41, 45, 49, 52 language translation, automation of, 43 Larson-Green, Julie, 173, 181, 182, 183, 188 Lavin, Carl, 86–88 lay-offs, 221–22 LeCun, Yann, 76 Lee, Kai-Fu, 74 Leo, Michael, 223 Li, Fei-Fei, 120–21 Lin, Sandi, 28, 48, 52 LinkedIn, 186–87 Litwin, Adam Seth, 215, 216, 218 Lobe, 179 loneliness epidemic, 199–200 Lynn, Barry, 195–96 machine learning.


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, Chuck Templeton: OpenTable:, 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, John Markoff, Julian Assange, Marc Andreessen, market bubble, market design, medical residency, meta analysis, meta-analysis, mutually assured destruction, Panopticon Jeremy Bentham, 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, zero-sum game, Zimmermann PGP

I sat down, ordered a cappuccino, opened up my laptop, and launched Tor, the anonymizing software that masks the Internet address of your computer by routing traffic around the world. This time, I appeared to be in Germany. Browsing on Tor is slow. As a test, I typed New York University’s Web address, www.nyu.edu, into the Tor browser and into the regular Firefox Web browser and clocked each of them. It took twenty seconds to launch in Tor and three seconds to launch in Firefox. At least I had plenty of time to sip my coffee as I browsed on Tor. I started by signing up for a free e-mail account for Ida from Microsoft’s Outlook.com. I steeled myself and entered 212-867-5309 as her backup phone number (after the famous ’80s song by Tommy Tutone). I turned off Microsoft’s targeted ads feature. Feeling quite pleased with myself, I also set up an OpenTable account for Ida, using the Outlook address.

One night, after the kids went to bed, I sat down at my computer and installed the two most popular anti-tracking software extensions onto my Firefox Web browser. The first, Adblock Plus, blocked advertisements from displaying—thus preventing advertisers from the opportunity of dropping tracking cookies on my machine in the first place. Since my profession, journalism, derives much of its revenue from advertising, I’m not in favor of blocking ads, but I figured I’d give it a shot in the name of protecting myself from being watched. The second, NoScript, blocked a type of computer code called JavaScript, as well as some other software such as Flash, from loading on Web pages without my permission. JavaScript can be used to load all sorts of tracking technology, including cookies, and can even be used to monitor how you move your mouse on the page. But it also has a lot of legitimate uses. Immediately, Firefox sputtered and stalled.

As for Twitter, I had forgotten that I had previously logged in to the Twitter site, which allowed it to set a cookie. That allowed Twitter to see that I had visited WSJ.com. That’s the problem with Web tracking: if you let someone into the tent once, they often get a free pass for future tracking. “This is much worse than I thought,” I said. Ashkan laughed. “That’s exactly what you said to me three years ago when we first talked.” Ashkan showed me the setting—buried deep in Firefox’s “custom history” section—that let me turn off third-party cookies, such as Twitter, from tracking me on other sites just because I had once logged in to their site. But there was no setting to block the Journal’s behind-the-scenes sharing. So then we tried Adblock Plus, but BlueKai was still making it through those filters. After all, Adblock Plus is designed to block ads, not to block tracking.


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, do-ocracy, en.wikipedia.org, failed state, Firefox, GnuPG, Google Chrome, Jono Bacon, MITM: man-in-the-middle, NP-complete, QWERTY keyboard, RFC: Request For Comment, Richard Stallman, Skype, SpamAssassin, Valgrind, web application, zero day, Zimmermann PGP

Figure 13.7. The Iceweasel web browser CULTURE Iceweasel, Firefox and others Many users will no doubt be surprised by the absence of Mozilla Firefox in the Debian Wheezy menus. No need to panic: the iceweasel package contains Iceweasel, which is basically Firefox under another name. The rationale behind this renaming is a result of the usage rules imposed by the Mozilla Foundation on the Firefox™ registered trademark: any software named Firefox must use the official Firefox logo and icons. However, since these elements are not released under a free license, Debian cannot distribute them in its main section. Rather than moving the whole browser to non-free, the package maintainer chose to use a different name. The firefox command still exists in the iceweasel package, but only for compatibility with tools that would try to use it.

Thunderbird and Icedove This email software, included in the icedove package, is part of the Mozilla software suite. Various localization sets are available in icedove-l10n-* packages; the enigmail extension handles message encrypting and signing (alas, it is not available in all languages). Figure 13.6. The Icedove email software Thunderbird is one of the best email clients, and it seems to be a great success, just like Mozilla Firefox. Strictly speaking, Debian Wheezy contains Icedove, and not Thunderbird, for legal reasons we will detail in the “Iceweasel, Firefox and others” section later on; but apart from their names (and icons), there are no real differences between them. 13.5. Web Browsers Epiphany, the web browser in the GNOME suite, uses the WebKit display engine developed by Apple for its Safari browser. The relevant package is epiphany-browser. Konqueror, the KDE file manager, also behaves as a web browser.

This allows Apache to select the most appropriate SSL certificate for the transaction to proceed. Before SNI, Apache would always use the certificate defined in the default virtual host. 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!


Data Mining the Web: Uncovering Patterns in Web Content, Structure, and Usage by Zdravko Markov, Daniel T. Larose

Firefox, information retrieval, Internet Archive, iterative process, natural language processing, pattern recognition, random walk, recommendation engine, semantic web, speech recognition, statistical model, William of Occam

Time “GET A.html HTTP/1.1” “GET B.html HTTP/1.1” “GET A.html HTTP/1.1” “GET E.html HTTP/1.1” “GET K.html HTTP/1.1” “GET C.html HTTP/1.1” “GET I.html HTTP/1.1” “GET G.html HTTP/1.1” “GET 0.html HTTP/1.1” “GET M.html HTTP/1.1” “GET H.html HTTP/1.1” “GET N.html HTTP/1.1” “GET E.html HTTP/1.1” “GET L.html HTTP/1.1” Method Sample Web Log File for an Imaginary Web Site IP Address TABLE 7.4 — A.html — B.html E.html A.html — C.html I.html G.html — H.html K.html E.html Referrer Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/5.0 (Linux 1.0, Firefox/0.9.3) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Mozilla/4.0 (Windows NT 5.1, MSIE6.0) Agent USER IDENTIFICATION 167 Navigation Page A B E K Content Page D C F G H I L M N O J P Figure 7.7 Topology of the imaginary Web site, showing links.

Although this assumption ignores users who access the same Web site with two different browsers on the same machine, this sort of behavior is relatively rare. Consider the sample web log file for an imaginary Web site in Table 7.4. Applying this heuristic to the entries in the table, we can discern that there are at least two users represented here, one using Windows NT and MS Internet Explorer, the other using Linux and Firefox. Based on this, we can postulate the following paths through the Web site taken by each user: r User 1: A → B → E → K → I → O → E → L r User 2: A → C → G → M → H → N However, do you see a problem with these reconstructions? If we apply the information available from the referrer field, along with the Web site topology, we can uncover the highly likely result that “user 1” here is actually two different users.


The Complete Android Guide: 3Ones by Kevin Purdy

car-free, card file, crowdsourcing, Firefox, Google Chrome, Google Earth, Googley, John Gruber, QR code, Skype, speech recognition, telemarketer, turn-by-turn navigation

Along with that notably neat feature, SkyFire also runs pretty well in general, based on the same code as the Android and iPhone browsers, and offers a quick-switching function to toggle between a web site's full version and its mobile-friendly view. (Free through the Market) Mozilla Fennec / Firefox Mobile Fennec's Home Page Fennec, the code name for Firefox Mobile, is still a work in progress as of this writing. But even in its very rough, kinda-sorta works phase, it's a promising browser to come. Fennec will feature the same kind of add-on extensibility as Firefox on the desktop, but will also sync up smoothly with your personal Firefox browser. Say you're looking at flight information in a few different tabs on your MacBook at home--ticket confirmation, airport status, the weather in your destination, and so on. If you've signed on through Mozilla's Sync service, you can pull up all those same tabs, just as you left them, on your Android phone through Fennec.

It's a service with a lot to offer, but neither Google, nor certain intrepid authors, can capture it all in a few textual nuggets. Here are a few quick tips on getting more from Google Voice on your phone and in your phone life. Add a browser extension for quick desk calling: When you find a restaurant or business phone number you want to call, you don't need to pick up your phone and punch the number in. With a Google Voice extension installed in Google Chrome or Firefox, you can simply click on phone numbers on a web page, then answer your phone when it rings to make the call. These extensions also offer instant SMS and message checking abilities, making them well worth the download for any Voice enthusiast. Moving an app icon Make free desktop calls with Voice: Your Android handles Google Voice calls just fine. Need to save on minutes, or just like the convenience of headset calling?


pages: 255 words: 78,207

Web Scraping With Python: Collecting Data From the Modern Web by Ryan Mitchell

AltaVista, Amazon Web Services, cloud computing, en.wikipedia.org, Firefox, Guido van Rossum, meta analysis, meta-analysis, natural language processing, optical character recognition, random walk, self-driving car, Turing test, web application

Because this is relatively complex code that draws on multiple concepts from previous chapters, I’ve added comments throughout to make it a little easier to understand what’s going on: import time from urllib.request import urlretrieve import subprocess from selenium import webdriver #Create new Selenium driver driver = webdriver.PhantomJS(executable_path='<Path to Phantom JS>') #Sometimes, I've found that PhantomJS has problems finding elements on this #page that Firefox does not. If this is the case when you run this, #try using a Firefox browser with Selenium by uncommenting this line: #driver = webdriver.Firefox() driver.get( "http://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427030200") time.sleep(2) #Click on the book preview button driver.find_element_by_id("sitbLogoImg").click() imageList = set() #Wait for the page to load time.sleep(5) #While the right arrow is available for clicking, turn through pages while "pointer" in driver.find_element_by_id("sitbReaderRightPageTurner") .get_attribute("style"): driver.find_element_by_id("sitbReaderRightPageTurner").click() time.sleep(2) #Get any new pages that have loaded (multiple pages can load at once, #but duplicates will not be added to a set) pages = driver.find_elements_by_xpath("//div[@class='pageImage']/div/img") for page in pages: 1 When it comes to processing text it hasn’t been trained on, Tesseract fares much better with large-format edi‐ tions of books, especially if the images are small.

These days it’s also used when the accurate portrayal of websites—as they appear in a browser—is required. Selenium works by automating browsers to load the website, retrieve the required data, and even take screenshots or assert that certain actions happen on the website. Selenium does not contain its own web browser; it requires integration with thirdparty browsers in order to run. If you were to run Selenium with Firefox, for exam‐ ple, you would literally see a Firefox instance open up on your screen, navigate to the website, and perform the actions you had specified in the code. Although this might be neat to watch, I prefer my scripts to run quietly in the background, so I use a tool called PhantomJS in lieu of an actual browser. PhantomJS is what is known as a “headless” browser. It loads websites into memory and executes JavaScript on the page, but does it without any graphic rendering of the website to the user.

There are 60+ possible header fields that might be found in an HTTP packet, but we will only use a small set of them in this book. The following table shows a few of the HTTP header fields you should be familiar with: 214 | Appendix B: The Internet at a Glance Name Description UserAgent A string indicating which browser Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 and operating system you are making Firefox/28.0 the request from. Example Cookie Variables used by the web application “__utma: to hold session data and other 20549163.147923691.1398729710.1398729710.1398858679.2” information. Status A code indicating the success or failure of the page request. “200” (Okay), “404” (Not Found) Once a packet, carried by HTTP, reaches your browser, the contents of the packet must be interpreted as a website.


pages: 211 words: 37,094

JQuery Pocket Reference by David Flanagan

Firefox, post-work, web application

In alphabetical order, the utility functions are: jQuery.browser The browser property is not a function, but an object that you can use for client sniffing or browser testing. This object will have the property msie set to true if the browser is IE. The mozilla property will be true if the browser is Firefox or related. The webkit property will be true for Safari and Chrome, and the opera property will be true for Opera. In addition to this browser-specific property, the version property contains the browser version number. Client sniffing is best avoided whenever possible, but you can use this property to work around browser-specific bugs with code like this: if ($.browser.mozilla && parseInt($.browser.version) < 4) { // Work around a hypothetical Firefox bug here. } jQuery.contains() This function expects two document elements as its arguments. It returns true if the first element contains the second element, and returns false otherwise.

For “mouseover” events, for example, the relatedTarget property specifies the element that the mouse pointer exited as it moved over the target. If the native event object does not define relatedTarget but does define toElement and fromElement, relatedTarget is set from those properties. timeStamp The time at which the event occurred, in the millisecond representation returned by the Date.getTime() method. jQuery sets the field itself to work around a long-standing bug in Firefox. which jQuery normalizes this nonstandard event property so that it specifies which mouse button or keyboard key was pressed during the event. For keyboard events, if the native event does not define which but defines charCode or keyCode, then which will be set to whichever of those properties is defined. For mouse events, if which is not defined but the button property is defined, which is set based on the button value: 0 means no buttons are pressed, 1 means the left button is pressed, 2 means the middle button is pressed, and 3 means the right button is pressed.

serialize():string Serializes the names and values of the selected forms and form elements, returning a string in www-form-urlencoded format. Utility Functions These are miscellaneous jQuery functions and properties (not methods); see Chapter 7 for more details. jQuery.boxModel A deprecated synonym for jQuery.support.boxModel. jQuery.browser This property refers to an object that identifies the browser vendor and version. The object has the property msie for Internet Explorer, mozilla for Firefox, webkit for Safari and Chrome, and opera for Opera. The version property is the browser version number. jQuery.contains(a,b):boolean Returns true if document element a contains element b. jQuery.data(elt):data jQuery.data(elt, key):value jQuery.data(elt, data) jQuery.data(elt, key, value) A low-level version of the data() method. With one element argument, return the data object for that element.


pages: 302 words: 82,233

Beautiful security by Andy Oram, John Viega

Albert Einstein, Amazon Web Services, business intelligence, business process, call centre, cloud computing, corporate governance, credit crunch, crowdsourcing, defense in depth, Donald Davies, en.wikipedia.org, fault tolerance, Firefox, loose coupling, Marc Andreessen, market design, MITM: man-in-the-middle, Monroe Doctrine, new economy, Nicholas Carr, Nick Leeson, Norbert Wiener, optical character recognition, packet switching, peer-to-peer, performance metric, pirate software, Robert Bork, Search for Extraterrestrial Intelligence, security theater, SETI@home, Silicon Valley, Skype, software as a service, statistical model, Steven Levy, The Wisdom of Crowds, Upton Sinclair, web application, web of trust, zero day, Zimmermann PGP

As I’ve explored the client-side exploit landscape over the past several years, it has become clear to me that attackers are extremely opportunistic. The bulk of client-side exploits today target Microsoft’s IE 6 browser, but this can change as market shares shift. Many people ask me whether it’s a good idea to use Mozilla Firefox instead. My answer is always something like, “Sure, but keep in mind that if everyone in the world used Firefox, there would be a lot of exploits that target the Firefox browser.” In other words, don’t rely on using Firefox alone to protect you from these attacks. The user still needs to be somewhat savvy and not get duped into clicking on every link that comes his way. What about anti-virus software? It was not until we started capturing a lot of malware with our honeyclients that we were truly able to appreciate what a difficult job the anti-virus industry has.

§ Encyclopædia Britannica, Inc. 445 U.S. 934 (1980). SECURING ONLINE ADVERTISING: RUSTLERS AND SHERIFFS IN THE NEW WILD WEST 95 $9.99/month—the very opposite of “free” (see Figures 6-4 and 6-5). Or consider an ad promising a “free credit report”—even though the touted service is actually neither free nor a credit report. Other bogus ads try to sell software that’s widely available without charge. Search for “Firefox,” “Skype,” or “Winzip,” and you may stumble into ads attempting to charge for these popular but free programs (see Figure 6-6). These scams fly in the face of decades of consumer protection law. For one thing, not every clause in an agreement is legally enforceable. In particular, material terms must be clear and conspicuous, not buried in fine print.‖ (For example, the FTC successfully challenged deceptive ads that promised ice cream was “98% fat free” when a footnote admitted the products were not low in fat.#) Yet online marketers often think they can promise “free ringtones” or a “free iPod” with a small-type text admitting “details apply.”

In the process of developing the exploit database, we realized that we might want to store additional information that’s not necessarily related to an exploit itself, such as VMware identification numbers for the compromised images. We also wanted the ability to store information in this database about what application the honeyclient was driving. For example, we will likely get different results by visiting a web page with IE 6 versus IE 7. (Our prototype can also support Mozilla Firefox browsers now.) We will also most likely get different results using Windows XP-based honeyclients versus Windows Vista-based honeyclients. I won’t even go into other future possibilities, such as driving nonHTTP-based applications. The database allows us to store all of this information about different environments and results, and allows us to correlate the data between results from driving different applications in various OS environments.


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, Donald Knuth, Douglas Engelbart, Douglas Engelbart, El Camino Real, fault tolerance, Firefox, Gerard Salton, Gerard Salton, Google bus, Google Chrome, Google Earth, Googley, HyperCard, hypertext link, IBM and the Holocaust, informal economy, information retrieval, Internet Archive, Jeff Bezos, John Markoff, Kevin Kelly, Kickstarter, Mark Zuckerberg, Menlo Park, one-China policy, optical character recognition, PageRank, Paul Buchheit, Potemkin village, prediction markets, recommendation engine, risk tolerance, Rubik’s Cube, Sand Hill Road, Saturday Night Live, search inside the book, second-price auction, selection bias, 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, turn-by-turn navigation, undersea cable, Vannevar Bush, web application, WikiLeaks, Y Combinator

The foundation’s key product was an open-source browser called Firefox. Google was already the biggest source of revenue for the foundation, paying it millions of dollars to ensure that the search box in Firefox was powered by Google. In the new arrangement, Google hired some top engineers from Mozilla, including Ben Goodger and Darin Fisher. While their employer would be Google, their job would be the same: making improvements in Firefox. Another hiring coup came with Linus Upson, a thirty-seven-year-old engineer with browser experience from Netscape, Steve Jobs’s company NeXT, and Palm, where he created the browser for the PalmPilot. “This was very clever on Larry and Sergey’s part,” says Schmidt, “because, of course, these people doing Firefox extensions are perfectly capable of doing a great browser.”

Ten months later, Pichai became a Google employee. It was April 1, 2004, and Google was in war room mode because of the Gmail announcement. In spring 2006, Pichai’s client group was working in Building 44, across Charleston Street from the core campus. They were preparing for the Firefox 2.0 launch, but not unexpectedly, there were conversations about designing an ideal browsing app of their own. The team believed that there was a flaw in the current generation of browsers. Microsoft’s Internet Explorer and Mozilla’s Firefox had been conceived in the 1990s, before the cloud computing era. Now the web was expected to become not just a means of delivering information but also a platform for running programs. Those creaky old browsers could not easily adapt to the new reality. The conclusion was obvious: only by building its own browser could Google bring the browser into the cloud age.

It was a crazy question, and everybody was a combination of excited and freaked out.” The engineers knew that building a competitive browser was a massive undertaking. There were also mixed feelings due to the group’s strong attachment to both the technology and vision behind Firefox, an icon of open-source development and a hedge against Microsoft’s dominance of the browser market. Particularly for the Googlers who had come from Mozilla, this was a case of digital fratricide. “The fear was that people were going to read this as sabotaging Firefox,” says engineer Erik Kay, who joined the team in October 2006. That would be evil. The Googlers were eventually mollified by the assurance that their browser would be 100 percent open source. With the open-source system, Google’s code would be publicly available, and if people wanted to use it to create variations, that was fine.


Catalyst 5.8: The Perl MVC Framework by Antano Solar John, Jonathan Rockway, Solar John Antano

c2.com, create, read, update, delete, database schema, Debian, en.wikipedia.org, Firefox, MVC pattern, Ruby on Rails, social intelligence, web application

The web browser then executes those commands, and returns the results to the Selenium server and then your test script. It can be hard to get it up and running because it requires the Java Runtime Environment (JRE) and a working web browser. It is somewhat experimental, and the author has only tested on Cygwin with Firefox and IE and Debian GNU/Linux with Firefox. Developing Selenium tests is pretty easy, thanks to the Selenium IDE Firefox extension available at http://www.openqa.org/selenium-ide/. It turns Firefox into an IDE that can record and edit tests, and save them to the Perl format. To create a test against the Catalyst application, we'll start by recording the basic outline of the test with Selenium IDE. [ 215 ] Testing To get started, start the AddressBook application, then open the IDE, and click the red record button.

When we were editing the edit_address.tt2 jemplate earlier, we changed the link to run that JavaScript function (for the correct ID). That's all we needed to do; everything is in place for the in-place editor to work. Start the server, navigate to the list of addresses, and click edit. The text of the address should be replaced with an editable form! That's AJAX. If it's not working for you, you might want to try installing Firefox and the Firebug extension. Firebug will show you all JavaScript errors and AJAX requests (requests and responses with complete headers) and will let you set JavaScript breakpoints. If something's wrong with the JavaScript, Firebug should help you identify the problem very quickly. [ 170 ] Chapter 7 If you have that part working, let's add one more feature—the ability to cancel editing. All this feature does is request the jemplate again, but with editing disabled.


pages: 232 words: 63,846

Traction: How Any Startup Can Achieve Explosive Customer Growth by Gabriel Weinberg, Justin Mares

Airbnb, Firefox, if you build it, they will come, jimmy wales, Justin.tv, Lean Startup, Marc Andreessen, Mark Zuckerberg, Network effects, Paul Graham, Peter Thiel, side project, Skype, Snapchat, social graph, software as a service, the payments system, Uber for X, web application, working poor, Y Combinator

The Washington Post’s decision to partner was made even easier because it was a simple integration with very little downside. After Delicious integrated with The Washington Post, the number of sites interested in a Delicious extension skyrocketed because of the Post’s role as a media leader. It even made other partnerships, like the browser integration with Mozilla’s Firefox, possible: The even more transformative partnership we did at Delicious was with Mozilla. [Mozilla] ended up promoting the Delicious extension for the Firefox browser in a really big way when they did an upgrade to Firefox 2.0. The net of it was that when huge portions of their audience were upgrading, one of the first things they saw was the Delicious extension. It ultimately more than tripled our user base, just from that partnership. Chris stressed that you can be assured that not every deal will close; in fact, most deals won’t.

There are some tricks you can use, like asking people to rate your app right after you give them something useful, but really the base experience has to be excellent to get consistently high rankings. Even with hundreds of thousands of apps, there are shockingly few that are truly amazing user experiences. Most of the apps that are now household names—Instagram, Path, Google Maps, Pandora, Spotify—all have excellent user experiences and consistently high ratings. Browser extensions in Chrome and add-ons in Firefox are apps you can download for your Web browser. The most popular browser extension is Adblock Plus, which blocks ads on major Web sites. Other popular extensions help you download YouTube videos, save bookmarks across computers, and manage your passwords. Web users visit dozens of different sites every day; to establish yours as a site they consistently visit can be difficult. A browser add-on allows people to get value from your product without consistently returning to your site.

See offline events; speaking engagements; trade shows Evernote, 6, 169–70, 171–74 Evernote Peek, 173–74 Evite, 184, 188 Exceptional Cloud Services, xii existing platforms, 6, 167–74, 212 app stores, 167–70 case study of Evernote, 171–74 social sites, 170–71 targets, 174 Facebook, 4, 31, 78, 79, 120 fat-head SEO strategy, 93, 94–95, 100–101 Feld, Brad, 106, 176–77 Fernandez, Phil, 11–12 Ferriss, Tim, 83–84 50 percent rule, 8–12 Filepicker.io, 47 Firefox, 142, 169 First Round Capital, 137 Fishkin, Rand, 4, 92, 94, 99, 100, 195 500 Startups, 5 flyers, 4, 84, 86–87 Focused Apps LLC, 168 Fog Creek Software, 199 Followerwonk, 46, 131 Foundry Group, 176–77 Foursquare, 80 Fox News, 62 Fralic, Chris, 6, 133, 137, 139–44 FreeAppADay, 169 freemium business model, 114, 162 fund-raising, 15–16, 54–55 Gates Foundation, 50 GitHub, 202 giveaways, 61, 180 GoDaddy, 6 Godin, Seth, 187 Google, ix–x, 65, 71–72, 94, 137–38 Google Alerts, 47 Google Analytics, 69, 96 Google Docs, 120 Google Trends, 95 Graham, Paul, 2, 14, 42 Grasshopper.com, 60, 62–63 Gross Rating Points (GRPs), 87–88 Groupon, 113, 115, 138 growth goals, 12–15, 18, 35–36, 139 growth rate, 12, 16, 18 growth spurts, 14 guest posting, 25, 31, 106, 211 Guidewire Software, 148–49 Gumroad, 46–47 Hacker News, 46–47, 50, 78 HacktheSystem, 163 Half.com, 6, 58, 62, 133, 139–40 Halligan, Brian, 130 Hardware Startup Meetup, 187–88 Hauser, David, 60, 62–63 Help A Reporter Out (HARO), 53 Hipmunk, 4, 60, 61 hiring, use of community for, 202–3 HitTail, 186–87 Holiday, Ryan, 3, 48–49, 50, 52–53, 54–55 HostGator, 6 Hotmail, 120 HubSpot, 5, 100, 129–31, 154 Huffington Post, 48, 49 Hunch, 174 Imgur, 171 implication questions, 149–50 indirect response, in social advertising, 76–77, 81 Inflection, 4, 66–68, 70–71 influencers, 54 infographics, 99, 104, 105, 210 infomercials, 89–90 information products, 161 inner ring, 22–23 inner ring testing, 22–23, 28–31, 44 InstaCab, 87 Intuit, 43 investors fund-raising, 15–16 growth numbers, 15, 18 invitations, 44, 124–25, 188 iPhone, 59, 120, 138, 172 JBoss, 156–58 Johnson, Mark, 168 joint ventures, 138, 145 Jones, Kris, 159, 165–66 Jones, Kristopher, 6 Kagan, Noah, 3, 24–25, 42–45 Kawasaki, Guy, 62 Kayak, 6, 138–39, 145 Keyword Planner, 68–69, 94, 95 keyword research, 68–69, 70–71 KeywordSpy, 69 keyword strategies, 69, 72, 73, 93, 95–98, 100–101 Kincaid, Jason, 3, 51, 52 Klout, 46 Kopelman, Josh, 58 Kundra, Ashish, 5, 124 Lamar Advertising, 87 Launch Conference, 184 Law of Shitty Click-Throughs, 30–31, 33 lead generation, 161 lead qualifications, and sales funnel, 153–55, 157 leaky bucket, 10–11, 13, 17 Lean Startup, The (Ries), 7 Lean Startup model, 25–26, 185 Libin, Phil, 171–72 licensing, 138, 145 Lifehacker, 45, 50 Linchpin: Are You Indispensable?


pages: 394 words: 118,929

Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software by Scott Rosenberg

A Pattern Language, Benevolent Dictator For Life (BDFL), Berlin Wall, c2.com, call centre, collaborative editing, conceptual framework, continuous integration, Donald Knuth, Douglas Engelbart, Douglas Engelbart, Douglas Hofstadter, Dynabook, en.wikipedia.org, Firefox, Ford paid five dollars a day, Francis Fukuyama: the end of history, George Santayana, Grace Hopper, Guido van Rossum, Gödel, Escher, Bach, Howard Rheingold, HyperCard, index card, Internet Archive, inventory management, Jaron Lanier, John Markoff, John von Neumann, knowledge worker, Larry Wall, life extension, Loma Prieta earthquake, Menlo Park, Merlin Mann, Mitch Kapor, new economy, Nicholas Carr, Norbert Wiener, pattern recognition, Paul Graham, Potemkin village, RAND corporation, Ray Kurzweil, Richard Stallman, Ronald Reagan, Ruby on Rails, semantic web, side project, Silicon Valley, Singularitarianism, slashdot, software studies, source of truth, South of Market, San Francisco, speech recognition, stealth mode startup, stem cell, Stephen Hawking, Steve Jobs, Stewart Brand, Ted Nelson, Therac-25, thinkpad, Turing test, VA Linux, Vannevar Bush, Vernor Vinge, web application, Whole Earth Catalog, Y2K

Through all the sail-trimming in this period, Kapor had been finding solace in a phenomenon entirely outside OSAF: the rising tide of success that the Mozilla Project had found with its Firefox browser. Firefox, a streamlined, modernized version of the old Mozilla software that had evolved from the ashes of Netscape, had a 1.0 release scheduled for later that fall. But even in its prerelease version it was logging a million downloads a week and winning rave reviews. It was free open source software. And it had emerged out of a project whose trajectory eerily resembled Chandler’s. Mozilla had begun with great fanfare and enthusiasm among the geek elite and then dropped into a black hole for years in which it lost the allegiance of some key developers and was widely written off. Over and over again, it seemed, Mozilla had missed the boat; with Firefox, its ship finally came in. Mitchell Baker, the former Netscape lawyer whose efforts as an administrator and manager helped keep Mozilla alive through its dark years, had continued to serve as a kind of community adviser to OSAF.

According to this view, it makes little difference whether Chandler ever becomes a useful program or achieves any of its original goals; what matters is that in building his open source organization, Kapor got to know Mozilla’s Mitchell Baker, and when AOL/Netscape decided to stop supporting the open source browser, he was in the right place at the right time to help rescue it, midwife the birth of the Mozilla Foundation, and set Firefox on its successful trajectory. As I write, Firefox has come from nowhere to win more than 10 percent of the browser market (more than 212 million downloads as this book goes to press). Its competition has forced Microsoft to revisit its long-fallow Internet Explorer product and get back into the business of browser development, with a payoff for Web users everywhere. When Chandler started out, this was not a chapter Kapor or anyone else could have foreseen.

Open source seems to suffer from its own species of frustrating delays. The highest profile new open source project in the years since the publication of Raymond’s essay was Mozilla—a Web browser built out of Netscape’s corporate wreckage. In the last throes of its battle with Microsoft, Netscape had embraced open source and published its browser’s source code. The result today is a still-evolving free program used by millions. Its most recent incarnation, Firefox, has actually begun eating into the market share of Microsoft’s Internet Explorer. But Mozilla took an agonizingly long time to become that valuable, and meanwhile the competition at Microsoft cemented its dominance. The new bazaars of the open source movement have changed computing in many ways, but they are not notable for bringing new products to users any faster than the old cathedral builders did.


pages: 106 words: 22,332

Cancel Cable: How Internet Pirates Get Free Stuff by Chris Fehily

Firefox, patent troll, peer-to-peer, pirate software, Silicon Valley, Skype, slashdot, WikiLeaks

If extensions are hidden, the file love-letter-for-you.txt.vbs appears without the .vbs, looking like a harmless text file while actually carrying a hostile Visual Basic script. Millions opened this file in 2000, infecting themselves and millions more via email with the ILOVEYOU worm, forever convincing system administrators that ordinary users will click anything. Even with extensions showing, the file FreeMP3s.txt .exe will appear to be harmless if the embedded spaces hide the .exe extension in a narrow column. Browser. Browse with Mozilla Firefox, not Internet Explorer or Safari. Use Firefox’s Adblock Plus, FlashBlock, and BetterPrivacy extensions. More-advanced users can look at NoScript. Other privacy and security extensions are at addons.mozilla.org. Hosts file. Instead of using a browser extension, you can use a hosts file to block ads and third-party cookies. A hosts file is a text file that doesn’t use system resources and isn’t browser-dependent. Try mvps.org/winhelp2002/hosts.htm or hosts-file.net.


pages: 446 words: 102,421

Network Security Through Data Analysis: Building Situational Awareness by Michael S Collins

business process, cloud computing, create, read, update, delete, Firefox, general-purpose programming language, index card, Internet Archive, inventory management, iterative process, p-value, Parkinson's law, peer-to-peer, slashdot, statistical model, zero day

Web Client Banners: The User-Agent String Web clients send browsers a complicated configuration string defining their capabilities and preferences: the platform the browser runs on, the operating system, and a variety of configuration details. This string, User-Agent, is defined in RFC 2616, but can become phenomenally complicated (as well as informative) fairly quickly. Some user-agent strings are shown sorted by broswer in Example 14-7. Example 14-7. Example user-agent strings by browser Firefox: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080214 Firefox/2.0.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 Internet Explorer: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7) Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0) Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox) Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.1 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.1 Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25 Opera: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.11 Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.11 Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11 Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.11 Chrome: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19 Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19 Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3 Googlebot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Bingbot: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Baiduspider: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/ spider.html) The user agent strings in Example 14-7 follow a basic structure that is derived from the original RFC 2616 specification along with various detritus from the browser wars.

Example user-agent strings by browser Firefox: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080214 Firefox/2.0.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 Internet Explorer: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7) Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0) Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox) Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.1 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.1 Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25 Opera: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.11 Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.11 Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11 Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.11 Chrome: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19 Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19 Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3 Googlebot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Bingbot: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Baiduspider: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/ spider.html) The user agent strings in Example 14-7 follow a basic structure that is derived from the original RFC 2616 specification along with various detritus from the browser wars.

These values vary based on the browser make and configuration, but usually contain the actual browser name, the OS, and a number of optional parameters. Following the parentheses (usually) is a tag naming the layout engine for the software; the layout engine is the browser’s toolkit for rendering HTML, and the same engine can be used by multiple browsers. Common engines include Gecko (used by Firefox, Mozilla, and SeaMonkey), WebKit (used by Safari and Chrome), Presto (Opera), and Trident (IE). As Example 14-7 shows, the actual composition of the string is very much a function of the browser, the OS, and the idiosyncratic whims of the implementor. Further Reading Michael Collins and Michael Reiter, “Finding Peer-to-Peer File Sharing Using Coarse Network Behaviors,” Proceedings of the 2007 ESORICS Conference.


Realtime Web Apps: HTML5 WebSocket, Pusher, and the Web’s Next Big Thing by Jason Lengstorf, Phil Leggetter

Amazon Web Services, barriers to entry, don't repeat yourself, en.wikipedia.org, Firefox, Google Chrome, MVC pattern, Ruby on Rails, Skype, software as a service, web application, WebSocket

The theory is that if you build a great app, you’ll receive great reviews and benefit by soaring up the app charts. Marketplaces were initially created for native apps and have proven to be highly successful. The idea has been copied for web apps, but with much less success. There are efforts to change this, such as the Google Chrome Web Store,2 Firefox Marketplace,3 Facebook App Center,4 and even the Apple “web apps” directory,5 but the uptake is much slower than their native app counterparts. 1 http://en.wikipedia.org/wiki/Persona_(user_experience) https://chrome.google.com/webstore 3 https://marketplace.firefox.com/ 4 http://www.facebook.com/appcenter 5 http://www.apple.com/webapps/ 2 58 Chapter 4 ■ Choosing Web Apps Over Native Apps Established and controlled marketplaces can also come with a downside, however. Apple is notorious for its strange and sometimes outright dictatorial control over what can and can’t be in the App Store, which can be a huge roadblock for app developers.

Native apps present similar issues to testing a website for cross-browser support: a fix for iPhone might introduce a new bug on Android, a change in one version of Android might have an unexpected side effect in a different version of Android, and there’s always the possibility that a certain feature just can’t work the same way on every device. Feature Support If your app needs to access the device’s accelerometer or camera, the argument is over unless you know exactly what web browser your users will be using on their phone. For example, to access the webcam on a device from a browser, you use the getUserMedia API, which isn’t supported by the latest versions of even the mainstream browsers;14 as ever, Chrome, Firefox, and Opera are leading the way. If you don’t know whether all the users of your web application will have support for all the features it requires, your best choice is to create a native app. Operating systems expose access to most hardware features to native apps. Browsers are slowly exposing access to these features, but again they’re not available cross-browser. One such example is orientation control.

Include the following code to accomplish this: /* Highlights ----------------------------------------------------------------------------*/ input:active,input:hover,input:focus { background-color: #e06f00; outline: none; } input::-moz-focus-inner { border: 0; } 126 Chapter 7 ■ Creating HTML and CSS Markup label input:active,label input:focus { border-color: #e06f00; background-color: #fff; outline: none; } label input:hover { background-color: #fff; } This code overrides browser default behavior and replaces it with a custom highlight. Worth noting is the input::-moz-focus-inner rule; this addresses a behavior in Firefox that causes the input to get a small dotted line on the inside of the input when it is active. ■■Caution If you override default browser styles, make sure you replace them with styles of your own. Users who navigate the Web with their keyboards rely on the :focus and :active states to see where the cursor currently rests, so removing those states altogether will have a negative effect on the user experience.


pages: 292 words: 81,699

More Joel on Software by Joel Spolsky

a long time ago in a galaxy far, far away, barriers to entry, Black Swan, Build a better mousetrap, business process, call centre, Danny Hillis, David Heinemeier Hansson, failed state, Firefox, fixed income, George Gilder, Larry Wall, low cost airline, low cost carrier, Mars Rover, Network effects, Paul Graham, performance metric, place-making, price discrimination, prisoner's dilemma, Ray Oldenburg, Ruby on Rails, Sand Hill Road, Silicon Valley, slashdot, social software, Steve Ballmer, Steve Jobs, Superbowl ad, The Great Good Place, type inference, unpaid internship, wage slave, web application, Y Combinator

And it did a fine job, but wasn’t really 100% portable, so we got Java, which was even more portable than C. Mmmhmm. Right now the big hole in the portability story is—tada!—client-side JavaScript, and especially the DOM in web browsers. Writing applications that work in all different browsers is a friggin’ nightmare. There is simply no alternative but to test exhaustively on Firefox, IE 6, IE 7, Safari, and Opera, and guess what? I don’t have time to test on Opera. Sucks to be Opera. Startup web browsers don’t stand a chance. What’s going to happen? Well, you can try begging Microsoft and Firefox to be more compatible. Good luck with that. You can follow the p-code/Java model and build a little sandbox on top of the underlying system. But sandboxes are penalty boxes; they’re slow and they suck, which is why Java applets are dead, dead, dead. To build a sandbox, you pretty much doom yourself to running at 1/10 the speed of the underlying platform, and you doom yourself to never supporting any of the cool features that show up on one of the platforms but not the others.

I’ll let Dean introduce the problem (blogs.msdn.com/ie/ archive/2008/03/03/microsoft-s-interoperability-principles-andie8.aspx): 126 More from Joel on Software All browsers have a “Standards” mode, call it “Standards mode,” and use it to offer a browser’s best implementation of web standards. Each version of each browser has its own Standards mode, because each version of each browser improves on its web standards support. There’s Safari 3’s Standards mode, Firefox 2’s Standards mode, IE 6’s Standards mode, and IE 7’s Standards mode, and they’re all different. We want to make IE 8’s Standards mode much, much better than IE 7’s Standards mode. And the whole problem hinges on the little tiny decision of what IE 8 should do when it encounters a page that claims to support “standards,” but has probably only been tested against IE 7. What the hell is a standard?

Martian Headsets 135 There is no practical way to check whether the web page you just coded conforms to the spec. There are validators, but they won’t tell you what the page is supposed to look like, and having a “valid” page where all the text is overlapping, nothing lines up, and you can’t see anything is not very useful. What people do is check their pages against one browser, maybe two, until it looks right. And if they’ve made a mistake that just happens to look OK in IE and Firefox, they’re not even going to know about it. And their pages may break when a future web browser comes out. If you’ve ever visited the ultra-orthodox Jewish communities of Jerusalem, all of whom agree in complete and utter adherence to every iota of Jewish law, you will discover that despite general agreement on what constitutes kosher food, you will not find a rabbi from one ultraorthodox community who is willing to eat at the home of a rabbi from a different ultra-orthodox community.


pages: 470 words: 109,589

Apache Solr 3 Enterprise Search Server by Unknown

bioinformatics, continuous integration, database schema, en.wikipedia.org, fault tolerance, Firefox, full text search, information retrieval, natural language processing, performance metric, platform as a service, Ruby on Rails, web application

Rizo</str> <str name="a_type">group</str> <str name="id">Artist:482488</str> <date name="indexedAt">2011-07-15T05:20:06Z</date> <str name="type">Artist</str> </doc> <!-- ** 7 other docs omitted for brevity ** --> </result> </response> Browser note Use Firefox for best results when searching Solr. Solr's search results return XML, and Firefox renders XML color coded and pretty-printed. Safari on Mac OS X Lion finally gained this feature too. For other browsers (notably an older Safari or Chrome), you may find yourself having to use the View Source feature or using a response format other than XML to see the results. Even in Firefox, however, there are cases where you will use View Source in order to look at the XML with the original indentation, which is relevant when diagnosing the scoring debug output. Solr's generic XML structured data representation Solr has its own generic XML representation of typed and named data structures.

The main benefit to the form is that it applies the URL escaping for special characters in the query, and for some basic options, you needn't remember what the parameter names are. It is convenient to use the form as a starting point for developing a search, and then subsequently refine the URL directly in the browser instead of returning to the form. Solr's search results are by default in XML. Most modern browsers, such as Firefox, provide a good XML view with syntax coloring and hierarchical structure collapse controls. Solr can format responses in JSON and other formats but that's a topic for another time. They have the same basic structure as the XML you're about to see, by the way. The XML response consists of a<response/> element, which wraps the entire message. The first child element contains request header metadata.

This standard enables you to build a single interface that works with multiple different search engines. OpenSearch was originally developed by A9, a subsidiary of Amazon, and has seen some adoption in the market, especially by the browsers to power their toolbar search boxes. You can find more information at http://www.opensearch.org/. Installing the Search MBArtists plugin This example builds on the Velocity based UI for the mbartists core described earlier, and works best with Firefox. Open the browse interface for the mbartists core and you will be able to add a custom Search MBArtists plugin to the search bar: This was prompted by providing a link to an OpenSearch descriptor file in the cores/mbtypes/conf/velocity/head.vm file: <link rel="search" href="#{url_for_solr}/admin/file?file=/velocity/opensearch_description.xml&contentType=text/xml" type="application/opensearchdescription+xml" title="Search MBArtists"> </link> Browsers that understand this link will allow the user to add the described search engine.


Raw Data Is an Oxymoron by Lisa Gitelman

23andMe, collateralized debt obligation, computer age, continuous integration, crowdsourcing, disruptive innovation, Drosophila, Edmond Halley, Filter Bubble, Firefox, fixed income, Google Earth, Howard Rheingold, index card, informal economy, Isaac Newton, Johann Wolfgang von Goethe, knowledge worker, liberal capitalism, lifelogging, longitudinal study, Louis Daguerre, Menlo Park, optical character recognition, Panopticon Jeremy Bentham, peer-to-peer, RFID, Richard Thaler, Silicon Valley, social graph, software studies, statistical model, Stephen Hawking, Steven Pinker, text mining, time value of money, trade route, Turing machine, urban renewal, Vannevar Bush, WikiLeaks

Even if one were to accept the fiction of the universal database managed by a single authority, the fundamental problem of meaningfully, and predictably, parsing that archive remains. Everything might be collected and connected, but that does not necessarily mean that everything can be known. Google may come to possess the sum total of my personal data and all of the history contained within my UID, but it cannot obtain the programmatic perspective necessary to predict exactly what I will buy or what I will read. Still, as my Firefox add-on, Collusion, reminds me, data collection companies are continually tracking my browsing behavior in spite of my efforts to thwart them, a cogent reminder that targeting is not impractical at the level of the individual. When considered in these terms, it is difficult to dismiss escape, whether in the form of 129 130 Rita Raley disappearance or disconnectivity, as merely a counterfantasy.39 Critical Art Ensemble’s injunction is to the point: “Avoid using any technology that records data facts unless it is essential.”40 Howard Rheingold and Eric Kluitenberg make a comparable case for “selective connectivity”: techniques by which we can “choose to extract ourselves from the electronic control grid from time to time and place to place.”41 Similarly, for MayerSchönberger, the solution lies in the adoption of a certain care in the management of one’s online interactions, practices of selective disclosure and revelation in order to limit “uncontrollable information flows through individual choice.”42 If we are able to opt out of a single company’s personalized retargeting scheme, that is, should we not also be able to opt out of all advertising databases or indeed out of the whole system of “cybernetic capitalism” itself?

Though many such enterprising programmers may work for large IT corporations, their software can usually be tagged as independent, alternative, open, and almost always free. Just as Internet data mining is dependent on software design, then, so, too, is the blocking or thwarting of that mining. So, to block beacons and zombie cookies and maintain the smallest measure of privacy while reading 131 132 Rita Raley articles in the Guardian online, one can choose from a suite of effective Firefox add-ons including TACO and Beef TACO (targeted advertising cookie opt-out); BetterPrivacy; Ghostery; CookieSafe; and CookieCuller. As Panopticlick, the Electronic Frontier Foundation’s browser-fingerprinting algorithm, reveals, however, privacy tools such as spoofers and plugins paradoxically make the browser more distinct and thus facilitate device fingerprinting.50 Panopticlick further reminds us of the difficulty of demarcating an absolute difference between the means of tracking and the means of circumventing that tracking; another case in point would be browsers in which the facility for private browsing is built into the browser itself.

From Amazon to Digg, there is a vast network to which we can turn to assess our value as producers (of comments, reviews, commodities) and consumers (as trusted users and buyers), one whose seemingly inconsequential rewards (stars, levels) mask a deep sense of community. In this respect, making data public is also making a commons. Apart from functioning as a rival form of expertise, then, one effect of these countervailing tools and techniques has been to re-embed dataveillance within social relations. Perhaps the best example of this is Eyebrowse, a protosocial network based on the self-reporting of one’s browsing activities (figure 7.1). A Firefox plugin, Eyebrowse visualizes a user’s web browsing history along with that of her friends, thus making visible the data available to Google and any number of third parties, now and in the future.56 Mimetically reproducing data collection practices increases technological literacy with respect to both individual everyday practice and systemic logics. Exploiting vulnerabilities makes those vulnerabilities known.


pages: 344 words: 96,690

Groundswell: Winning in a World Transformed by Social Technologies by Charlene Li, Josh Bernoff

business process, call centre, centre right, citizen journalism, crowdsourcing, demand response, Donald Trump, estate planning, Firefox, John Markoff, Kickstarter, knowledge worker, Silicon Valley, skunkworks, social intelligence, Tony Hsieh

The community of contributors notices changes and acts to preserve or reverse them based on the ideals of the community. The same sort of cooperation drives other forms of online collaboration, including open-source software products like Linux (a flavor of the Unix operating system), Apache (a Web server), and Firefox (a Web browser). In open source, technically adept developers combine their efforts to build, test, and improve software products, and the code is available for all to see. Before you scoff at this form of development, recognize that Linux now underpins many Web servers and consumer electronics devices, including TiVo; Apache is the dominant Web server software on the Internet,7 and Firefox went from zero to over 25 percent of market share in less than two years.8 PARTICIPATION. While one in four online American adults say they use Wikipedia at least monthly, only 6 percent contribute to a wiki once a month.

A number of other videos on YouTube claim to debunk the video, showing it was done with string and film run in reverse, but this does not appear to have affected the number of people viewing it. 6. 31 percent of teenagers check in daily, for example: This data comes from North American Technographics Youth Online Survey, Q2 2009 (US). 7. Apache is the dominant Web server software on the Internet: Netcraft tracks Web server market share. You can see its December 2010 survey at http://forr.com/gsw2-7. 8. Firefox has gone from zero to over 25 percent of market share in less than two years: W3Counter is one of a number of sites that track browser market share. Browser market share figures vary greatly based on methodology—for example, self-report surveys of consumers give entirely different statistics from statistics collected from Web sites. The W3Counter statistics for November 2010 show growth for Firefox to 32 percent market share. The October 1, 2007, browser share report from W3Counter, which shows growth in the first two years, is visible at http://forr.com/gsw2-8. 9. It’s the seventh-most-popular site on the Web, according to Alexa: The Alexa rankings of sites by popularity are visible at Alexa’s home page: www.alexa.com. 10.

For example, an RSS feed might be the posts from a blog, the articles on a newspaper site, new photos posted by a member of Flickr, stock quotes, updates from basketball games, tagged items on Delicious—anything that changes regularly. Any site can host a feed of content that changes over time. To see the RSS feed, you need a receiver, which is known as an RSS reader. While there are a bunch of RSS reader programs, it’s easiest to view RSS feeds on personalized home pages from Google and Yahoo! or on the latest versions of browsers like Firefox or Internet Explorer.16 Either way, the RSS reader organizes the feeds into areas of your screen and, in some cases, tabs. You, the consumer of all this information, get to see everything that’s new in one place and to click on and view anything that looks interesting. Your RSS reader will look different from somebody else’s, depending on what content you’ve added. Web sites that support RSS feeds typically feature a distinctive orange square transmitter-style icon that you can click on to subscribe to the site’s feed.


pages: 648 words: 108,814

Solr 1.4 Enterprise Search Server by David Smiley, Eric Pugh

Amazon Web Services, bioinformatics, cloud computing, continuous integration, database schema, domain-specific language, en.wikipedia.org, fault tolerance, Firefox, information retrieval, Ruby on Rails, web application, Y Combinator

-- ** 7 other docs omitted for brevity ** --> </result> </response> [ 91 ] Download at Boykma.Com This material is copyright and is licensed for the sole use by William Anderson on 26th August 2009 4310 E Conway Dr. NW, , Atlanta, , 30327 Basic Searching Browser note Use Firefox for best results when searching Solr. Solr's search results return XML, and Firefox renders XML color coded and pretty-printed. For other browsers (notably Safari), you may find yourself having to use the View Source feature to interpret the results. Even in Firefox, however, there are cases where you will use View Source in order to look at the XML with the original indentation, which is relevant when diagnosing the scoring debug output. Solr's generic XML structured data representation Solr has its own generic XML representation of typed and named data structures.

That's just a simple label at the top of the schema file to name the schema. If you have multiple schemas for different data sets, then this is a useful differentiator. Next is the current working directory cwd, and Solr's home. The block below this is a navigation menu to the different admin screens and configuration data. The navigation menu is explained as follows: • SCHEMA: This downloads the schema configuration file (XML) directly to the browser. Firefox conveniently displays XML data with syntax highlighting. Safari, on the other hand, tries to render it and the result is unusable. Your mileage will vary depending on the browser you use. You can always use your browser's view source command if needed. • CONFIG: It is similar to the SCHEMA choice, but this is the main configuration file for Solr. • ANALYSIS: It is used for diagnosing potential query/indexing problems having to do with the text analysis.

It is convenient to use the form at first, but then subsequently make direct modifications to the URL in the browser instead of returning to the form. The form only controls a basic subset of all possible parameters. The main benefit to the form is that it applies the URL escaping for special characters in the query, and for some basic options, you needn't remember what the parameter names are. Solr's search results from its web interface are in XML. As suggested earlier, you'll probably find that using the Firefox web browser provides the best experience due to the syntax coloring. Internet Explorer displays XML content well too. If you, at some point, want Solr to return a web page to your liking or an alternative XML structure, then that will be covered later. Here is the XML response with my comments: <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">3</int> <lst name="params"> <str name="indent">on</str> <str name="rows">10</str> <str name="start">0</str> <str name="q">monitor</str> <str name="version">2.2</str> </lst> </lst> [ 22 ] Download at Boykma.Com This material is copyright and is licensed for the sole use by William Anderson on 26th August 2009 4310 E Conway Dr.


pages: 32 words: 10,468

Getting Things Done for Hackers by Lars Wirzenius

anti-pattern, Debian, Firefox, full text search, Inbox Zero, Kickstarter, Merlin Mann, security theater

In old times, our ancestors would print it on paper and put the paper on a pile. These days, purely digital things are practical. • Web pages can be bookmarked. You can keep a “read and review” bookmark folder. When you’ve read the page, remove the bookmark. • You can also save web pages on your local hard disk. This is useful for reading offline, and also for archiving the page in your filing system. The Firefox Save Page WE extension is excellent for this (see https://addons.mozilla.org/en-US/firefox/addon/save-page-we/). • You can have a “read and review” folder for e-mail as well. Newsletters, and any other e-mail that’s long and takes a while to read, can be put there. • I read e-books either on my Kindle device, or on my laptop, depending on the format. Unread e-books are on the home screen on my Kindle (or if the list grows very long, in a folder for unread books).


pages: 518 words: 49,555

Designing Social Interfaces by Christian Crumlish, Erin Malone

A Pattern Language, Amazon Mechanical Turk, anti-pattern, barriers to entry, c2.com, carbon footprint, cloud computing, collaborative editing, creative destruction, crowdsourcing, en.wikipedia.org, Firefox, game design, ghettoisation, Howard Rheingold, hypertext link, if you build it, they will come, Merlin Mann, Nate Silver, Network effects, Potemkin village, recommendation engine, RFC: Request For Comment, semantic web, SETI@home, Skype, slashdot, social graph, social software, social web, source of truth, stealth mode startup, Stewart Brand, telepresence, The Wisdom of Crowds, web application

Download at WoweBook.Com Tools for Sharing 211 How The executing script has access to the current page, which it may inspect and change. “Installation of a bookmarklet” can be performed by creating a new bookmark and pasting the code into the URL destination field, but more often you provide the user with a link and encourage him to “drag” it onto his bookmarks toolbar. Extensible browser plug-ins, such as the Delicious add-on for Firefox, represent a more sophisticated approach to the bookmarklet concept (Figure 8-2). Figure 8-2. The Delicious add-on for Firefox is like a bookmarklet on steroids. One problem with bookmarklets is that they can’t be keyboard-accessible (with shortcuts), but they can be made to run on any browser and can even be self-updating. Why Bookmarklets make sharing easier, thus reducing the friction for the user and facilitating more activity on the network. As seen on Delicious (http://delicious.com/) Facebook (http://www.facebook.com) TwitThis (http://twitthis.com/) Most blog software (such as Blogger, Movable Type, and so on) Download at WoweBook.Com 212 Chapter 8: Share and Share Alike Send/Share Widget What A sharing widget is a small graphical element placed within the markup of a hypertext file that enables users to share content and information resources with the community, in conjunction with a third-party site or social networking application platform such as Facebook or MySpace.

(Examples include projects such as PHP, OpenOffice, and Hadoop.) 2. Open infrastructure: Emerging as a new kind of openness, “cloud computing” has opened a pay-as-you-go, only-what-you-need approach to technology. (Examples in this area include Google App Engine and Amazon’s EC2 and S3 services.) 3. Open architecture: By defining a spec for how others can plug into your product, anyone can mod and extend your product. (A popular example of this is Firefox’s plug-in framework.) 4. Open standards: A community-powered, consensus-driven approach aims for a goal of interoperability, whether for software or hardware. (Examples of these standards can be found throughout the Web’s very fabric: HTML, CSS, XML, and JSON.) ——continued Download at WoweBook.Com Play Well with Others 443 What Does It Mean to Be Open? 5. Open ontology: Add value to the Web by surrounding your data with semantic meaning, so that software can make meaningful connections.

The event was conceived in the context of a government-wide directive to embrace social media and to shed a decades-long romance with obfuscation and secrecy. Throughout the affair, “open source,” “open access,” and “transparency” were spoken of ceaselessly, as though a prohibition against the concepts had recently been lifted and people were eager to regain mastery of, if not familiarity with, the terms. Clearly something has changed since I worked on the Spread Firefox grassroots marketing project in 2004—when Mozilla was easily dismissed as an outpost for “modern communists” (where meritocracy and distributed work somehow suggested communist leanings). Indeed, the culture of “openness” has infected even the most “free market” companies, such as Microsoft, with behemoths such as Yahoo! and Google (among others) falling over one another to claim the mantle of being the most open of all.


pages: 319 words: 90,965

The End of College: Creating the Future of Learning and the University of Everywhere by Kevin Carey

Albert Einstein, barriers to entry, Bayesian statistics, Berlin Wall, business cycle, business intelligence, carbon-based life, Claude Shannon: information theory, complexity theory, David Heinemeier Hansson, declining real wages, deliberate practice, discrete time, disruptive innovation, double helix, Douglas Engelbart, Douglas Engelbart, Downton Abbey, Drosophila, Firefox, Frank Gehry, Google X / Alphabet X, informal economy, invention of the printing press, inventory management, John Markoff, Khan Academy, Kickstarter, low skilled workers, Lyft, Marc Andreessen, Mark Zuckerberg, meta analysis, meta-analysis, natural language processing, Network effects, open borders, pattern recognition, Peter Thiel, pez dispenser, ride hailing / ride sharing, Ronald Reagan, Ruby on Rails, Sand Hill Road, self-driving car, Silicon Valley, Silicon Valley startup, social web, South of Market, San Francisco, speech recognition, Steve Jobs, technoutopianism, transcontinental railway, uber lyft, Vannevar Bush

Wresting power from such people was how you made the world the way you thought the world should be. The Web browser was the greatest portal to knowledge in human history. Having it owned and controlled by a giant corporation rankled. So as Netscape shrank into oblivion, some of its employees created a nonprofit foundation called Mozilla, with the logo of a giant red thunder lizard. The Mozilla Foundation birthed a new Web browser called Firefox. It was “open-source” software, which means that the underlying code was available for anyone to download, copy, and improve. The open-source ethos is both moral and practical. In a world that is increasingly run by highly sophisticated computer programs, no single person working alone can build sufficiently great software from scratch. Computer programmers work in virtual communities where chunks of code are shared, modified, and re-shared for anyone to use.

The goal was creating common software protocols so when the information was broken up into pieces in one place, it could be perfectly reassembled, microseconds later, in another. That’s what the tp stands for in the “http://” that sits in front of website addresses: “transfer protocol.” Openness isn’t some hippie sharing ideal. It is, practically speaking, vital to making the modern world function. The first, freely available version of Firefox was released in 2004. It was downloaded by 100 million people within a year. That was the year that Internet Explorer’s market share began to decline. Google released its own free browser, Chrome, at the end of the decade. At the same time, people began using smartphones and tablets to access the Internet instead of desktop computers preloaded with Explorer. Today, the majority of people accessing the Internet use software that is free and open-source.

Yet the experience of transferring from one college to another usually involves your new institution refusing to accept many of the credits earned at the old. So with the for-profit Web browser vanquished, the Mozilla Foundation turned to its next project: using the principles of openness to replace the college diploma. — MOZILLA’S PROJECT, called Open Badges, is designed to create an alternative system of credentials that is controlled by no central authority. Firefox took access to the world’s digital information away from powerful incumbent organizations and gave it to the people. Open badges are designed to do the same thing for information about people themselves. Open badges can be created by anyone. Mozilla itself doesn’t offer them. Instead, the foundation developed a set of common protocols that allow other organizations to create them, so people can collect and display badges earned in different ways and times in a single place.


Ubuntu 15.04 Server with systemd: Administration and Reference by Richard Petersen

Amazon Web Services, bash_history, cloud computing, Debian, Firefox, Mark Shuttleworth, MITM: man-in-the-middle, RFC: Request For Comment, SpamAssassin, web application

If you want to use the Ubuntu Ambiance or Radiance themes, install the light-themes package, and then open Applications | System Tools | System Settings, Appearance, and choose the Themes tab to change to the Ubuntu Ambiance or Radiance themes. sudo apt-get install light-themes Should you want to use the Hardware drivers, you can install jockey-gtk. For a Web browser you can install the firefox or epiphany-browser packages. sudo apt-get install firefox ubuntu-desktop For desktop features, it is recommended that you install the entire Ubuntu desktop. The Ubuntu desktop will install the complete set of desktop packages, including multimedia and graphics packages, which you may have no use for on your server. The added packages do not degrade the server; they just take up additional disk space (about 1 GB or more).

When manually invoked, the Software Updater displays a simple dialog displays the amount to be downloaded with "Remind Me Later" and "Install Now" buttons (see Figure 4-21 ). A manual update gives you more control over the update, letting you choose packages to install. Figure 4-21: Software Updater with selected packages To see actual packages to be updated, click the "Details of updates" arrow. Packages are organized into application categories such as Ubuntu base for the Linux OS packages, Firefox for Firefox updates, and LibreOffice for office updates. You can expand these to individual packages. The check boxes for each entry lets you de-select any particular packages you do not want to update (see Figure 4-6 ). Packages are organized according to importance, beginning with Important security updates and followed by Recommended updates. You should always install the security updates. All the APT-compatible repositories that are configured on your system will be checked for updates.

Landscape can manage Ubuntu instances on the Amazon EC2 cloud and on the Ubuntu Cloud Infrastructure. Ubuntu Linux Help and Documentation A great deal of help and documentation is available online for Ubuntu, ranging from detailed install procedures to beginner questions (see Table 1-1 ). The documentation for Ubuntu 15.04 is located at https://help.ubuntu.com/15.04/. This site includes the Ubuntu Server Guide. The Firefox Web browser start page displays links for two major help sites: Ubuntu documentation at https://help.ubuntu.com and Ubuntu Community at http://community.ubuntu.com. For answers to commonly asked questions check http://askubuntu.com/. It provides detailed answers to many technical issues. For detailed online support use the Ubuntu forums at http://ubuntuforums.org. In addition, there are blog and news sites as well as the standard Linux documentation.


pages: 420 words: 61,808

Flask Web Development: Developing Web Applications With Python by Miguel Grinberg

database schema, Firefox, full text search, Minecraft, platform as a service, web application

After calling this function and returning from the request, the development web server will know that it needs to exit gracefully. Example 15-7 shows the layout of a test case that is configured to run tests with Selenium. Example 15-7. tests/test_selenium.py: Framework for tests using Selenium from selenium import webdriver class SeleniumTestCase(unittest.TestCase): client = None @classmethod def setUpClass(cls): # start Firefox try: cls.client = webdriver.Firefox() except: pass # skip these tests if the browser could not be started if cls.client: # create the application cls.app = create_app('testing') cls.app_context = cls.app.app_context() cls.app_context.push() # suppress logging to keep unittest output clean import logging logger = logging.getLogger('werkzeug') logger.setLevel("ERROR") # create the database and populate with some fake data db.create_all() Role.insert_roles() User.generate_fake(10) Post.generate_fake(10) # add an administrator user admin_role = Role.query.filter_by(permissions=0xff).first() admin = User(email='john@example.com', username='john', password='cat', role=admin_role, confirmed=True) db.session.add(admin) db.session.commit() # start the Flask server in a thread threading.Thread(target=cls.app.run).start() @classmethod def tearDownClass(cls): if cls.client: # stop the flask server and the browser cls.client.get('http://localhost:5000/shutdown') cls.client.close() # destroy database db.drop_all() db.session.remove() # remove application context cls.app_context.pop() def setUp(self): if not self.client: self.skipTest('Web browser not available') def tearDown(self): pass The setUpClass() and tearDownClass() class methods are invoked before and after the tests in this class execute.

Example 15-7. tests/test_selenium.py: Framework for tests using Selenium from selenium import webdriver class SeleniumTestCase(unittest.TestCase): client = None @classmethod def setUpClass(cls): # start Firefox try: cls.client = webdriver.Firefox() except: pass # skip these tests if the browser could not be started if cls.client: # create the application cls.app = create_app('testing') cls.app_context = cls.app.app_context() cls.app_context.push() # suppress logging to keep unittest output clean import logging logger = logging.getLogger('werkzeug') logger.setLevel("ERROR") # create the database and populate with some fake data db.create_all() Role.insert_roles() User.generate_fake(10) Post.generate_fake(10) # add an administrator user admin_role = Role.query.filter_by(permissions=0xff).first() admin = User(email='john@example.com', username='john', password='cat', role=admin_role, confirmed=True) db.session.add(admin) db.session.commit() # start the Flask server in a thread threading.Thread(target=cls.app.run).start() @classmethod def tearDownClass(cls): if cls.client: # stop the flask server and the browser cls.client.get('http://localhost:5000/shutdown') cls.client.close() # destroy database db.drop_all() db.session.remove() # remove application context cls.app_context.pop() def setUp(self): if not self.client: self.skipTest('Web browser not available') def tearDown(self): pass The setUpClass() and tearDownClass() class methods are invoked before and after the tests in this class execute. The setup involves starting an instance of Firefox through Selenium’s webdriver API and creating an application and a database with some initial data for tests to use. The application is started in a thread using the standard app.run() method. At the end the application receives a request to /shutdown, which causes the background thread to end. The browser is then closed and the test database removed. Note Selenium supports many other web browsers besides Firefox. Consult the Selenium documentation if you wish to use a different web browser. The setUp() method that runs before each test skips tests if Selenium cannot start the web browser in the startUpClass() method.


pages: 59 words: 12,801

The Little Book on CoffeeScript by Alex MacCaw

Firefox, MVC pattern, node package manager, web application, Y2K

This strict context throws more exceptions and warnings than the normal context, giving developers some indication when they’re straying from best practices, writing un-optimizable code or making common mistakes. In other words, strict mode reduces bugs, increases security, improves performance, and eliminates some difficult-to-use language features. What’s not to like? Strict mode is currently supported in the following browsers: Chrome >= 13.0 Safari >= 5.0 Opera >= 12.0 Firefox >= 4.0 Internet Explorer >= 10.0 Having said that, strict mode is completely backwards compatible with older browsers. Programs using it should run fine in either a strict or normal context. Strict Mode Changes Most of the changes strict mode introduces pertain to JavaScript’s syntax: Errors on duplicate property and function argument names Errors on incorrect use of the delete operator Access to arguments.caller & arguments.callee throws an error (for performance reasons) Using the with operator will raise a syntax error Certain variables such as undefined are no longer writeable Introduces additional reserved keywords, such as implements, interface, let, package, private, protected, public, static, and yield However, strict mode also changes some runtime behavior: Global variables are explicit (var always required); the global value of this is undefined eval can’t introduce new variables into the local context Function statements have to be defined before they’re used (previously, functions could be defined anywhere) arguments is immutable CoffeeScript already abides by a lot of strict mode’s requirements, such as always using var when defining variables, but it’s still very useful to enable strict mode in your CoffeeScript programs.

Functions get hoisted before the program’s execution and as such are available everywhere in the scope they were defined in, even if called before the actual definition in the source. The trouble is, hoisting behavior differs between browser. For example: if (true) { function declaration() { return "first"; } } else { function declaration() { return "second"; } } declaration(); In some browsers (e.g., Firefox), declaration() will return "first", and in other browsers (e.g., Chrome), it’ll return "second", even though it looks like the else statement is never run. If you want to know more about declarative functions, then you should read Juriy Zaytsev’s guide, where he delves into the specifics. Suffice to say, they have fairly ambiguous behavior, and can lead to problems later down the road. All things considered, it’s best to steer clear of them by using function expressions instead: var wem = function(){}; wem(); CoffeeScript’s approach to this is to remove declarative functions entirely, using function expressions instead.


pages: 390 words: 96,624

Consent of the Networked: The Worldwide Struggle for Internet Freedom by Rebecca MacKinnon

A Declaration of the Independence of Cyberspace, Bay Area Rapid Transit, Berlin Wall, business cycle, business intelligence, Cass Sunstein, Chelsea Manning, citizen journalism, cloud computing, cognitive dissonance, collective bargaining, conceptual framework, corporate social responsibility, Deng Xiaoping, digital Maoism, don't be evil, Filter Bubble, Firefox, future of journalism, illegal immigration, Jaron Lanier, Jeff Bezos, John Markoff, Joi Ito, Julian Assange, Mark Zuckerberg, Mikhail Gorbachev, MITM: man-in-the-middle, national security letter, online collectivism, Panopticon Jeremy Bentham, Parag Khanna, pre–internet, race to the bottom, Richard Stallman, Ronald Reagan, sharing economy, Silicon Valley, Silicon Valley startup, Skype, Steve Crocker, Steven Levy, WikiLeaks

Nonprofit organizations, individual activists, independent media organizations, and low-budget educational institutions all over the world rely on WordPress, the open-source blogging platform, and Drupal, the open-source content management system, both of which are developed, maintained, and upgraded by a community of volunteer developers. Another extremely successful project dedicated to developing open-source software that helps ordinary nontechie Internet users gain greater control over their online lives is Mozilla. Its Firefox browser, an open-source volunteer-developed web browser that allows for a high degree of customization, now makes up roughly 30 percent of the world’s web browser usage. Firefox integrates the work of other developers through add-ons and plugins, including many that help increase people’s privacy and security online. One of these is the Torbutton, integrated with Tor, which enables users to surf the web anonymously and circumvent blocked websites. The Mozilla community also works on a range of other software tools, including the open-source e-mail client Thunderbird, which has become the preferred e-mail client for many activists because it is easy to encrypt, in addition to being free.

The Internet would not be what it is today if those engineers had been unable or unwilling to share TCP/IP freely with the world as part of the digital commons. The World Wide Web, invented two decades after the Internet, similarly owes its existence to the digital commons. What we call “the web” is an interlinked universe of websites accessed through web browsers such as Internet Explorer, Safari, and Firefox. All websites, no matter where they are created or what kind of computer system is used to host them, are readable from anywhere thanks to a common computer language called the hypertext mark-up language (HTML). The web is how most people on the planet today use the Internet. We can thank the Englishman Sir Tim Berners-Lee (eventually knighted for his invention), who in 1990 while at the particle physics lab at the European Organization for Nuclear Research in Switzerland wrote a simple computer program called the WorldWideWeb to make it easier for researchers in his lab to locate and share each other’s data.

Its flexible system of copyright licenses enables organizations like Global Voices, Wikipedia, and many other nonprofit citizen projects to ensure that their content is shared as widely as possible and translated into as many languages as possible, with the creators’ full approval and consent. The point is that people who want to protect their works with traditional copyright certainly can, but many other people who create media for reasons other than sales should also be able to do so. Other groups are focused explicitly on keeping the Internet as open and free as possible. In 2009, Mozilla (creator of the Firefox browser and other open-source tools) launched Drumbeat, a platform through which people can become actively involved in keeping the web open and free by organizing their own projects and recruiting others to help. One team is working to develop a set of universal “privacy icons”—a set of symbols that companies could adapt, which would make it easier for users to understand what personal information is being stored and for how long, and how and with whom it might be shared, under what circumstances.


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

anti-pattern, domain-specific language, en.wikipedia.org, Firefox, Google Chrome, MVC pattern, web application, WebSocket

x\uD83D\uDE80y'].length 3 7.4.3 Reversing strings with non-BMP code points Iteration also helps with reversing strings that contain non-BMP code points (which are larger than 16 bit and encoded as two JavaScript characters): 79 New string features let str = 'x\uD83D\uDE80y'; // ES5: \uD83D\uDE80 are (incorrectly) reversed console.log(str.split('').reverse().join('')); // 'y\uDE80\uD83Dx' // ES6: order of \uD83D\uDE80 is preserved console.log([...str].reverse().join('')); // 'y\uD83D\uDE80x' The two reversed strings in the Firefox console. Remaining problem: combining marks A combining mark is a sequence of two Unicode code points that is displayed as single symbol. The ES6 approach to reversing a string that I have presented here works for nonBMP code points, but not for combining marks. For those, you need a library, e.g. Mathias Bynens’ Esrever¹. 7.5 Numeric values of code points The new method codePointAt() returns the numeric value of a code point at a given index in a string: let str = 'x\uD83D\uDE80y'; console.log(str.codePointAt(0).toString(16)); // 78 console.log(str.codePointAt(1).toString(16)); // 1f680 console.log(str.codePointAt(3).toString(16)); // 79 This method works well when combined with iteration over strings: ¹https://github.com/mathiasbynens/esrever New string features 80 for (let ch of 'x\uD83D\uDE80y') { console.log(ch.codePointAt(0).toString(16)); } // Output: // 78 // 1f680 // 79 The opposite of codePointAt() is String.fromCodePoint(): > String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' true 7.6 Checking for containment and repeating strings Three new methods check whether a string exists within another string: > 'hello'.startsWith('hell') true > 'hello'.endsWith('ello') true > 'hello'.includes('ell') true Each of these methods has a position as an optional second parameter, which specifies where the string to be searched starts or ends: > 'hello'.startsWith('ello', 1) true > 'hello'.endsWith('hell', 4) true > 'hello'.includes('ell', 1) true > 'hello'.includes('ell', 2) false The repeat() method repeats strings: New string features 81 > 'doo '.repeat(3) 'doo doo doo ' 7.7 All new string methods Tagged templates: • String.raw(callSite, ...substitutions) : string Template tag for “raw” content (backslashes are not interpreted).

In libraries, you can usually avoid cyclic dependencies via careful design. In a large system, though, they can happen, especially during refactoring. Then it is very useful if a module system supports them, because the system doesn’t break while you are refactoring. The Node.js documentation acknowledges the importance of cyclic dependencies³⁶ and Rob Sayre provides additional evidence³⁷: Data point: I once implemented a system like [ECMAScript 6 modules] for Firefox. I got asked³⁸ for cyclic dependency support 3 weeks after shipping. That system that Alex Fritze invented and I worked on is not perfect, and the syntax isn’t very pretty. But it’s still getting used³⁹ 7 years later, so it must have gotten something right. ³⁵http://calculist.org/blog/2012/06/29/static-module-resolution/ ³⁶http://nodejs.org/api/modules.html#modules_cycles ³⁷https://mail.mozilla.org/pipermail/es-discuss/2014-July/038250.html ³⁸https://bugzilla.mozilla.org/show_bug.cgi?

It has the signature: setTimeout(callback, ms) After ms milliseconds, callback is added to the task queue. It is important to note that ms only specifies when the callback is added, not when it actually executed. That may happen much later, especially if the event loop is blocked (as demonstrated later in this chapter). setTimeout() with ms set to zero is a commonly used work-around to add something to the task queue right away. However, some browsers do not allow ms to be below a minimum (4 ms in Firefox); they set it to that minimum if it is. ²https://html.spec.whatwg.org/multipage/webappapis.html#timers Asynchronous programming (background) 435 24.2.2 Displaying DOM changes For most DOM changes (especially those involving a re-layout), the display isn’t updated right away. “Layout happens off a refresh tick every 16ms” (@bz_moz³) and must be given a chance to run via the event loop. There are ways to coordinate frequent DOM updates with the browser, to avoid clashing with its layout rhythm.


pages: 196 words: 58,122

AngularJS by Brad Green, Shyam Seshadri

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

Starting the Karma server Just run the following command: karma start [optionalPathToConfigFile] This will start the Karma server on port 9876 (the default, which you can change by editing the karma.conf.js file from the previous step). While Karma should open up a browser and capture it automatically, it will print all the instructions needed to capture another browser in the console. If you are too lazy to do that, just go to http://localhost:9876 in another browser or device, and you are good to start running tests in multiple browsers. Tip While Karma can capture the usual browsers automatically, on start (Firefox, Chrome, IE, Opera, and even PhantomJS), it is not limited to just those browsers. Any device on which you can browse to a URL can possibly be a runner for Karma. So if you open up the browser of your iPhone or Android device and browse to http://machinename:9876 (provided it is accessible!), you could potentially run your tests on mobile devices as well. Running the tests Execute the following command: karma run That’s it.

The sooner you accept that, the better off you will be. Thankfully, things have come a long way since the old days when there was no Firebug. Now, regardless of the choice of browser, there is generally something you can use to step in to your code, analyze your errors, and figure out the state of the application. Get to know the Developer Tools in Chrome and Internet Explorer; Firebug works across Firefox and Chrome. A few further tips to help you out when debugging your application: Always, always switch to the non-minified version of all your source code and dependencies when you want to debug. Not only will you get better variable names, you’ll also get line numbers and actual useful information and debugging capabilities. Try to keep your source code in individual JS files, not inlined in HTML.

test main require module last 'test/spec/main.js' ]; // list of files to exclude exclude = []; // test results reporter to use // possible values: dots || progress reporter = 'progress'; // web server port port = 8989; // cli runner port runnerPort = 9898; // enable/disable colors in the output (reporters and logs) colors = true; // level of logging logLevel = LOG_INFO; // enable/disable watching file and executing tests whenever any file changes autoWatch = true; // Start these browsers, currently available: // - Chrome // - ChromeCanary // - Firefox // - Opera // - Safari // - PhantomJS // - IE if you have a windows box browsers = ['Chrome']; // Continuous Integration mode // if true, it captures browsers, runs tests, and exits singleRun = false; We use a slightly different format to define our dependencies (the included: false is quite important). We also add the dependency on REQUIRE_JS and its adapter. The final thing to get all this working is main.js, which triggers our tests. // This file is test/spec/main.js require.config({ // !!


pages: 204 words: 54,395

Drive: The Surprising Truth About What Motivates Us by Daniel H. Pink

affirmative action, call centre, Daniel Kahneman / Amos Tversky, Dean Kamen, deliberate practice, Firefox, Frederick Winslow Taylor, functional fixedness, game design, George Akerlof, Isaac Newton, Jean Tirole, job satisfaction, knowledge worker, longitudinal study, performance metric, profit maximization, profit motive, Results Only Work Environment, side project, the built environment, Tony Hsieh, transaction costs, zero-sum game

Now, if this all-volunteer, all-amateur encyclopedia were the only instance of its kind, we might dismiss it as an aberration, an exception that proves the rule. But it's not. Instead, Wikipedia represents the most powerful new business model of the twenty-first century: open source. Fire up your home computer, for example. When you visit the Web to check the weather forecast or order some sneakers, you might be using Firefox, a free open-source Web browser created almost exclusively by volunteers around the world. Unpaid laborers who give away their product? That couldn't be sustainable. The incentives are all wrong. Yet Firefox now has more than 150 million users. Or walk into the IT department of a large company anywhere in the world and ask for a tour. That company's corporate computer servers could well run on Linux, software devised by an army of unpaid programmers and available for free. Linux now powers one in four corporate servers.

These are companies that raise capital, develop products, and sell them in an open market but do so in the service of a larger social mission or as he puts it, with the profit-maximization principle replaced by the social-benefit principle. The Fourth Sector Network in the United States and Denmark is promoting the for-benefit organization a hybrid that it says represents a new category of organization that is both economically self-sustaining and animated by a public purpose. One example: Mozilla, the entity that gave us Firefox, is organized as a for-benefit organization. And three U.S. entrepreneurs have invented the B Corporation, a designation that requires companies to amend their bylaws so that the incentives favor long-term value and social impact instead of short-term economic gain. Neither open-source production nor previously unimagined not only for profit businesses are yet the norm, of course. And they won't consign the public corporation to the trash heap.


Python Web Development With Django by Jeff Forcier

create, read, update, delete, database schema, Debian, don't repeat yourself, en.wikipedia.org, Firefox, full text search, Guido van Rossum, loose coupling, MVC pattern, revision control, Ruby on Rails, Silicon Valley, slashdot, web application

Selenium RC (http://selenium-rc.openqa.org/) gives its users the ability to create full-fledged automated tests in a variety of programming languages.You write your test apps; they are run by Selenium Core—you can think of it as a scripting layer that sits on top of the Core, a “code mode” if you will. A great tool to get started with Selenium is the IDE (see http://selenium-ide.openqa. org/). It’s written as a Firefox extension and is a full IDE that enables you to record and play back Web sessions as tests. It can also output tests in any of the languages supported by Selenium RC, so you can further enhance or modify those tests.You can set breakpoints as well as single-step through tests. Because it’s written on Firefox, one common FAQ is whether it exists for Internet Explorer (IE).The answer is no; however, the “record mode” of the IDE enables you to run them on IE via Selenium Core. Aside from these three tools—the Django test client,Twill, and Selenium, you can find more reading on Web application testing athttp://www.awaretek.com/tutorials. html#test and by following links found therein.

Software Link Subversion http://subversion.tigris.org Trac http://trac.edgewall.org Mailman http://www.gnu.org/software/mailman Markdown http://daringfireball.net/projects/markdown Markdown-Python http://freewisdom.org/projects/python-markdown wtables http://brian-jaress.livejournal.com/5978.html make http://www.gnu.org/software/make/ TextMate http://macromates.com Vim http://www.vim.org Ghostscript http://pages.cs.wisc.edu/~ghost/ html2ps http://user.it.uu.se/~jan/html2ps.html Firefox http://mozilla.com/firefox Ubuntu http://ubuntu.com FreeBSD http://freebsd.org Colophon Software Link Macports http://macports.org Python http://python.org Django http://djangoproject.com The Netherlands is also the birthplace of Guido van Rossum, creator of the Python language. Django, too, serves as a bridge connecting the potentially wild world of Web application development to everyday people who want to publish online without having to worry about writing complex server code, SQL statements, or what “MVC” stands for. 377 This page intentionally left blank Additional Resources for Mastering Python Core Python Programming The complete developer’s guide to Python!

Conventions Throughout this book, we use bold to introduce new or important terms, italics for emphasis, http://links/ for URLs, and monospacing to delineate Python and command line material such as variable names or commands. Multiline blocks of code or command examples are in monospaced blocks, like so: >>> print “This is Python!” This is Python! We have made use of all three major platforms—Mac OS X, Linux, and Windows— when writing this book and the example applications. In addition, we’ve used all major browsers (although not all may be present in our screenshots), namely Firefox, Safari, Opera, and Internet Explorer. Book Resources You can contact the authors collectively at authors@withdjango.com. Our Web site, http://withdjango.com, contains a large amount of auxiliary material and is referenced in a number of places throughout the book. Acknowledgments My name may have ended up first in the author list, but this book wouldn’t be here without the effort and dedication of the other two.


pages: 281 words: 95,852

The Googlization of Everything: by Siva Vaidhyanathan

1960s counterculture, activist fund / activist shareholder / activist investor, AltaVista, barriers to entry, Berlin Wall, borderless world, Burning Man, Cass Sunstein, choice architecture, cloud computing, computer age, corporate social responsibility, correlation does not imply causation, creative destruction, data acquisition, death of newspapers, don't be evil, Firefox, Francis Fukuyama: the end of history, full text search, global pandemic, global village, Google Earth, Howard Rheingold, informal economy, information retrieval, John Markoff, Joseph Schumpeter, Kevin Kelly, knowledge worker, libertarian paternalism, market fundamentalism, Marshall McLuhan, means of production, Mikhail Gorbachev, moral panic, Naomi Klein, Network effects, new economy, Nicholas Carr, PageRank, Panopticon Jeremy Bentham, pirate software, Ray Kurzweil, Richard Thaler, Ronald Reagan, side project, Silicon Valley, Silicon Valley ideology, single-payer health, Skype, Social Responsibility of Business Is to Increase Its Profits, social web, Steven Levy, Stewart Brand, technoutopianism, The Nature of the Firm, The Structural Transformation of the Public Sphere, Thorstein Veblen, urban decay, web application, zero-sum game

This is essentially what Microsoft did in the 1990s when it used its dominance in desktop software to subsidize and promote its Internet Explorer Web browser. Microsoft managed to kill off several innovative competitors, including Netscape, the original commercial browser. The only remaining major competitors for Explorer were Apple’s Safari (also subsidized by Apple’s profitable ventures) and Firefox, an open-source product released by the Mozilla Foundation. Explorer was for a long time the default browser on more than 70 percent of the computers in the world.30 Although it has been displaced 30 R END E R UNTO CAESA R by Firefox in recent years, Explorer is still installed along with Microsoft Windows, the operating system of choice for more than 90 percent of the world’s personal computers. Competition, both fair and unfair, is but one point of friction between Google and other powerful interests. Increasingly, Google is the target of attacks from firms that provide content to the Web, largely because they are failing to make much money from the Web and Google makes so much.

It now offers online software such as a word processor, spreadsheets, presentation software, and a REN D E R UNTO CA ESA R 17 calendar service—all operating “in the cloud” and thus freeing users from managing multiple versions of their files and applications on different computers, and easing collaboration with others. In 2008 Google released its own Web browser called Chrome, despite many years of collaborating with the Mozilla foundation in supporting the opensource Firefox browser. And in 2009 it previewed its Chrome operating system for cloud computing, a direct assault on Microsoft’s core product, Windows. It hosts health records online. On top of all that, since its beginning in 2004, its Google Books project has scanned millions and millions of volumes and has made many of them available online at no cost, simultaneously appropriating the functions of libraries on the one hand and the rights of publishers on the other.

See also trust bias Farsi language, 141 fax machines, 121, 123 FCC. See Federal Communication Commission (FCC) Federal Communication Commission (FCC), 18, 49 Federal Emergency Management Agency (FEMA), 41–42 Feldmar, Andrew, 177 FEMA. See Federal Emergency Management Agency (FEMA) filters, 7, 175–76, 178–79, 182 financial status, Google’s, 17–18, 229n14; and earnings from advertising, 27, 229n14 Finland, 142 Firefox, 17, 29, 30 Fleetwood Mac, 113 Flickr, 82 foreign markets, Google’s share in, 25, 132–33, 141–45, 229n14 forgetting, of information, 174, 176–79 260 IND EX Foucault, Michel, 111, 112 founders, Google’s, 67, 156, 186–87, 202 France, 14, 25, 47, 115, 130, 142, 146, 153 Frankel, Max, 56 free market, 45, 46 free rider problem, 30–36, 166 free speech, 109, 110; in China, 120, 130, 131 free trade, 109 Froomkin, Michael, 245n54 Gandy, Oscar, 236n20 gang-related online video, 110 Ganley, Paul, 168, 169, 172 Gaukroger, Stephen, 149 Germany, 14, 25, 47, 65–66, 102, 108, 112, 113, 121, 122, 123, 130, 134, 142, 153 global civil society, 135, 138, 140, 141, 145, 148, 243–44n48 globalization, 108–10, 111, 146 Gmail, 3, 16, 19, 67, 86, 90, 129, 143, 183; Chinese dissidents’ use of, 116, 118; Iranian dissidents’ use of, 116; students’ use of, 197 “God,” search results for, 63–64 Google bombing (search-engine optimization), 66 Google Books: and antitrust laws, 153, 162; authors’ response to, 152, 153, 154, 156, 161, 162, 163, 173, 202; Chinese response to, 153; copyright issues raised by, 10, 155, 159–61, 163, 166–71, 172; European response to, 153; and fair use, 153, 160–61, 162, 165–66, 168–70, 172; fourfactor analysis of, 169; initial project of, 156–60; legal actions resulting from, 48, 154, 156, 160–62, 165–66, 168; libraries’ participation in, 17, 23, 152–53, 155, 158–60, 162–66, 169, 171, 186, 202, 203; and misapplication of Web standards to books, 152, 167, 171; noncommercial service preferable to, 169, 171–72; and out-of-print books, 153, 154, 156, 161–62, 171; and partner program, 157, 159; and privatization of knowledge, 152, 153, 155, 164–65; and public domain, 157, 158, 159; and public failure, 44, 155; public project preferred to, 203–4; publishers’ response to, 11, 17, 48, 152–54, 156–63, 165–68, 170–73, 202; and registered users, 183; and rights registry, 161, 162; and royalty payments, 161, 172, 173; universities’ participation in, 150–53, 155, 158, 162–65, 169, 171–72, 186 Google Checkout, 16 Google Docs, 24, 29 Google Earth, 17 Google headquarters, 49, 72, 187 Google Maps, 106, 107, 117 Googlemobiles, 98, 104–5 Google News, 32–35, 44, 78, 79, 148 Google Scholar, 186, 190–94 Google Street View, 17, 48, 98–108, 111, 237nn24,32 Google Voice, 16 Google Web Search.


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

database schema, en.wikipedia.org, Firefox, Google Chrome, node package manager, telemarketer, web application

Modern versions of web browsers are cleaning up their implementations of it and adding in new features to make it more powerful and less quirky. With the advent of client libraries for these browsers, such as jQuery, script.aculo.us, or Prototype, programming in JavaScript has become fun and productive. Unwieldy APIs have been cleaned up, and fun, dynamic effects have been added. 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.

If you look at the headers the curl program sends to you, you see Click here to view code image { 'user-agent': 'curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5', host: 'localhost:8080', accept: '*/*' } If you call the JSON server in the browser, you see something like Click here to view code image { host: 'localhost:8080', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'accept-language': 'en-US,en;q=0.5', 'accept-encoding': 'gzip, deflate', connection: 'keep-alive' } On the response side, you have already used two methods: writeHead and end. You must call end on the response object once and only once for each incoming request. Otherwise, the client never gets the response and continues to listen on the connection for more data.

The big thing this file does is use the FormData extension to the XmlHttpRequest object to allow Ajax file uploads, as shown here: Click here to view code image $("input#submit_button").click(function (e) { var m = new Date(); var dateString = /* process m -- see GitHub */ $("input#date").val(dateString); var oOutput = document.getElementById("output"); var oData = new FormData(document.forms.namedItem("add_photo")); var oReq = new XMLHttpRequest(); var url = "/v1/albums/" + $("#albumid").val() + "/photos.json"; oReq.open("PUT", url, true); oReq.onload = function(oEvent) { if (oReq.status == 200) { oOutput.innerHTML = "\ Uploaded! Continue adding or <a href='/pages/album/" + $("#albumid").val() + "'>View Album</a>"; } else { oOutput.innerHTML = "\ Error " + oReq.status + " occurred uploading your file.<br \/>"; } }; oReq.send(oData); }); FormData is powerful and awesome but is not supported in Internet Explorer (IE) versions prior to 10. Firefox, Chrome, and Safari have all supported it for quite a while. If you need to support older IE browsers, you need to look at other methods for uploading files, such as using Flash or otherwise regular old HTML Forms. Recapping the App Structure The application has gotten a bit more complicated; it is worth spending a few seconds again covering exactly how you’ve structured it. You’ve moved all static content into the static/ folder and the code into the app/ folder, so you now have the following basic layout: The static/ folder contains the following sub-folders: • albums/—Contents of our albums and their image files • content/—Contains stylesheets and JavaScript bootstrapping files needed to render the page templates • templates/—The HTML templates for rendering pages in the client browser In the app/ folder, you have: • .


Simple and Usable Web, Mobile, and Interaction Design by Giles Colborne

call centre, Firefox, HyperCard, Menlo Park, slashdot, Steve Jobs, Steven Levy

Eliminate redundancies. Don’t say “on a daily basis” when “daily” means the same thing. These rules make text clearer, more persuasive, and shorter. For example: Please note that although Chrome is supported for both Mac and Windows operating systems, it is recommended that all users of this site switch to the most up-to-date version of the Firefox web browser for the best possible results. (41 words) Simplified version: For best results, use the latest version of Firefox. Chrome for Mac and Windows is also supported. (17 words) Use Lanham’s rules to remove the words that pad your sentences. DDB UK’s advertisement for Volkswagen in the UK shows just how much you can cut. emove Download from WoweBook.com Download from WoweBook.com Removing too much In the Apple Store in Tokyo you’ll find a remarkable glass elevator, finished in Apple’s trademark brushed aluminum.


pages: 180 words: 37,187

AngularJS Essentials by Rodrigo Branas

Firefox, MVC pattern, node package manager, single page application, web application

Chapter 8, Automating the Workflow, discusses how we will create an optimized distribution package for our application using Grunt and its plugins. Also, we will discover how to manage our dependencies with Bower. What you need for this book To implement the code in this book, you will need to use your favorite development interface and a web browser. I would recommend sublime text, but you may use Aptana (which is based on Eclipse), WebStorm, or any other IDE. AngularJS is compatible with the most browsers such as Firefox, Chrome, Safari, and Internet Explorer. Feel free to choose the one you are used to. Who this book is for If you have a passion for web development and are looking for a framework that could provide a reusable, maintainable, and modular way to create applications, and at the same time, help increase your productivity and satisfaction, this is the book for you. Conventions In this book, you will find a number of styles of text that distinguish between different kinds of information.

The best way to create it is by following the configuration wizard through the following command: karma init Karma's configurator will be shown, and you just have to follow the instructions in order to generate your configuration file. The first question will be regarding the testing framework you would like to use. Karma supports Mocha and QUnit beyond Jasmine. After that, it will ask you about RequireJS, adding it depending on our answer. Then, you will be asked a question about which browser you want to use. There are many options such as Chrome, Firefox, Opera, Safari, IE, and even PhantomJS. Take care of the next question about the location of each source and test file. You should place it in the correct order, otherwise you can have some trouble. For our application, the best strategy to adopt is to follow the code organization that we studied in Chapter 1, Getting Started with AngularJS. After this, you could exclude the files that you don't want to test.


pages: 426 words: 105,423

The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich by Timothy Ferriss

Albert Einstein, Amazon Mechanical Turk, call centre, clean water, Donald Trump, en.wikipedia.org, Firefox, fixed income, follow your passion, game design, global village, Iridium satellite, knowledge worker, late fees, lateral thinking, Maui Hawaii, oil shock, paper trading, Parkinson's law, passive income, peer-to-peer, pre–internet, Ralph Waldo Emerson, remote working, risk tolerance, Ronald Reagan, side project, Silicon Valley, Silicon Valley startup, Skype, Steve Jobs, Vilfredo Pareto, wage slave, William of Occam

Ask a well-informed colleague or a restaurant waiter, “Anything important happening in the world today? I couldn’t get the paper today.” Stop this as soon as you realize that the answer doesn’t affect your actions at all. Most people won’t even remember what they spent one to two hours absorbing that morning. Be strict with yourself. I can prescribe the medicine, but you need to take it. Download the Firefox web browser (www.firefox.com) and use LeechBlock to block certain sites entirely for set periods. From their site (http://www.proginosko.com/leechblock.html): You can specify up to six sets of sites to block, with different times and days for each set. You can block sites within fixed time periods (e.g., between 9am and 5pm), after a time limit (e.g., 10 minutes in every hour), or with a combination of time periods and time limit (e.g., 10 minutes in every hour between 9am and 5pm).

To come up with related terms and derivative terms, both use search term suggestion tools. Google Adwords Keyword Tool (http://adwords.google.com/select/KeywordToolExternal) Enter the potential search terms to find search volume and alternative terms with more search traffic. Click on the “Approx Avg Search Volume” column to sort results from most to least searched. SEOBook Keyword Tool, SEO for Firefox Extension (http://tools.seobook.com/) This is an outstanding resource page with searches powered by Wordtracker (www.wordtracker.com). Both then visit the three websites that consistently appear in top search and PPC positions. How can Sherwood and Johanna differentiate themselves? Use more credibility indicators? (media, academia, associations, and testimonials) Create a better guarantee?

Introduction to Pay-Per-Click (PPC) Advertising and Testing Google Adwords (www.google.com/adwords) Market Sizing and Keyword Suggestion Tools Brainstorm additional PPC search terms and determine the number of people who are searching for them. Google Adwords Keyword Tool (http://adwords.google.com/select/KeywordToolExternal) Enter the potential search terms to find search volume and alternative terms with more search traffic. Click on the “Approx Avg Search Volume” column to sort results from most to least searched. SEOBook Keyword Tool, SEO for Firefox Extension (http://tools.seobook.com/) Outstanding resource page with searches powered by Wordtracker (www.wordtracker.com). Low-Cost Domain Registration Domains in Seconds (www.domainsinseconds.com) I have registered more than 100 domains through this service. Joker (www.joker.com) GoDaddy (www.godaddy.com) Inexpensive but Dependable Hosting Services Shared hosting solutions, where your site is hosted alongside other sites on a single server, are so cheap that I recommend using two providers, one as a primary and one as a backup.


pages: 499 words: 144,278

Coders: The Making of a New Tribe and the Remaking of the World by Clive Thompson

2013 Report for America's Infrastructure - American Society of Civil Engineers - 19 March 2013, 4chan, 8-hour work day, Ada Lovelace, AI winter, Airbnb, Amazon Web Services, Asperger Syndrome, augmented reality, Ayatollah Khomeini, barriers to entry, basic income, Bernie Sanders, bitcoin, blockchain, blue-collar work, Brewster Kahle, Brian Krebs, Broken windows theory, call centre, cellular automata, Chelsea Manning, clean water, cloud computing, cognitive dissonance, computer vision, Conway's Game of Life, crowdsourcing, cryptocurrency, Danny Hillis, David Heinemeier Hansson, don't be evil, don't repeat yourself, Donald Trump, dumpster diving, Edward Snowden, Elon Musk, Erik Brynjolfsson, Ernest Rutherford, Ethereum, ethereum blockchain, Firefox, Frederick Winslow Taylor, game design, glass ceiling, Golden Gate Park, Google Hangouts, Google X / Alphabet X, Grace Hopper, Guido van Rossum, Hacker Ethic, HyperCard, illegal immigration, ImageNet competition, Internet Archive, Internet of things, Jane Jacobs, John Markoff, Jony Ive, Julian Assange, Kickstarter, Larry Wall, lone genius, Lyft, Marc Andreessen, Mark Shuttleworth, Mark Zuckerberg, Menlo Park, microservices, Minecraft, move fast and break things, move fast and break things, Nate Silver, Network effects, neurotypical, Nicholas Carr, Oculus Rift, PageRank, pattern recognition, Paul Graham, paypal mafia, Peter Thiel, pink-collar, planetary scale, profit motive, ransomware, recommendation engine, Richard Stallman, ride hailing / ride sharing, Rubik’s Cube, Ruby on Rails, Sam Altman, Satoshi Nakamoto, Saturday Night Live, self-driving car, side project, Silicon Valley, Silicon Valley ideology, Silicon Valley startup, single-payer health, Skype, smart contracts, Snapchat, social software, software is eating the world, sorting algorithm, South of Market, San Francisco, speech recognition, Steve Wozniak, Steven Levy, TaskRabbit, the High Line, Travis Kalanick, Uber and Lyft, Uber for X, uber lyft, universal basic income, urban planning, Wall-E, Watson beat the top human players on Jeopardy!, WikiLeaks, women in the workforce, Y Combinator, Zimmermann PGP, éminence grise

This works remarkably well for time-rich young people but less so for anyone with lots of coding talent but more real-world responsibilities. “Meritocracies say ‘your GitHub is your résumé,’ then they act surprised that their candidate pool doesn’t include a lot of single moms without time to hack on hobby projects,” as Johnathan Nightingale, a former general manager of the open source browser Firefox, writes. Firefox, he notes, was like that, too. The company that ran Firefox, Mozilla, had a female founder, “and still our ‘meritocracy’ was full of people who looked an awful lot like me.” A survey done by GitHub found that 95 percent of its respondents identified as men; 3 percent identified as female and 1 percent as nonbinary. Though solid numbers are hard to come by, other surveys and estimates of the amount of women involved in open source projects appear to find that it’s around 10 percent or lower.

But it’s the users who reveal the flaws; the users who, poking around and clicking on things, uncover all the inadequacies of the coders’ work. This can often wind up planting a deep, vibrating misanthropy in some programmers’ souls. Because, hey, your software would work fine if all those stupid users didn’t keep on doing dumb things that break it, right? Dealing with unpredictable behavior of users turns coders into “pessimistic, paranoid lunatics,” as Blake Ross, the cocreator of the Firefox browser, once wrote. It happens gradually, because every time they create a piece of software they discover that people do things with it that they, the creators, never predicted. His description is funny enough that it’s worth quoting at length: It starts when we’re 8 and coding our very first program. “What’s your favorite color?” it asks, sweetly, twirling a lock of Visual Basic around its finger.

.), ref1 Facebook, ref1, ref2, ref3, ref4, ref5, ref6 ad tech, civic impacts of, ref1 Cambridge Analytica scandal, ref1 content moderation, ref1, ref2 deep-learning model at, ref1 free-to-use model of, ref1 Like button, ref1 News Feed feature of (See News Feed [Facebook]) purchases Instagram, ref1 Sanghvi hired at, ref1 scale and, ref1 tracking of user activities by, ref1 women and minority coders at, percentage of, ref1 work atmosphere at, ref1 Fancy Bear, ref1 Fan Hui, ref1, ref2 Fast Company, ref1 feature creep, ref1 Ferrucci, Dave, ref1, ref2 file-sharing tools, ref1 Firefox, ref1 Fisher, Allan, ref1, ref2, ref3, ref4 Fitzpatrick, Brad, ref1, ref2 Flatiron School, ref1, ref2, ref3 Flickr, ref1 Flombaum, Avi, ref1 FLOW-MATIC computer language, ref1 flow state, ref1 Foer, Franklin, ref1 Fogg, B. J., ref1, ref2 food stamp program app (GetCalFresh), ref1 Fortran computer language, ref1, ref2, ref3 Founders at Work (Clark), ref1 Fowler, Chad, ref1 Fowler, Martin, ref1 Fowler, Susan, ref1 Frank, Robert, ref1 Franklin, Benjamin, ref1 Franklin Planner system, ref1 Franzen, Jonathan, ref1 free and open source software.


pages: 562 words: 153,825

Dark Mirror: Edward Snowden and the Surveillance State by Barton Gellman

4chan, A Declaration of the Independence of Cyberspace, active measures, Anton Chekhov, bitcoin, Cass Sunstein, cloud computing, corporate governance, crowdsourcing, data acquisition, Debian, desegregation, Donald Trump, Edward Snowden, financial independence, Firefox, GnuPG, Google Hangouts, informal economy, Jacob Appelbaum, job automation, Julian Assange, MITM: man-in-the-middle, national security letter, planetary scale, private military company, ransomware, Robert Gordon, Robert Hanssen: Double agent, rolodex, Ronald Reagan, Saturday Night Live, Silicon Valley, Skype, social graph, standardized shipping container, Steven Levy, telepresence, undersea cable, web of trust, WikiLeaks, zero day, Zimmermann PGP

(“Tor sucks,” one NSA presentation slide complained.) In order to make it easier for novices to use, Tor developers had baked their magic into a custom version of Firefox. They called it the Tor Browser Bundle. Now a small team of NSA hackers had come up with a way to see through the browser’s privacy shields. The NSA liked to hire rising stars in computer science and mathematics as interns for a summer or an academic year. Young innovators came up with hacks that old-timers missed, and a taste of life inside sometimes hooked them into postgraduate employment. It was one of those interns who broke the news that Snowden read in January. The intern and his team had found a vulnerability in Firefox, not in Tor itself, but they could exploit it against certain versions of the bundle. It was a mark of Snowden’s icy nerves—and the betrayal that some colleagues felt so strongly—that he congratulated the intern and began a correspondence to tease out details.

“Seriously, this is really great stuff,” he wrote on January 25. “I hope you get all the kudos you deserve for putting this together. How long did it take you to come up with this? If Tor team updates [Firefox] . . . do you think the TBB has enough target surface for you guys to restore the same access through a different vuln? Same time investment, or more?” Snowden was asking how long it would take to find a new hole in the browser once the old one was patched. “Somewhere between a week and two weeks,” the intern replied. “We’ve actually got a couple of bugs we’re looking at for Firefox 17+, and once I get back from a TDY [temporary duty] next week, I’m going to try to work with the rest of the team to get something ready to ship, and I’m confident we can have it ready when [Tor developers] release something new, or very soon after:)” Much later, when government officials and other critics accused Snowden of damaging NSA collection capabilities, he cited the exchange with the intern in reply.

., 275–76 see also surveillance Espionage Act (1917), 96, 99, 101, 261, 275, 308, 381 ES on, 292 Executive Order 12333, 84, 282, 287, 302, 338, 410 impact on U.S. persons of, 315–16, 317, 318, 335–36 see also surveillance, foreign Executive Order 13526, 265 Expeditionary Access Operations, see S3283 Facebook, 112 illegal spying by, 198 Face the Nation, BG’s appearance on, 229–30 FASCIA II, 172 Federal Bureau of Investigation (FBI), 14, 75, 86 culture of, 205 encryption technology as hindrance to, 312 illegal surveillance by, 180–81 Verizon metadata collected by, 142 Federal Trade Commission, 198 Felten, Ed, 232–33 on secrets revealed by metadata, 162–63 Firefox, Tor Browser Bundle of, 80 First Amendment, of U.S. Constitution, 14, 96, 99, 114, 185, 248, 261 FIRSTFRUITS, 225, 277 Brand on, 274 DOJ crime reports produced by, 274–75 internet rumors about, 271–72 tracing journalistic leaks as goal of, 272–73 FISA Amendments Act (2008), 69, 86, 94, 111, 126, 148, 338 Section 702 of, 123 FISA Court, see Foreign Intelligence Surveillance Court Five Eyes intelligence allies, 28, 69, 177, 311 Fleischer, Ari, 273, 406 Flynn, Michael T., 377 Forbes, 75 Foreign Denial and Deception Committee, 274, 278 Foreign Intelligence Surveillance Act (1978), 282, 338 and legal standard of relevance, 143–44 restrictions on NSA of, 122 Foreign Intelligence Surveillance Court, 111–12, 122, 123, 126, 263–64, 283 in annual review of PRISM program, 125 business records access authorized by, 143, 171 five-year limit on retention imposed by, 173, 179 mass surveillance authorized by, 111–12 NSA call data collection authorized by, 157, 165 NSA overseas collection as avoiding restrictions of, 317 relevance standard and, 143–44 STELLARWIND concealed from, 170 foreign surveillance, see surveillance, foreign 4chan, 192 Fourth Amendment, of the U.S.


pages: 267 words: 71,941

How to Predict the Unpredictable by William Poundstone

accounting loophole / creative accounting, Albert Einstein, Bernie Madoff, Brownian motion, business cycle, butter production in bangladesh, buy and hold, buy low sell high, call centre, centre right, Claude Shannon: information theory, computer age, crowdsourcing, Daniel Kahneman / Amos Tversky, Edward Thorp, Firefox, fixed income, forensic accounting, high net worth, index card, index fund, John von Neumann, market bubble, money market fund, pattern recognition, Paul Samuelson, Ponzi scheme, prediction markets, random walk, Richard Thaler, risk-adjusted returns, Robert Shiller, Robert Shiller, Rubik’s Cube, statistical model, Steven Pinker, transaction costs

This is the sort of pattern that analytics zeros in on. Some sites offer a better deal to new customers. It’s not hard to clear cookies. Go into your browser’s settings, choose “Privacy” or some such heading, and click “Remove all website data.” The drawback is that you’ll be starting from zero with all websites. It’s much easier to use two browsers. I use Safari for everyday use (with cookies enabled) and Firefox (with cookies turned off). When I use Firefox, I’m a new customer to every site. Then there’s the abandoned shopping cart ploy. Put whatever you want to buy in a retail site’s shopping cart. Click “check out.” Begin filling out the form. Make sure you enter your e-mail address but don’t enter any payment information. Leave the purchase in limbo and wait for the discounts to roll in. Within a few days, you may get an e-mail reminding you about your abandoned shopping cart.

See stock market price-to-earnings (PE) ratios DALBAR (research firm), 218 data analytics, 205 data mining, 139 De Dreu, Carsten, 85 Decide.com, 196–197, 198 Deckert, Joseph, 140 DeMuth, Phil, 230–231 differential pricing, 192–194 digital analysis, 119–121, 129, 139–140, 142, 143 Dimensional Fund Advisors, 219 distractors, 66 dogs, 83, 84, 161 Dow Jones Index, 229 Duke University, 28, 39 Einstein, Albert, 7 electoral fraud, 139–142, 143 Enron, 131–133 ergometrics, 39, 43 Erving, Julius, 160 ESP (extrasensory perception)/telepathy, 28–39, 46, 47 EuroMillions (lottery), 70, 74, 75, 76 Excel, 134 extremeness aversion, 191–192 Facebook, 99 Fairfield Sentry, 147–152 fake numbers, 112–125 criminal cases involving, 115–117, 118 digital analysis and, 119–121 identifying, 121–124 My Law and, 119–120 taxes and, 117–118 See also manipulated numbers Fastow, Andrew, 131 Federal Reserve Board, 221 Feller, William, 166 FIFA World Cup championships, 85 Financial Forensics (Lake Oswego, Oregon), 129 Firefox (Web browser), 194 first-digits, 109–110, 139, 149–150 Fisher, Daryl, 78–81 football, 161, 174–182 American football, 177–182, 266n penalty kicks, 83–85 forecasting, 205–212 fortune cookies, 71 fraud detection. See fake numbers; manipulated numbers Freakonomics (Levitt), 178 Fry, Thornton, 39 FTSE 100 Index, 220, 242–244 FTSE All Share Index, 225 future. See forecasting gambler’s fallacy, 166–169 Gardner, Howard, 256n Gault, Robert Harvey, 32–35 General Electric, 108–109 Ghilarducci, Teresa, 218–219 Gilovich, Thomas, 158–164, 168–170, 174, 249–250 Golden State Warriors, 158 Goldwater, Barry, 89 golf, 161, 162 Golf Handicap and Information Network, 152 Goodfellow, Louis D., 32–38 Google, 112 Google Voice, 190 Graham, Benjamin, 221 Gray, Stacy, 129 Grubman, Richard, 132 Hagelbarger, Dave, 3–6, 9, 11–17, 55 Harris, Bryan, 219 Harvard University, 159 Hashiyama, Takashi, 50 Health Maintenance Centers (HMC), 128–131 heart-rate monitors, 80–81, 82 Hebrew University of Jerusalem, 160–161 Hess, Eckhard, 89 Highfields Capital, 132 Hill, Theodore P., 44–45 Hindenberg disaster, 28 Hirzebruch, Fritz, 10–11, 14 Hollywood Stock Exchange, 184 home ownership, 199–204 home team advantage, 174–175, 180 horse racing, 161 “Hot Hand in Basketball: On the Misperception of Random Sequences, The” (Gilovich, Vallone, and Tversky), 159, 174 hot hand theory, 157–173, 249–251 football betting and, 174, 179 gambler’s fallacy and, 166–169 large/small number laws and, 167–169 property prices and, 201 randomness and, 158–160, 162–169 representativeness heuristic and, 170–172 stock market and, 217–219, 222, 235, 250 “How to Beat the Massachusetts Number Game” (Chernoff), 69 I Ching, 4 Indianapolis Colts, 181 inflation property prices and, 199, 200, 201, 202 stock market and, 221, 222, 223, 224 information theory, science of, 7–8 Inland Revenue, 137 Institute for Advanced Study (Princeton), 7 Institute for Perception (Netherlands), 43 Intelligence Advanced Research Projects Agency, 206 Internet, 7.


pages: 319 words: 72,969

Nginx HTTP Server Second Edition by Clement Nedelcu

Debian, fault tolerance, Firefox, Google Chrome, Ruby on Rails, web application

Either way, the backend server (a FastCGI application, another web server, and so on) may be hosted on a different server in the case of load-balanced architectures: Forwards request via FastCGI Sends request GET/ index.html HTTP/1.1 F orwards response Client Mozilla Firefox Returns response Web server Nginx Backend PHP The general issue with applications (such as PHP) is that they are quite resource-consuming, especially in terms of CPU. Therefore, you may find yourself forced to balance the load across multiple servers, resulting in the following architecture: [ 174 ] www.it-ebooks.info Chapter 5 Backend1 PHP Sends request GET/ index.html HTTP/1.1 Forwards request to one of the backends Forwards response Client Mozilla Firefox Web server Nginx Backend2 PHP Selected backend sends response Backend3 PHP In this case, Nginx is connected to multiple backend servers. To establish such a configuration, a new module comes into play: the upstream module.

Client computer Web server Sends request GET/ index.html HTTP/1.1 Sends response Process request Reads / index.html data HTTP/1.0 200 OK This mechanism has been in use since the beginning of the World Wide Web and it still is. However, as stated before, static websites are being progressively abandoned at the expense of dynamic ones that contain scripts that are processed by applications such as PHP and Python among others. The web serving mechanism thus evolved into the following: Client computer MSIE, Firefox, ... Web server Nginx, Apache, ... Application PHP, Phython, ... Sends request GET/ index.html HTTP/1.1 Pre-processes request URL rewriting, internal redirects... F orwards request Communicates using CGI Returns response Communicates using CGI Post- processes response Gzip compression, character encoding Sends response HTTP/1.0 200 OK [ 160 ] www.it-ebooks.info Processes request Script parsing ...


pages: 280 words: 71,268

Measure What Matters: How Google, Bono, and the Gates Foundation Rock the World With OKRs by John Doerr

Albert Einstein, Bob Noyce, cloud computing, collaborative editing, commoditize, crowdsourcing, Firefox, Frederick Winslow Taylor, Google Chrome, Google Earth, Google X / Alphabet X, Haight Ashbury, Jeff Bezos, job satisfaction, Khan Academy, knowledge worker, Menlo Park, meta analysis, meta-analysis, PageRank, Paul Buchheit, Ray Kurzweil, risk tolerance, self-driving car, side project, Silicon Valley, Silicon Valley startup, Skype, Steve Jobs, Steven Levy, subscription business, web application, Yogi Berra, éminence grise

My first assignment was to expand the use and distribution of Google Toolbar, which could be added to any browser to get you to Google Search. It was the right project for the right time. In just a few years, we scaled up Toolbar users by more than 10x. That was when I first saw the power of an ambitious, stretch OKR. Rethinking the Browser By then we’d set up something new for Google, a team to build client software. We had people working on Firefox to help improve Mozilla’s browser. By 2006, we were beginning to rethink the browser as a computing platform, almost like an operating system, so that people could write applications on the web itself. That fundamental insight gave birth to Chrome. We knew we needed a multiprocess architecture to make each tab its own process and protect a user’s Gmail if another application crashed. And we knew we had to get JavaScript working a lot faster.

We set a moonshot goal of 10x improvement and named the project “V8,” after the high-performance car engine. We were fortunate to find a Danish programmer named Lars Bak, who’d built virtual machines for Sun Microsystems and held more than a dozen patents. Lars is one of the great artists in his field. He came to us and said, without an ounce of bravado, “I can do something that is much, much faster.” Within four months, he had JavaScript running ten times as fast as it ran on Firefox. Within two years, it was more than twenty times faster—incredible progress. (Sometimes a stretch goal is not as wildly aspirational as it may seem. As Lars later told Steven Levy in In the Plex , “We sort of underestimated what we could do.”) Stretch OKRs are an intense exercise in problem solving. Having gone through the Toolbar journey, I had a good sense of how to work my way through the inevitable troughs.

See also commitment; focus culture and, 212 –13 management theory, 24 –27 top-down goal setting, 86 –89 Zume Pizza story, 211 Lean In (Sandberg), 184 –85 Lee, Albert, 90 –101, 93 Lee, Amy, 90 Lee, Mike, 55 –56, 90 –101, 93 , 141 Levie, Aaron, 77 Levin, Rick, 219 Levy, Steven, 11 –12, 11 n, 139 , 149 LinkedIn, 12 , 50 LiquidPlanner, 200 –201 Locke, Edwin, 9 –10, 134 Long, Mike, 224 , 226 , 232 love, 253 low value objectives (LVOs), 260 Lumeris, 223 –33 HR transformation, 226 –27 OKR resurrection, 228 –29 selling your reds, 231 –32 transparency without judgment, 229 –31 McFadden, Jim, 161 malaria, 13 , 130 , 132 , 132 n management by objectives (MBOs), 25 , 26 –27, 27 management theory, 24 –27 manager-led coaching, 184 , 278 , 279 Sand Hill Unicorns, 81 –85 MapMyFitness, 99 Maslow’s hierarchy of needs, 136 –37 Matthew, Lucy, 237 Mayer, Marissa, 7 Medicaid, 69 –70, 72 , 75 , 76 Mehrotra, Shishir, 160 , 163 , 164 , 168 membership engagement, 242 –43 Merrill, Amelia, 79 , 141 micromanagement, 88 Microsoft, 5 , 126 , 128 –29, 130 , 201 –2 midlife tracking, 117 –19 MightyText and, 63 –64 mismanagement, 86 –87 missions vs. objectives, 130 mistakes, classic OKR-writing, 258 –61 Monthly Active Teachers (MAT), 64 moonshot goals, 16 , 140 , 141 , 148 , 149 , 224 Moore, Gordon, 6 n, 20 , 32 Moore’s law, 20 , 21 , 121 n, 129 Morris, Donna, 189 –96, 193 Motorola, 36 –37, 40 –41 Mount Everest disaster of 1996, 9 Moyo, Dambisa, 240 Mozilla Firefox, 146 , 148 –49 Mullen, Larry, Jr., 235 , 244 MyFitnessPal, 90 –101 committed goals, 141 cross-team integration, 94 –97 less is more, 55 –56 North Star values, 100 –101 unacknowledged dependencies, 97 –101 Nadella, Satya, 161 National Academy of Engineering, 134 negative feedback, 185 Netscape, 251 New Yorker, 248 New York Times, 30 –31, 32 , 76 , 102 Ng, Andrew, 219 North Star values, 100 –101 nourishers, 216 , 280 Novell, 251 Noyce, Robert, 20 , 22 , 32 , 43 Nuna International, 69 –76 objective scoring, 120 –22 objectives vs. missions, 130 Okolloh, Ory, 240 OKRs (Objectives and Key Results) adaptability of, 246 applications and implications, 17 –18.


pages: 159 words: 42,401

Snowden's Box: Trust in the Age of Surveillance by Jessica Bruder, Dale Maharidge

anti-communist, Bay Area Rapid Transit, Berlin Wall, blockchain, Broken windows theory, Burning Man, cashless society, Chelsea Manning, citizen journalism, computer vision, crowdsourcing, Donald Trump, Edward Snowden, Elon Musk, Ferguson, Missouri, Filter Bubble, Firefox, Internet of things, Jeff Bezos, Julian Assange, license plate recognition, Mark Zuckerberg, mass incarceration, medical malpractice, Occupy movement, off grid, pattern recognition, Peter Thiel, Robert Bork, Shoshana Zuboff, Silicon Valley, Skype, social graph, Steven Levy, Tim Cook: Apple, web of trust, WikiLeaks

If you want to browse the internet without Big Brother as your copilot, consider trying Tor Browser, which routes your online navigation through a network of encrypted relays. Tor doesn’t play nice with advertisers, blocking background scripts and the browser-tracking technologies that follow your every move. When you log off, your browsing history gets wiped out. The downside? All these features make Tor run a bit more slowly than commercial browsers. Firefox and Safari are also catching up to consumers’ demands for privacy, integrating anti-tracking features and preferences into their software. No matter what browser you use, it’s worth remembering: Google and other commercial search engines act like giant vacuum cleaners, hoovering up your queries as an endless stream of market research. Their algorithms deliver results based on what they think you want, creating the kind of echo chamber technologists call a “filter bubble.”

See also Stasi Egypt, 145 Elahi, Hasan, 112 Electronic Frontier Foundation (EFF), 66–8, 79, 93, 125, 140, 143, 144 Electronic Privacy Information Center (EPIC), 143 Ellsberg, Daniel, 36, 43, 67 Espionage Act, 10, 42, 129 European Union, 143, 144 Evans, Jon, 8 Facebook, 48, 102, 103, 136–7, 141 FBI, 15, 18, 22, 86–8, 90, 94; FOIA requests, 124, 125, 126, 127, 145 Ferguson, Missouri, 111 Firefox (browser), 139 First Look Media, 126–9, 130 FitBit, 104 Ford, Gerald, 91 Foreign Intelligence Surveillance Act (FISA), 90–1 Franklin, Benjamin, 74 Freedom of the Press Foundation, 39, 62, 67, 68, 70 Gellman, Barton, 41, 43, 120 General Data Protection Regulation (GDPR) (Europe), 143, 144 Glomar Explorer, 125 Google, 48, 102, 108, 139, 145; Gmail, 137 Google Docs, 138 Google Drive, 126 Google Home, 99, 131 Google Maps, 21 Government Accountability Project, 85 GPG (Gnu Privacy Guard), 69, 70–1, 74, 75, 138 Greenwald, Glenn, 80, 120, 121, 129; Brazil, 59; EFF role, 67; First Look Media, 127–8; Hong Kong trip, 45, 46; Poitras and, 16–17, 38–9, 44–5, 46, 48; Snowden and, 6–7, 44–5, 48–9, 70–4, 75–6; Timm and, 62–3 Grindr, 103 Guantánamo Bay Naval Base, 64 Guardian, 2, 45, 46–7, 63, 80, 94; Poitras video, 48–49, 92 Hampton, Fred, 87–8 Harrison, Sarah, 56 Harvey, Adam, 142 Hawaii, 1, 28, 58 Hersh, Seymour, 43, 88 Holder, Eric, 29 Homeland Security Department.


pages: 275 words: 84,418

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

Apple II, Ben Horowitz, cloud computing, commoditize, disintermediation, don't be evil, Dynabook, Firefox, Google Chrome, Google Glasses, Googley, John Markoff, Jony Ive, Marc Andreessen, 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, zero-sum game

Schmidt denied that Google was building an online version of Microsoft Office, and Microsoft believed that effort wasn’t much of a threat either. By 2010, however, big commercial customers such as the City of New York started using Google’s applications to force Microsoft to lower its Office prices. And Schmidt denied that Google was building its own Internet browser—to compete with Microsoft, Apple, and its open-source partner Mozilla, which makes Firefox. Then, in 2008, it released Chrome, its own Internet browser. Schmidt said, quite reasonably, that over time it had become clear to him that a company such as Google that depended on Internet-browser access for people to use its products should not cede control of the browser to anyone. But it would have seemed less Machiavellian if he hadn’t been denying Google’s plans so forcefully for so long.

You’d never give up a smartphone to own an iPad, but you would certainly dump your laptop to own one. That it looked like a large iPhone was initially something to be criticized. It turned out that the bigger screen, as simple a tweak as this was, was exactly what made it such a new and powerful device. The importance of screen size seemed so obvious to Joe Hewitt—who had written the Facebook iPhone app in 2007 and had helped conceive and build the Firefox Internet browser in 2002—that the day after the iPad’s unveiling he wrote a nine-hundred-word blog post saying the iPad was the most important thing Apple had ever done. The year before, Hewitt had been fiercely critical of Apple for its restrictive app store policies. But his years of developing software for many different devices and platforms told him that the iPad had solved a fundamental problem.

Diehr DigiCash Digital Equipment Diller, Barry Discovery Channel Disney doctors Doerr, John Doll, Evan Doren, Kevin DoubleClick Duarte, Matias DVDs DVRs Dynabook eBay e-books and -readers; Brightline; iBooks; iPad; Kindle Economist, The, magazine Eisner, Michael Ellison, Larry Emanuel, Ari entertainment industry: Silicon Valley and; see also movies; music; television EO tablet computer ESPN Eustace, Alan Evo 4G by HTC Excite Exxon Facebook; iPhone and Fadell, Tony; Apple joined by; Forstall and; Forstall compared with; iPod and; Jobs and; Nest company of FCC Fiore, Mark Firefox Internet browser Flash by Adobe flight control Flipboard Ford, Henry Forstall, Scott; in Apple v. Samsung trial; Fadell and; Fadell compared with; Grignon and; iPad and; Jobs and; in meeting with Jobs and Google executives on Android; stomach ailment of Fortune magazine Fortune 500 companies Fox network Foxconn Galaxy smartphone Game of Thrones Ganatra, Nitin Gates, Bill; convergence and; and Google’s hiring of engineers away from Microsoft; iPad and; iPhone and; Jobs and; Macintosh and; tablets and Genentech General Magic General Motors (GM) Gizmodo Gmail GO Corp.


pages: 290 words: 119,172

Beginning Backbone.js by James Sugrue

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

Setting a variable is just as simple, and most importantly, setting the variable will be reflected in the original model object, as in the following code: backboneAttrs.name('Beginning Backbone.js'); console.log(backboneAttrs.name()); console.log(backboneBook.get('name')); 147 Chapter 7 ■ The Backbone Ecosystem Developer Tools and Utilities The Backbone ecosystem isn’t limited just to extensions to the library. With the power of the developer tools available in Chrome and Firefox, you may think that there is no need for anything more. However, there is an add-on available for Firefox named Backbone Eye (http://dhruvaray.github.io/spa-eye/) that helps developers understand the behavior of a Backbone application without the need to debug JavaScript. The add-on extends Firebug, so once you have both the Firebug and Backbone Eye add-ons installed, you will see a new tab in your Firebug browser, as in Figure 7-3. Figure 7-3. Backbone Eye add-on in action Figure 7-3 is the result of inspecting the example used for the LayoutManager plug-in using Eye.

The console provided allows you to enter JavaScript and see it execute immediately. We’ll be taking a closer look at Chrome Developer Tools in the next chapter. For now, you can access the tools using the Tools/ Developer Tools menu option from Chrome. To write something out to the console, simply use the console.log statement, which will accept any type of output. The Chrome console even gives you code completion for your JavaScript. If Firefox is your browser of choice, the Firebug add-on gives you similar capabilities. You will also find a number of services online that allow you to execute JavaScript and share snippets you create, such as jsfiddle.net and codepen.io. What Is an Object Anyway? An object is a representation of something in your problem domain that contains a number of attributes. The classic example of an object is a person.


pages: 286 words: 87,401

Blitzscaling: The Lightning-Fast Path to Building Massively Valuable Companies by Reid Hoffman, Chris Yeh

activist fund / activist shareholder / activist investor, Airbnb, Amazon Web Services, autonomous vehicles, bitcoin, blockchain, Bob Noyce, business intelligence, Chuck Templeton: OpenTable:, cloud computing, crowdsourcing, cryptocurrency, Daniel Kahneman / Amos Tversky, database schema, discounted cash flows, Elon Musk, Firefox, forensic accounting, George Gilder, global pandemic, Google Hangouts, Google X / Alphabet X, hydraulic fracturing, Hyperloop, inventory management, Isaac Newton, Jeff Bezos, Joi Ito, Khan Academy, late fees, Lean Startup, Lyft, M-Pesa, Marc Andreessen, margin call, Mark Zuckerberg, minimum viable product, move fast and break things, move fast and break things, Network effects, Oculus Rift, oil shale / tar sands, Paul Buchheit, Paul Graham, Peter Thiel, pre–internet, recommendation engine, ride hailing / ride sharing, Sam Altman, Sand Hill Road, Saturday Night Live, self-driving car, shareholder value, sharing economy, Silicon Valley, Silicon Valley startup, Skype, smart grid, social graph, software as a service, software is eating the world, speech recognition, stem cell, Steve Jobs, subscription business, Tesla Model S, thinkpad, transaction costs, transport as a service, Travis Kalanick, Uber for X, uber lyft, web application, winner-take-all economy, Y Combinator, yellow journalism

To go from “yet another search engine” to “the last search engine” (as my old friend Peter Thiel put it in his 2014 Stanford lecture “Competition Is for Losers”), Google had to leverage a series of existing networks and partners. For example, Google’s bold deal to power AOL’s search results helped the company grow its search business by orders of magnitude. Later, other distribution bets like the Firefox partnership, the acquisition of Android, and the creation of the Chrome browser all paid off and helped maintain Google’s distribution dominance. Google also found ways to leverage small partners as well, with its AdSense program for Web publishers feeding more raw traffic into the AdWords machine. Gross Margins Google is a phenomenally profitable company, with an enviable margin of 61 percent in 2016.

This purchase intent proved to be far more valuable per unit of traffic, enabling Google to earn fat margins. Google has since used the financial power of its gross margins to place big bets that other companies might shy away from, such as investing in Android and Chrome, two products that were going up against dominant competitors (Apple’s iOS in mobile phone software and Microsoft and Firefox in Web browsers). Google has also used its margins to fund radical experiments like X (formerly Google X) and Waymo (self-driving cars). These bets may or may not pay off, but even if they fail, Google’s margins give it the ability to recover quickly and keep going. Network Effects Google has leveraged network effects quite a bit in its major business lines, though not, ironically enough, in its core search product!

DISTRIBUTION Distribution is just as critical outside of the business context as it is for profit-seeking companies. No matter how potentially effective your “product”—whether that product is a social service, a political candidate, or anything else—is at improving the lives of those who adopt it, its impact is directly proportional to your ability to execute an effective distribution strategy. The Mozilla Foundation wasn’t the only open-source organization to create a Web browser (Firefox), but it was the only nonprofit organization that was able to leverage distribution to achieve a leading market share. In 2008, Barack Obama won the presidency in part because his campaign was the first to leverage the distribution possibilities of the Internet, including leveraging existing grassroots networks and achieving virality via social media. GROSS MARGIN Since many nonprofits don’t charge the people they serve, gross margin doesn’t apply.


pages: 302 words: 85,877

Cult of the Dead Cow: How the Original Hacking Supergroup Might Just Save the World by Joseph Menn

4chan, A Declaration of the Independence of Cyberspace, Apple II, autonomous vehicles, Berlin Wall, Bernie Sanders, bitcoin, Chelsea Manning, commoditize, corporate governance, Donald Trump, dumpster diving, Edward Snowden, Firefox, Google Chrome, Haight Ashbury, Internet of things, Jacob Appelbaum, Jason Scott: textfiles.com, John Markoff, Julian Assange, Mark Zuckerberg, Mitch Kapor, Naomi Klein, Peter Thiel, pirate software, pre–internet, Ralph Nader, ransomware, Richard Stallman, Robert Mercer, self-driving car, side project, Silicon Valley, Skype, slashdot, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, Stuxnet, Whole Earth Catalog, WikiLeaks, zero day

In 2006, Hacktivismo and a Texas cDc Ninja Strike Force member named Steve Topletz released the most popular of the group’s anonymity tools, another try at a protected browser, called Xerobank, or xB. This one was designed to work with Tor, which at that point allowed for computer-to-computer connections, email, and other services but not easy web surfing. This browser was a modified version of Firefox that could work from a USB stick. That meant it could go with a user to a public computer and leave no trace. Once again, by publicly working on a safe browser, Hacktivismo prodded Tor along. Tor released its own browser as part of a bundle, making it far more usable. By 2006, more users were relying on Tor to evade censorship, not to stay anonymous, and China had become the third-largest market, with about ten thousand daily users.

Mudge and his wife Sarah’s Cyber Independent Testing Lab functioned like the labs at Consumer Reports, scanning for the digital equivalent of automatic brakes and seat belts, all without needing access to the source code. With money from DARPA, the Ford Foundation, and others, CITL showed that on a Mac’s then-current operating system, hackers would have a harder time attacking Google’s Chrome browser than Safari or Firefox. Mudge aimed to make a more detailed version of such scores into something like the mandatory nutritional labels on food, telling buyers enough for them to make informed choices that reflect their priorities. Grappling with kidney cancer that brought back his post-traumatic stress disorder, Mudge saw the project through its first year, then handed day-to-day control to Sarah, a fellow veteran of federal contractor BBN.

See Corley, Eric encryption, 19, 66, 78–79, 100, 180, 197, 210 of email, 100, 162, 171–172 end-to-end, 152, 171–172, 193 Encyclopedia Dramatica, 148 Endgame, 121, 177 Enhanced 911 services, 26–28, 114 Erdogan, Recep, 168–169 espionage, 48, 132–135, 154, 181 international, 120, 137, 170–173, 198 by US government, 113–114, 119, 139, 161–162, 176 Esquire (magazine), 18 ethics, 3, 60, 113, 120, 133–134, 146–147, 172 personal codes of, 55, 119, 122–123, 125, 136, 209–212 professional ethics, 200–201, 211 social responsibility, 196, 211 See also moral issues exploits, 33, 57, 78, 119, 122, 133, 164, 167 export controls, 78–79, 155, 164 Facebook, 4–6, 152, 157–158, 190–196, 198–201, 211 Fairbanks, Cassandra, 149 Fanning, Shawn, 43, 47 Farr, Nick, 156–157 FBI, 27–30, 51, 64, 68, 74–75, 78, 148 iPhone access, 122, 165–166, 171–172, 211–212 Russian hacking, 176, 191 See also law enforcement; United States government Fielding, Noel, 147 Fierstein, Alan (Al Bell), 19 Financial Times (newspaper), 147 FinFisher (FinSpy), 163–165 Firefox, 130, 182 firewalls, 84, 104–105, 127, 149 Fisher, Phineas (pseudonym), 165–170, 171, 172 FlexiSpy, 165–166 Ford, Luke, 68 Ford Foundation, 133, 182 4chan, 63, 145–146, 193–194 Fox News, 199–200 Franken Gibe. See Brown, Bill Frauenfelder, Mark, 60 Freedom of the Press Foundation, 150–151, 155 freedoms, protection of of opinion and expression, 101–102, 172 of the press, 19, 27, 150–151, 155 of speech, 146, 157, 171 from unreasonable search and seizure, 27 Freegate, 139 Freitas, Nathan, 130–131, 136 FreqOut.


pages: 398 words: 120,801

Little Brother by Cory Doctorow

airport security, Bayesian statistics, Berlin Wall, citizen journalism, Firefox, game design, Golden Gate Park, Haight Ashbury, Internet Archive, Isaac Newton, Jane Jacobs, Jeff Bezos, mail merge, Mitch Kapor, MITM: man-in-the-middle, RFID, Sand Hill Road, Silicon Valley, slashdot, Steve Jobs, Steve Wozniak, Thomas Bayes, web of trust, zero day

It was a locked-down spyware version of Internet Explorer, Microsoft's crashware turd that no one under the age of 40 used voluntarily. I had a copy of Firefox on the USB drive built into my watch, but that wasn't enough -- the SchoolBook ran Windows Vista4Schools, an antique operating system designed to give school administrators the illusion that they controlled the programs their students could run. But Vista4Schools is its own worst enemy. There are a lot of programs that Vista4Schools doesn't want you to be able to shut down -- keyloggers, censorware -- and these programs run in a special mode that makes them invisible to the system. You can't quit them because you can't even see they're there. Any program whose name starts with $SYS$ is invisible to the operating system. It doesn't show up on listings of the hard drive, nor in the process monitor. So my copy of Firefox was called $SYS$Firefox -- and as I launched it, it became invisible to Windows, and so invisible to the network's snoopware.

There are millions of nodes -- the program was set up by the US Office of Naval Research to help their people get around the censorware in countries like Syria and China, which means that it's perfectly designed for operating in the confines of an average American high school. TOR works because the school has a finite blacklist of naughty addresses we aren't allowed to visit, and the addresses of the nodes change all the time -- no way could the school keep track of them all. Firefox and TOR together made me into the invisible man, impervious to Board of Ed snooping, free to check out the Harajuku FM site and see what was up. There it was, a new clue. Like all Harajuku Fun Madness clues, it had a physical, online and mental component. The online component was a puzzle you had to solve, one that required you to research the answers to a bunch of obscure questions. This batch included a bunch of questions on the plots in dojinshi -- those are comic books drawn by fans of manga, Japanese comics.


pages: 960 words: 125,049

Mastering Ethereum: Building Smart Contracts and DApps by Andreas M. Antonopoulos, Gavin Wood Ph. D.

Amazon Web Services, bitcoin, blockchain, continuous integration, cryptocurrency, Debian, domain-specific language, don't repeat yourself, Edward Snowden, en.wikipedia.org, Ethereum, ethereum blockchain, fault tolerance, fiat currency, Firefox, Google Chrome, intangible asset, Internet of things, litecoin, move fast and break things, move fast and break things, node package manager, peer-to-peer, Ponzi scheme, prediction markets, pull request, QR code, Ruby on Rails, Satoshi Nakamoto, sealed-bid auction, sharing economy, side project, smart contracts, transaction costs, Turing complete, Turing machine, Vickrey auction, web application, WebSocket

Cipher Browser A full-featured Ethereum-enabled mobile DApp browser and wallet that allows integration with Ethereum apps and tokens. Available for iOS and Android. Browser Wallets A variety of wallets and DApp browsers are available as plug-ins or extensions of web browsers such as Chrome and Firefox. These are remote clients that run inside your browser. Some of the more popular ones are MetaMask, Jaxx, MyEtherWallet/MyCrypto, and Mist. MetaMask MetaMask, introduced in Chapter 2, is a versatile browser-based wallet, RPC client, and basic contract explorer. It is available on Chrome, Firefox, Opera, and Brave Browser. Unlike other browser wallets, MetaMask injects a web3 instance into the browser JavaScript context, acting as an RPC client that connects to a variety of Ethereum blockchains (mainnet, Ropsten testnet, Kovan testnet, local RPC node, etc.).

Remember that for a wallet application to work, it must have access to your private keys, so it is vital that you only download and use wallet applications from sources you trust. Fortunately, in general, the more popular a wallet application is, the more trustworthy it is likely to be. Nevertheless, it is good practice to avoid “putting all your eggs in one basket” and have your Ethereum accounts spread across a couple of wallets. The following are some good starter wallets: MetaMask MetaMask is a browser extension wallet that runs in your browser (Chrome, Firefox, Opera, or Brave Browser). It is easy to use and convenient for testing, as it is able to connect to a variety of Ethereum nodes and test blockchains. MetaMask is a web-based wallet. Jaxx Jaxx is a multiplatform and multicurrency wallet that runs on a variety of operating systems, including Android, iOS, Windows, macOS, and Linux. It is often a good choice for new users as it is designed for simplicity and ease of use.

Unlike other browser wallets, MetaMask injects a web3 instance into the browser JavaScript context, acting as an RPC client that connects to a variety of Ethereum blockchains (mainnet, Ropsten testnet, Kovan testnet, local RPC node, etc.). The ability to inject a web3 instance and act as a gateway to external RPC services makes MetaMask a very powerful tool for developers and users alike. It can be combined, for example, with MyEtherWallet or MyCrypto, acting as a web3 provider and RPC gateway for those tools. Jaxx Jaxx, which was introduced as a mobile wallet in the previous section, is also available as a Chrome and Firefox extension and as a desktop wallet. MyEtherWallet (MEW) MyEtherWallet is a browser-based JavaScript remote client that offers: A software wallet running in JavaScript A bridge to popular hardware wallets such as the Trezor and Ledger A web3 interface that can connect to a web3 instance injected by another client (e.g., MetaMask) An RPC client that can connect to an Ethereum full client A basic interface that can interact with smart contracts, given a contract’s address and application binary interface (ABI) MyEtherWallet is very useful for testing and as an interface to hardware wallets.


Nagios: System and Network Monitoring by Wolfgang Barth

Chuck Templeton: OpenTable:, Debian, en.wikipedia.org, Firefox, RFC: Request For Comment, web application

This plugin does not work under Linux, however; in Windows it works with Internet Explorer, and also with Netscape, Mozilla, and Firefox.13 Of the VRML plugins for Linux (three well-known projects are OpenVRML,14 freeWRL,15 and vrwave16 ) the standard Linux distributions usually do not include a finished package, so you are dependent on external packages. There are binary RPM packages for OpenVRML, but the current (at the time of going to press) version 0.15.9 needs the very newest libc and cannot therefore even be installed in SuSE Linux 9.3. You should not try compiling the software yourself unless you are an experienced system administrator or software developer: there are a large number of pitfalls. If you have never worked with the Java compiler before and have not compiled complex software packages such as Mozilla or Firefox yourself, then you should leave it alone. Figure 16.28: This picture marks the beginning of the tour through your own network But all of this is no reason to despair, since the use of 3D navigation is questionable anyway, especially as the 2D view of the normal status map displays all the information required, and displaying simple flat graphics in the browser takes up considerably less time than CPU-intensive 3D rendering.

The definition of a corresponding command object and its use as a service is no different from that based on other plugins; page 102 shows an example. 6.4.3 Monitoring Web proxies Proxy test with check_http A proxy such as Squid can also be tested with check_http, but this assumes that you have some knowledge of how a browser makes contact with the proxy. It does this in the form of an HTTP header: GET http://www.swobspace.de/ HTTP/1.1 Host: www.swobspace.de User-Agent: Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0 9 This can be checked in the shell with echo $?. 101 6 Plugins for Network Services Accept: text/xml,application/xml,application/xhtml+xml,... Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Pragma: no-cache Cache-Control: no-cache The decisive entries are printed in bold type.

Figure 16.28: This picture marks the beginning of the tour through your own network But all of this is no reason to despair, since the use of 3D navigation is questionable anyway, especially as the 2D view of the normal status map displays all the information required, and displaying simple flat graphics in the browser takes up considerably less time than CPU-intensive 3D rendering. Before you rush into the adventure of compiling software yourself, we recommend that you decide for yourself, using the Cortona plugin, whether it is worth the effort of compiling a project like OpenVRML. 12 13 14 15 16 294 http://www.parallelgrafics.com/products/cortona/ For Mozilla and Firefox you have to install it manually, select Custom instead of Typical in the installation routine, and in unsupported browsers specify the plug-in directory of the browser. http://www.openvrml.org/ http://freewrl.sourceforge.net/ http://www.iicm.edu/vrwave/ 16.2 An Overview of the Individual CGI Programs 16.2.7 Querying the status with a cell phone: statuswml.cgi In order to make the information provided by Nagios accessible for WAP17 -capable devices without a fully functional browser, statuswml.cgi generates a Web page in the WML format,18 which can be displayed with a cellphone—provided that the Nagios server is reachable in the Internet.


Making Globalization Work by Joseph E. Stiglitz

affirmative action, Andrei Shleifer, Asian financial crisis, banking crisis, barriers to entry, Berlin Wall, business process, capital controls, central bank independence, corporate governance, corporate social responsibility, currency manipulation / currency intervention, Doha Development Round, Exxon Valdez, Fall of the Berlin Wall, Firefox, full employment, Gini coefficient, global reserve currency, Gunnar Myrdal, happiness index / gross national happiness, illegal immigration, income inequality, income per capita, incomplete markets, Indoor air pollution, informal economy, information asymmetry, Intergovernmental Panel on Climate Change (IPCC), inventory management, invisible hand, John Markoff, Jones Act, Kenneth Arrow, Kenneth Rogoff, low skilled workers, manufacturing employment, market fundamentalism, Martin Wolf, microcredit, moral hazard, new economy, North Sea oil, offshore financial centre, oil rush, open borders, open economy, price stability, profit maximization, purchasing power parity, quantitative trading / quantitative finance, race to the bottom, reserve currency, rising living standards, risk tolerance, Silicon Valley, special drawing rights, statistical model, the market place, The Wealth of Nations by Adam Smith, Thomas L Friedman, trade liberalization, trickle-down economics, union organizing, Washington Consensus, zero-sum game

Even a dedicated scientist needs a laboratory, and laboratories are expensive. The monopoly profits arising from intellectual property provide an alternative source of funding, one that has some large costs for society, which have to be weighed against the benefits. 22.The Firefox browser was written as part of the Mozilla project. The project produces open source software and is supported by the Mozilla Foundation, which received start-up support from AOL’s Netscape division. (More information available at www.mozilla.org.) As of March 2006, eighteen months after its launch, Mozilla Firefox was estimated to have 10 percent of the market. See Antony Savvas, “Firefox Reaches One in Ten,” ComputerWeekly.com, April 5, 2006, at www.computerweekly.com/Articles/2006/04/05/215224/Firefoxreachesonein ten.htm. 23.President Jefferson, who as secretary of state was one of the original drafters of the 1793 Patent Act, envisioned patents being granted only to physical, useful inventions.

Today we have the Linux computer operating system, which is also based on the principle of open architecture. Everyone who participates is required to accept that it is an open source, a dynamic program that is being constantly improved by thousands of users. A free, viable alternative to Microsoft’s operating system, it is expanding rapidly, especially in developing countries. An offshoot of Linux, the browser Mozilla Firefox, has been growing even faster. Not only is it free, but it seems to be less subject to the security problems that have plagued Microsoft’s Internet browser.22 The worry is that inevitably Linux will encroach on one of the hundreds of thousands of patents that have been granted, and the holder of the patent will attempt to hold the entire Linux system up for ransom. Even if the patent is eventually shown not to be valid, the economic costs can be enormous, as Research In Motion (the company that makes the BlackBerry) found out as it was forced to pay over $600 million, not to the inventor, but to a company that had obtained the patent on the cheap—a patent that had already been disqualified in Germany and the U.K.


pages: 287 words: 92,194

Sex Power Money by Sara Pascoe

Albert Einstein, call centre, Donald Trump, Firefox, gender pay gap, invention of movable type, Louis Daguerre, meta analysis, meta-analysis, Neil Kinnock, phenotype, telemarketer, twin studies, zero-sum game

MAYBE people shouldn’t share the electronic cupboard they keep porn in? I sat on a sofa across from where Adam was already snoring and opened his computer. As I attached headphones, the desktop loaded, replete with just two icons. One was the browser Firefox chasing his tail. The other was a close-up of male genitals, squashed into a square and competing with the entire internet for my attention. That was it, not even a shortcut to iTunes. This was all that Adam needed at his fingertips, a host browser and a cube of testicles. Which one do you think I clicked? BALLS, you followed your heart and it led to a scrotum as always. FIREFOX was the one you didn’t click on. You’re correct, otherwise this would be a boring story. ‘Hey guys, a decade ago I saw a weird icon on my boyfriend’s computer, then I watched two hours of Curb Your Enthusiasm, bye.’

The camera zoomed in and I quickly finger-pecked ESCAPE CANCEL UNDO. The computer stopped whirring as the disc inside slowed and ejected itself. There was some mild farce as I hurried the disc back in and it unhelpfully restarted. I did not have a useful thought. I knew I was encroaching on Adam’s private business. I was expecting him to wake up and shout at me. I tried to correct everything by doing what I should’ve done in the first place. I clicked on Firefox and OH DEAR. The page that loaded was the one that’d been visited most recently. This website was a menu of sex workers and the services they offered. The agency or collective was called Shemale Escorts and Ladyboys. These terms have historically been used in a catch-all, non-specific way to refer to people who might be transitioning, transitioned, transvestite, transsexual, a drag queen or even hermaphrodite.


pages: 153 words: 52,175

Bit Literacy: Productivity in the Age of Information and E-mail Overload by Mark Hurst

en.wikipedia.org, Firefox, Google Earth, mail merge, pre–internet, profit motive, social software, software patent, web application

Bit-literate users must know how to access their favorite applications, folders, and files with a single keystroke. Setting up these keystrokes is easy with a tool like QuicKeys; the only other requirement is committing to learning and using these keystrokes instead of the mouse. I’ve set up my computer (and all my employees’ computers) to use the following keystrokes for the most common applications: F6: word processor (on the Macs at my company, it’s AppleWorks) F7: Web browser (Safari or Firefox) F8: e-mail (Apple Mail or Mailsmith) F9: text editor (TextWrangler) F10: calendar (Now Up-to-Date) On a Windows computer the applications would be different—the word processor would most likely be Word, and the e-mail and calendar would probably be Outlook—but the keystrokes could be the same. Function commands, the F keys at the top of the keyboard, are good choices for system-wide keystrokes because they’re generally not in use by anything else.47 Users should also have one-touch access to commonly used files and folders: Files: QuicKeys allows you to define a keystroke to open a given file.

Paper will always be useful in some situations, but bit-literate users will avoid it when possible. 53 “Open Source Spying,” by Clive Thompson, the New York Times Magazine, December 3, 2006. 54 Popup text from Microsoft Word 2004 for Mac, version 11.0. 55 The SANS Internet Storm Center monitors the average "survival time" of a Windows PC at http://isc.sans.org/survivaltime.html. 56 The name was coined by Helen Moriarty, mother of my business partner Phil Terry, back in 1999. 57 Here's most of what we add: QuicKeys for one-touch access to applications and the team contacts file; Default Folder for one-touch folder access; Typinator or TypeIt4Me as the bit lever; TextWrangler as the text editor; AppleWorks as the word processor and wireframing tool; FileMaker for databases; Now Up-to-Date for the calendar; Firefox or Safari as the Web browser; a Gootodo.com account for the todo list; Mailsmith for the e-mail program; Microsoft Office for compatibility to client files; and for really dedicated learners, the Dvorak keymap for the keyboard. We also add Classic Menu and ASM for the upper-left and upper-right menus that were so effective in OS9 but disappeared in OSX. We disable Apple's poorly-designed Spotlight feature and give users the choice of Quicksilver and EasyFind as a replacement. 58 "Pause Stirs Concern That Growth In Productivity May Be Flattening," by Mark Whitehouse and Tim Aeppel, the Wall Street Journal, November 3, 2006.


pages: 309 words: 54,839

Attack of the 50 Foot Blockchain: Bitcoin, Blockchain, Ethereum & Smart Contracts by David Gerard

altcoin, Amazon Web Services, augmented reality, Bernie Madoff, bitcoin, blockchain, Blythe Masters, Bretton Woods, clean water, cloud computing, collateralized debt obligation, credit crunch, Credit Default Swap, credit default swaps / collateralized debt obligations, cryptocurrency, distributed ledger, Ethereum, ethereum blockchain, Extropian, fiat currency, financial innovation, Firefox, Flash crash, Fractional reserve banking, index fund, Internet Archive, Internet of things, Kickstarter, litecoin, M-Pesa, margin call, Network effects, peer-to-peer, Peter Thiel, pets.com, Ponzi scheme, Potemkin village, prediction markets, quantitative easing, RAND corporation, ransomware, Ray Kurzweil, Ross Ulbricht, Ruby on Rails, Satoshi Nakamoto, short selling, Silicon Valley, Silicon Valley ideology, Singularitarianism, slashdot, smart contracts, South Sea Bubble, tulip mania, Turing complete, Turing machine, WikiLeaks

When they temporarily switched off the option for maintenance in September 2014, they received “about 30 emails from people asking for it to be reinstalled, which is odd because that’s more people than have actually used the feature.”220 Automattic, the company that develops blogging software WordPress, offered Bitcoin in November 2012 to allow paid wordpress.com upgrades for users without access to PayPal or credit cards. They withdrew the option in February 2015, noting it was only used approximately twice a week.221 The Mozilla Foundation, the charity that develops the Firefox web browser, began accepting Bitcoin donations for their end of 2014 campaign. This wasn’t good enough for the advocates: they demanded Mozilla include Bitcoin prominently on the primary donation page! With millions of page views, it was quite easy to run an A/B test, where you serve a different version of the page to a fraction of the viewers and can directly compare the effects of the two versions.

Strangelove 101 Dread Pirate Roberts 49 DRM 123, 124, 127, 135, 136 e-Gold 18, 62, 72 Early, Steve 78 economies of scale 25, 58 Economist, The 37, 66 eDonkey 45 EITC 68 Electrum wallet 66 EOS 98 ERC-20 97 ether 94 Ethereum 72, 88, 94, 106, 116, 129, 136 Ethereum Classic 110 Ethereum Foundation 109, 136 Ethereum Virtual Machine 106 F-Secure 73 Facebook 113 Fair Music: Transparency and Payment Flows in the Music Industry 128 Falkvinge, Rick 38 Far Wilds, The 45 Fast Internet Bitcoin Relay Engine 58 FBI MoneyPak 73 Featured Artists Coalition 130 fees 26, 69 FIBRE 58 Fields Medal 96 Finney, Hal 20, 31, 59 Firefox 76 Folding@Home 91 Foldingcoin 91 Force, Carl Mark IV 53 Forrest, Katherine B. 53 FPGA 56 Francis, Ryan 93 Frank, Anne 48 Free Talk Live 37, 50 FreeRoss.org 53 Freicoin 91 Frosty 51 Frou Frou 129 Funke Kupper, Elmer 121 Fusion 65 Future of Bitcoin Conference 68 Garzik, Jeff 50 gas 94 Gawker 37, 50 GDAX 82 Gentle, Ryan 93 GHash.io 58 Gibson, William 19 Gini coefficient 30 Git 112, 122 Gizmodo 64 Global Repertoire Database 128, 134 Gnosis 98 gold bug 20 gold standard 20 Golem 98 Golumbia, David 141 Goodman, Leah McGrath 64 Google 127 GovernMental 107 GPU 55 GQ 66 Great Depression 20 Greece 32 Green, Alex 93 Greenberg, Andy 64 Grigg, Ian 62 Gupta, Vinay 129 halting problem 110 hash 13 Hashcash 19 Hearn, Mike 65 high-yield investment program 38, 40 Hoppe, Hans-Herman 24 hot wallet 12 Hotwire PE 63 Huobi 82 Hyperledger 113, 121, 122 IBM 113, 115, 121, 122 IBM Blockchain 122 ICO 88, 95, 97, 139 Iconomi 98 immutability 11, 105 Imogen Heap 129 Individual Pubs 78 Industrialisation of Distributed Ledger Technology in Banking and Financial Services 115 Initial Coin Offering 88, 97 Initial Crowdfunding Offering 97 Intel 123 Intel® Software Guard Extensions™ 123 InterPlanetary File System 131, 135 IPFS 131 iTunes 129. 130, 131 Jamaican bobsled team 93 JASRAC 126 JavaScript 107 John Birch Society 17, 21 Kaminska, Izabella 141 Karpelès, Mark 45, 52, 87 Kennedy, Ryan 93 Kenya 93 key 12 King of the Ether 106 Kleiman, Dave 64 Know Your Customer 81 Kobalt 126 Kraken 44 Kurzweil, Ray 137 KYC/AML 81, 87 Larimer, Danny 98 Ledger Labs Inc 86 Lestak, Robert 76 Levine, Matt 104, 117, 141 Li, Xiaolai 99 libertarianism 17 Liberty Reserve 18, 72 Lightning Network 28, 70 Litecoin 32, 92 LocalBitcoins 32, 81, 93 log.txt 51 London Review of Books 64 Lubin, Joseph 136 LulzSec 62 M-Pesa 29 MacGregor, Robert 63 Mackay, Charles 35, 141 Madoff, Bernie 38 Magic: The Gathering Online Exchange 45 MagicalTux 45 Making Blockchain Ready for Business 113 Malmi, Martti 35, 45 margin trading 42, 83 Markus bot 82 Mason, Nick 132 Mastercard 36 Masters, Blythe 122 Matonis, Jon 66 Matthews, Stefan 63 May, Tim 19 McCaleb, Jed 45 Meharry, Mark 125 Memory Dealers 37 mempool 70 Merkle tree 13, 112 micropayment 26 Microsoft 95, 107, 122 miner 13 mining 14, 55 Mintpal 93 Mises, Ludwig von 23, 49 mixer 26, 84 MMM 82 Mochizuki, Shinichi 59 Monero 72, 74 MoneyPak 73 Moolah 93 Mozilla 76 MP3 127 Mr.


pages: 960 words: 140,978

Android Cookbook by Ian F. Darwin

crowdsourcing, Debian, en.wikipedia.org, Firefox, full text search, openstreetmap, QR code, social software, web application

HTML using the RGraph library <html> <head> <title>RGraph: HTML5 canvas graph library - pie chart</title> <script src="RGraph/libraries/RGraph.common.core.js" ></script> <script src="RGraph/libraries/RGraph.common.annotate.js" ></script> <script src="RGraph/libraries/RGraph.common.context.js" ></script> <script src="RGraph/libraries/RGraph.common.tooltips.js" ></script> <script src="RGraph/libraries/RGraph.common.zoom.js" ></script> <script src="RGraph/libraries/RGraph.common.resizing.js" ></script> <script src="RGraph/libraries/RGraph.pie.js" ></script> <script> window.onload = function () { /** * These are not angles - these are values. * The appropriate angles are calculated */ var pie1 = new RGraph.Pie('pie1', [41,37,16,3,3]); // Create the pie object pie1.Set('chart.labels', ['MSIE 7 (41%)', 'MSIE 6 (37%)', 'Firefox (16%)', 'Safari (3%)', 'Other (3%)']); pie1.Set('chart.gutter', 30); pie1.Set('chart.title', "Browsers (tooltips, context, zoom)"); pie1.Set('chart.shadow', false); pie1.Set('chart.tooltips.effect', 'contract'); pie1.Set('chart.tooltips', [ 'Internet Explorer 7 (41%)', 'Internet Explorer 6 (37%)', 'Mozilla Firefox (16%)', 'Apple Safari (3%)', 'Other (3%)' ] ); pie1.Set('chart.highlight.style', '3d'); // 2d or 3d; defaults to 3d anyway if (!RGraph.isIE8()) { pie1.Set('chart.zoom.hdir', 'center'); pie1.Set('chart.zoom.vdir', 'up'); pie1.Set('chart.labels.sticks', true); pie1.Set('chart.labels.sticks.color', '#aaa'); pie1.Set('chart.contextmenu', [['Zoom in', RGraph.Zoom]]); } pie1.Set('chart.linewidth', 5); pie1.Set('chart.labels.sticks', true); pie1.Set('chart.strokestyle', 'white'); pie1.Draw(); var pie2 = new RGraph.Pie('pie2', [2,29,45,17,7]); // Create the pie object pie2.Set('chart.gutter', 45); pie2.Set('chart.title', "Some data (context, annotatable)"); pie2.Set('chart.linewidth', 1); pie2.Set('chart.strokestyle', '#333'); pie2.Set('chart.shadow', true); pie2.Set('chart.shadow.blur', 3); pie2.Set('chart.shadow.offsetx', 3); pie2.Set('chart.shadow.offsety', 3); pie2.Set('chart.shadow.color', 'rgba(0,0,0,0.5)'); pie2.Set('chart.colors', ['red', 'pink', '#6f6', 'blue', 'yellow']); pie2.Set('chart.contextmenu', [['Clear', function () {RGraph.Clear(pie2.canvas); pie2.Draw();}]]); pie2.Set('chart.key', ['John (2%)', 'Richard (29%)', 'Fred (45%)', 'Brian (17%)', 'Peter (7%)']); pie2.Set('chart.key.background', 'white'); pie2.Set('chart.key.shadow', true); pie2.Set('chart.annotatable', true); pie2.Set('chart.align', 'left'); pie2.Draw(); } </script> </head> <body> <div style="text-align: center"> <canvas id="pie1" width="420" height="300">[No canvas support]</canvas> <canvas id="pie2" width="440" height="300">[No canvas support]</canvas> </div> </body> </html> Figure 6-21.

A cup of java You can convert the image to an icon for a coffee ordering/coffee break timer/coffee break game or whatever coffee-related app is currently in the pipeline. Those who do not want to follow the tutorial can obtain the image from http://openclipart.org, a great source (more than 33,000) of free images (see Figure 6-7). Search for “coffee” and you will see various coffee-related images, including the one shown in Figure 6-6, uploaded by this recipe’s author. Click on the image, select the View SVG button, and use the browser’s File→Save Page As (Firefox) or File→Save As (Internet Explorer) menu. Figure 6-7. Searching for the perfect cup The four required icon sizes are generated from the image using the Inkscape Export Bitmap option. The image is opened and correctly proportioned for the export. This can be done for any image designed or opened in Inkscape. Remember that images should not be overly detailed or have too many colors (detail is reduced during resizing), and that they should try to fill (or fit) a square area.

For the Hello, World app I used the search term earth (see Figure 6-15). Figure 6-15. Clip art search results I chose the graphic titled “A simple globe” as the basis for the icon from the second page of search results. Click on the graphic to bring up its details. You can save the graphic to the local machine by clicking on it (or click on the View SVG button) and using the browser’s File menu. In Firefox, select Save Page As and select its location. In Internet Explorer, select “Save as…”; alternatively, both browsers support Ctrl-S. This will save the file as a vector file, which, as we discussed earlier, is not a good format for an icon. Fortunately, the image’s Open Clip Art page also has an option to obtain the file as a PNG file. Android icons need to be provided in four different sizes so that Android can display the best possible icon for the device’s screen density.


pages: 629 words: 142,393

The Future of the Internet: And How to Stop It by Jonathan Zittrain

A Declaration of the Independence of Cyberspace, Amazon Mechanical Turk, Andy Kessler, barriers to entry, book scanning, Brewster Kahle, Burning Man, c2.com, call centre, Cass Sunstein, citizen journalism, Clayton Christensen, clean water, commoditize, corporate governance, Daniel Kahneman / Amos Tversky, disruptive innovation, distributed generation, en.wikipedia.org, Firefox, game design, Hacker Ethic, Howard Rheingold, Hush-A-Phone, illegal immigration, index card, informal economy, Internet Archive, jimmy wales, John Markoff, license plate recognition, loose coupling, mail merge, national security letter, old-boy network, packet switching, peer-to-peer, post-materialism, pre–internet, price discrimination, profit maximization, Ralph Nader, RFC: Request For Comment, RFID, Richard Stallman, Richard Thaler, risk tolerance, Robert Bork, Robert X Cringely, SETI@home, Silicon Valley, Skype, slashdot, software patent, Steve Ballmer, Steve Jobs, Ted Nelson, Telecommunications Act of 1996, The Nature of the Firm, The Wisdom of Crowds, web application, wikimedia commons, zero-sum game

BEYOND BUGS: THE GENERATIVE DILEMMA The burgeoning gray zone of software explains why the most common responses to the security problem cannot solve it. Many technologically savvy people think that bad code is simply a Microsoft Windows issue. They believe that the Windows OS and the Internet Explorer browser are particularly poorly designed, and that “better” counterparts (Linux and Mac OS, or the Firefox and Opera browsers) can help protect a user. This is not much added protection. Not only do these alternative OSes and browsers have their own vulnerabilities, but the fundamental problem is that the point of a PC—regardless of its OS—is that its users can easily reconfigure it to run new software from anywhere. When users make poor decisions about what new software to run, the results can be devastating to their machines and, if they are connected to the Internet, to countless others’ machines as well.

The principles and factual assumptions that animate network neutrality— that the network has been operated in a particular socially beneficial way and that, especially in the absence of effective competition, it should stay that way—can also apply to Internet services that solicit mash-ups from third-party programmers described in Chapter Five, like Google Maps or Facebook, while makers of pure tethered appliances such as TiVo may do as they please. Those who offer open APIs on the Net in an attempt to harness the generative cycle ought to remain application-neutral after their efforts have succeeded, so all those who have built on top of their interfaces can continue to do so on equal terms. If Microsoft retroactively changed Windows to prevent WordPerfect or Firefox from running, it would answer under the antitrust laws and perhaps also in tort for intentional interference with the relationship between the independent software makers and their consumers.39 Similarly, providers of open APIs to their services can be required to commit to neutral offerings of them, at least when they have reached a position of market dominance for that particular service. Skeptics may object that these relations can be governed by market forces, and if an open API is advertised as contingent, then those who build on it are on notice and can choose to ignore the invitation if they do not like the prospect that it can be withdrawn at any moment.

See Netscape Public License: Version 1.0, http://www.mozilla.org/MPL/NPL-1.0.html (last visited May 16, 2007); see also NETSCAPE, NETSCAPE COMMUNICATOR OPEN SOURCE CODE WHITE PAPER (2000), available at http://wp.netscape.com/ browsers/future/whitepaper.html. This process marked the beginning of the Mozilla open source project. Today, the commercial imperative no longer exists; however, one of the most common Internet browsers, Mozilla Firefox, and a leading e-mail client, Mozilla Thunderbird, have their genesis in this process. Another example is OpenOfEce.org, a set of freely available Microsoft Office—style applications, which is based on proprietary code released by its owners, Sun. Users continue to develop OpenOfEce.org, which is freely available, while Sun markets the “StarOffice Office Suite,” a “professional office productivity solution based on OpenOfEce.org that provides enterprise value-add components including administration tools, commercial quality spellchecker and relational database.”


pages: 459 words: 103,153

Adapt: Why Success Always Starts With Failure by Tim Harford

Andrew Wiles, banking crisis, Basel III, Berlin Wall, Bernie Madoff, Black Swan, car-free, carbon footprint, Cass Sunstein, charter city, Clayton Christensen, clean water, cloud computing, cognitive dissonance, complexity theory, corporate governance, correlation does not imply causation, creative destruction, credit crunch, Credit Default Swap, crowdsourcing, cuban missile crisis, Daniel Kahneman / Amos Tversky, Dava Sobel, Deep Water Horizon, Deng Xiaoping, disruptive innovation, double entry bookkeeping, Edmond Halley, en.wikipedia.org, Erik Brynjolfsson, experimental subject, Fall of the Berlin Wall, Fermat's Last Theorem, Firefox, food miles, Gerolamo Cardano, global supply chain, Intergovernmental Panel on Climate Change (IPCC), Isaac Newton, Jane Jacobs, Jarndyce and Jarndyce, Jarndyce and Jarndyce, John Harrison: Longitude, knowledge worker, loose coupling, Martin Wolf, mass immigration, Menlo Park, Mikhail Gorbachev, mutually assured destruction, Netflix Prize, New Urbanism, Nick Leeson, PageRank, Piper Alpha, profit motive, Richard Florida, Richard Thaler, rolodex, Shenzhen was a fishing village, Silicon Valley, Silicon Valley startup, South China Sea, special economic zone, spectrum auction, Steve Jobs, supply-chain management, the market place, The Wisdom of Crowds, too big to fail, trade route, Tyler Cowen: Great Stagnation, web application, X Prize, zero-sum game

These are lessons that some engineers – both petroleum engineers and financial engineers – seem to have to learn again and again. Seven The adapti ve organisation ‘One doesn’t have to be a Marxist to be awed by the scale and success of early-20th-century efforts to transform strong-willed human beings into docile employees.’ – Gary Hamel ‘Your first try will be wrong. Budget and design for it.’ – Aza Raskin, designer at Firefox 1 Adapting as we go along When John Endler first studied guppies in the streams of Venezuela and Trinidad in the 1970s, he noticed an intriguing pattern: guppies in the pools at the bottom of waterfalls tended to be rather drab, while those in pools further upsream were eye-catchingly gaudy. Endler suspected the likely cause of the difference: while guppies were able to swim upstream past the waterfalls, the voracious guppy-eating pike cichlid could not, so the upper pools were cichlid-free.

Peer monitoring is closely associated with the virtual world: it’s the fundamental building block of Google’s search algorithm (giving weight to how popular a site is with other sites), phenomena like eBay (which relies on buyers and sellers rating each other’s reliability) and Wikipedia (in which anyone can edit anyone else’s articles), and the open-source software movement which has delivered such successes as Firefox and Apache. But as Timpson shows, it’s applicable far behind the cutting edge of crowd-sourced technology. I witnessed a striking example of peer monitoring on my visit to the Hinkley B nuclear power station. I’d just received a briefing on Hinkley’s safety culture from Peter Higginson, an avuncular physicist from Shropshire who was responsible for the safety of Hinkley’s two massive advanced gas-cooled reactors.

., 260 Elizabeth House (Waterloo), 170–1, 172 Endler, John, 221–2, 223, 234, 239 Engineers Without Borders, 119 Enron, 197–8, 200, 208, 210 environmental issues: biofuels, 84, 173, 176; clean energy, 91, 94, 96, 245–6; corporations/companies and, 159, 161, 165, 170–1, 172–3; renewable energy technology, 84, 91, 96, 130, 168, 169–73, 179, 245; see also climate change Equity Funding Corporation, 212 Ernst and Young, 199 errors and mistakes, types of, 208–10; latent errors, 209–10, 215, 218, 220 European Bank for Reconstruction and Development (EBRD), 188 European Union, 169, 173 Evans, Martin, 100 evolutionary theory, 6, 12–13, 15–17, 174, 258; business world and, 14–17, 174–5, 233–4; Darwin and, 86; digital world and, 13–14, 259–60; economics and, 14–17, 174–5; Endler’s guppy experiments, 221–2, 223, 239; fitness landscapes, 14–15, 259; Leslie Orgel’s law, 174, 175, 176, 177, 178, 180; problem solving and, 14–15, 16; selective breeding and, 175–6 expertise, limits of, 6–8, 16, 17, 19, 66 extinction events, biological, 18–19 Exxon (formerly Jersey Standard), 9, 12, 188, 245 F-22 stealth fighter, 93 Facebook, 90, 91 failure: in business, 8–10, 11–12, 18–19, 36, 148–9, 224, 239–46; chasing of losses, 32–5, 253–4, 256; in complex and tightly coupled systems, 185–90, 191–2, 200, 201, 207–8, 219, 220; corporate extinctions, 18–19; denial and, 32, 34–5, 250–3, 255–6; disruptive technologies, 239–44, 245–6; of established industries, 8–10; government funding and, 148–9; hedonic editing and, 254; honest advice from others and, 256–7, 258, 259; learning from, 31–5, 78, 119, 250–1, 256–9, 261–2; modern computer industry and, 11–12, 239–42; as natural in market system, 10, 11, 12, 244, 245–6; niche markets and, 240–2; normal accident theory, 219; recognition of, 36, 224; reinterpreted as success, 254–5, 256; shifts in competitive landscape, 239–46; ‘Swiss cheese model’ of safety systems, 186–7, 190, 209, 218; types of error and mistake, 208–10; willingness to fail, 249–50, 261–2; of young industries, 10 Fearon, James, 137, Federal Aviation Administration, 210 Federal Reserve Bank, 193–4 feedback, 25, 26, 42, 178, 240; in bureaucratic hierarchies, 30–1; development and, 141–3; dictatorships’ immunity to, 27; Iraq war and, 43–5, 46, 57–8, 59–62; market system and, 141; praise sandwich, 254; public services and, 141; self-employment and, 258; yes-men and, 30 Feith, Douglas, 44, 45 Ferguson, Chris ‘Jesus’, 32 Fermi nuclear reactor (near Detroit), 187 Festinger, Leon, 251 financial crisis (from 2007), 5, 11, 25; AIG and, 189, 193–5, 215–16, 228; bankers’ bonuses, 198; banking system as complex and tightly coupled, 185, 186, 187–90, 200, 201, 207–8, 220; bond insurance business and, 189–90; collateralised debt obligations (CDOs), 190, 209; credit default swaps (CDSs), 187–9, 190, 194; derivatives deals and, 198, 220; faulty information systems and, 193–5; fees paid to administrators, 197; government bail-outs/guarantees, 202, 214, 223; Lehman Brothers and, 193, 194, 196–200, 204–5, 208, 215–16; ‘LMX spiral’ comparisons, 183–4, 189; Repo 105 accounting trick, 199 Financial Services Authority (FSA), 214 Firefox, 221, 230 Fleming, Alexander, 83 Food Preservation prize, 107, 108 Ford Motor Company, 46–7 fossil record, 18 Fourier, Joseph, 155 fraud, corporate, 208, 210, 212–13, 214 Friedel, Robert, 80 Frost, Robert, 260 A Funny Thing Happened on the Way to the Forum (musical), 248 Gage, Phineas, 21, 27 Galapagos Islands, 86, 87 Gale (US developer), 152 Galenson, David, 260 Galileo, 187 Galland, Adolf, 81 Gallipoli campaign (1915), 41–2 Galvin, Major General Jack, 62, 256 game theory, 138, 205 Gates, Bill, 110, 115 Gates, Robert, 59, 64, 78 Gates Foundation, 110 Geithner, Tim, 193–5, 196 GenArts, 13 General Electric, 9, 12, 95 Gilbert, Daniel, 255, 256 GlaxoSmithKline, 95 Glewwe, Paul, 127–8 Global Positioning System (GPS), 113 globalisation, 75 Google, 12, 15, 90, 91, 239, 245, 261; corporate strategy, 36, 231–4; Gmail, 233, 234, 241, 242; peer monitoring at, 229–30 Gore, Al, An Inconvenient Truth, 158 Göring, Hermann, 81 government and politics: climate change and, 157–8, 163, 169–74, 176, 180; development aid and, 118, 120, 143, 144, 148–9; financial crisis (from 2007) and, 193–5, 198–9, 202, 214, 215–16, 223; grandiosity and, 27–8; ideal hierarchies and, 46pos=00002pos=0000022558 >7, 49–50, 62–3, 78; innovation funding, 82, 88, 93, 97, 99–101, 102–3, 104, 113; lack of adaptability rewarded, 20; pilot schemes and, 29, 30; rigorous evaluation methods and, 29* Graham, Loren, 26 Grameen Bank, 116, 117 Greece, 147 Green, Donald, 29* greenhouse effect, 154–6 Gulf War, first, 44, 53, 65, 66, 67, 71; Battle of 73 Easting, 72–3, 74, 79 Gutenberg, Johannes, 10 Haldane, Andrew, 195, 258 Halifax (HBOS subsidiary), 211 Halley, Edmund, 105 Halliburton, 217 Hamel, Gary, 221, 226, 233, 234 Hanna, Rema, 135 Hannah, Leslie, 8–10, 18 Hanseatic League, 150 Harrison, John, 106–7, 108, 110, 111 Harvard University, 98–9, 185 Hastings, Reed, 108 Hausmann, Ricardo, 145 Hayek, Friedrich von, 1, 72, 74–5, 227 HBOS, 211, 213, 214 healthcare sector, US, 213–14 Heckler, Margaret, 90–1 Henry the Lion, 149, 150, 151–2, 153 Hewitt, Adrian, 169 Hidalgo, César, 144–7, 148 Higginson, Peter, 230 Hinkley Point B power station, 192–3, 230–1 Hitachi, 11 Hitler, Adolf, 41, 82, 83, 150 HIV-AIDS, 90–1, 96, 111, 113 Holland, John, 16, 103 Hong Kong, 150 Houston, Dame Fanny, 88–9, 114 Howard Hughes Medical Institute (HHMI), 101–3, 112 Hughes (computer company), 11 Humphreys, Macartan, 136, 137, 138–40 Hurricane aircraft, 82* IBM, 11, 90, 95–6 In Search of Excellence (Peters and Waterman, 1982), 8, 10 India, 135, 136, 143, 147, 169 individuals: adaptation and, 223–4, 248–62; climate change and, 158–63, 164, 165–6; experimentation and, 260–2; trial and error and, 31–5 Indonesia, 133–4, 142, 143 Innocentive, 109 innovation: corporations and, 17, 81–2, 87–9, 90, 93–4, 95–7, 108–11, 112, 114, 224–30, 232–4; costs/funding of, 90–4, 99–105; failure as price worth paying, 101–3, 104, 184, 215, 236; government funding, 82, 88, 93, 97, 99–101, 102–3, 104, 113; grants and, 108; in health field, 90–1, 96; large teams and specialisation, 91–4; market system and, 17, 95–7, 104; new technologies and, 89–90, 91, 94–5; parallel possibilities and, 86–9, 104; prize methodology, 106–11, 112, 113–14, 179, 222–3; randomistas and, 127–9, 132, 133, 135–40, 258; return on investment and, 83–4; skunk works model, 89, 91, 93, 152, 224, 242–3, 245; slowing down of, 90–5, 97; small steps and, 16, 24, 29, 36, 99, 103, 143, 149, 153, 224, 259–60; space tourism, 112–13, 114; specialisation and, 91–2; speculative leaps and, 16, 36, 91, 99–100, 103–4, 259–60; unpredictability and, 84–5 Intel, 11, 90, 95 International Christelijk Steunfonds (ICS), 127–9, 131 International Harvester, 9 International Rescue Committee (IRC), 137–8, 139 internet, 12, 15, 63, 90, 113, 144, 223, 233, 238, 241; randomised experiments and, 235–6, 237; see also Google Iraq war: al Anbar province, 56–7, 58, 64, 76–7; civil war (2006), 39–40; Commander’s Emergency Response Program (CERP), 77; counterinsurgency strategy, 43, 45, 55–6, 58, 60–1, 63–4, 65; decentralisation and, 76–8, 79; feedback and, 43–5, 46, 57–8, 59–62; FM 3–24 (counter-insurgency manual), 63; Forward Operating Bases (FOBs), 51–3, 57, 65; Haditha killings (19 November 2005), 37–9, 40, 42, 43, 52; new technologies and, 71, 72, 74, 78–9, 196; Samarra bombing (22 February 2006), 39; Tal Afar, 51, 52, 53–5, 61, 64, 74, 77, 79; trial and error and, 64–5, 66–7; US turnaround in, 35, 40, 46, 50–1, 53–6, 57–8, 59–61, 63–5, 78; US/allied incompetence and, 38, 39–40, 42–5, 46, 50, 64, 67, 79, 223; Vietnam parallels, 46 J&P Coats, 9 Jacobs, Jane, 87 James, Jonathan, 30 Jamet, Philippe, 192 Janis, Irving, 62 Japan, 11, 143, 176, 204, 208 Jay-Z, 119 Jo-Ann Fabrics, 235 Jobs, Steve, 19 Joel, Billy, 247–8, 249 Johnson, President Lyndon, 46, 47, 49–50, 60, 62, 64, 78 Jones, Benjamin F., 91–2 Joyce, James, 260 JP Morgan, 188 Kahn, Herman, 93 Kahneman, Daniel, 32, 253 Kantorovich, Leonid, 68–9, 76 Kaplan, Fred, 77 Karlan, Dean, 135 Kauffmann, Stuart, 16, 103 Kay, John, 206–7, 208, 215, 259 Keller, Sharon, 252 Kelly, Terri, 230 Kennedy, President John F., 41, 47, 62–3, 84, 113 Kenya, 127–9, 131 Kerry, John, 20 Keynes, John Maynard, 181 Kilcullen, David, 57, 60–1 Klemperer, Paul, 96, 205 Klinger, Bailey, 145 Kotkin, Stephen, 25 Kremer, Michael, 127–8, 129 Krepinevich, Andy, 45 Lanchester, John, 188 leaders: decision making and, 40–2; failure of feedback and, 30–1, 62; grandiosity and, 27–8; ignoring of failure, 36; mistakes by, 41–2, 56, 67; need to believe in, 5–6; new leader as solution, 59 Leamer, Ed, 132* Leeson, Nick, 184–5, 208 Lehman Brothers, 193, 194, 196–200, 204–5, 208, 215–16 Lenin Dam (Dnieper River), 24 Levine, John, 48–9 Levitt, Steven, 132–3 Liberia, 136–9 light bulbs, 162, 177 Lind, James, 122–3 Lindzen, Richard, 156 Livingstone, Ken, 169 Lloyd’s insurance, 183 Lloyds TSB, 214 Local Motors, 90 Lockheed, Skunk Works division, 89, 93, 224, 242 Lomas, Tony, 196, 197–200, 204, 205, 208, 219 Lomborg, Bjorn, 94 longitude problem, 105–7, 108 Lu Hong, 49 Lübeck, 149–50, 151–2, 153 Luftwaffe, 81–2 MacFarland, Colonel Sean, 56–7, 64, 74, 76–7, 78 Mackay, General Andrew, 67–8, 74 Mackey, John, 227, 234 Madoff, Bernard, 208212–13 Magnitogorsk steel mills, 24–5, 26, 153 Malawi, 119 Mallaby, Sebastian, 150, 151 management gurus, 8, 233 Manhattan Project, 82, 84 Manso, Gustavo, 102 Mao Zedong, 11, 41 market system: competition, 10–11, 17, 19, 75, 95, 170, 239–46; ‘disciplined pluralism’, 259; evolutionary theory and, 17; failure in as natural, 10, 11, 12, 244, 245–6; feedback loops, 141; innovation and, 17, 95–7, 104; patents and, 95–7; trial and error, 20; validation and, 257–8 Markopolos, Harry, 212–13 Marmite, 124 Maskelyne, Nevil, 106 mathematics, 18–19, 83, 146, 247; financial crisis (from 2007) and, 209, 213; prizes, 110, 114 Mayer, Marissa, 232, 234 McDonald’s, 15, 28 McDougal, Michael, 252 McGrath, Michael, 252 McMaster, H.R.


pages: 465 words: 109,653

Free Ride by Robert Levine

A Declaration of the Independence of Cyberspace, Anne Wojcicki, book scanning, borderless world, Buckminster Fuller, citizen journalism, commoditize, correlation does not imply causation, creative destruction, crowdsourcing, death of newspapers, Edward Lloyd's coffeehouse, Electric Kool-Aid Acid Test, Firefox, future of journalism, Googley, Hacker Ethic, informal economy, Jaron Lanier, Joi Ito, Julian Assange, Justin.tv, Kevin Kelly, linear programming, Marc Andreessen, Mitch Kapor, moral panic, offshore financial centre, pets.com, publish or perish, race to the bottom, Saturday Night Live, Silicon Valley, Silicon Valley startup, Skype, spectrum auction, Steve Jobs, Steven Levy, Stewart Brand, subscription business, Telecommunications Act of 1996, Whole Earth Catalog, WikiLeaks

“And we’re going to get paid properly for it, or else we’re not going to do it.”30 Some technology pundits suggested the networks were being unreasonable, since—from a technology standpoint—Google TV worked much like any other browser. Since networks made video freely available for Firefox, shouldn’t the same rules apply to Google TV? In October 2010, TechCrunch dismissed their “various timeworn concerns such as lack of a viable business model.”31 Oh, that again. There’s also an important difference between Firefox and Google TV: the latter will presumably sell advertising. So far, Google hasn’t said much about how it plans to make money on Google TV. But the company gets most of its revenue from running ads against search queries, and there’s no reason that wouldn’t work on a screen that happens to sit in front of a couch instead of on top of a desk.

Safra Foundation Center for Ethics Eircom, 9.1, 9.2 Eisner, Michael Eldred, Eric, 3.1, 3.2 Electronic Frontier Foundation (EFF), itr.1, 1.1, 2.1, 3.1, 3.2, 9.1, 9.2, 9.3, 10.1, 10.2, 10.3, 10.4 electronics industry, 1.1, 1.2, 1.3, 2.1, 7.1 e-mail, 1.1, 2.1, 3.1, 3.2, 3.3, 4.1, 8.1, 10.1 EMI Music Group, itr.1, 2.1, 2.2, 2.3, 2.4 Eminem, 2.1, 10.1 Espinel, Victoria, 10.1, 10.2 ESPN, 5.1, 5.2, 5.3 Europeana European Commission, 8.1, 8.2, 8.3, 8.4, 8.5, 10.1 European Parliament, 8.1, 8.2 European Union (EU), 2.1, 8.1, 8.2, 8.3, 9.1, 9.2 Facebook, 3.1, 4.1, 6.1, 7.1, 10.1 fair use, 1.1, 3.1, 3.2, 3.3, 3.4, 6.1, 6.2, 8.1, 9.1, 10.1, 10.2 Fair Use Project Fanning, John Fanning, Shawn, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 Fast Track Federal Communications Commission (FCC), 5.1, 5.2, 10.1, 10.2 Ferrara, Geri file-sharing services, itr.1, itr.2, itr.3, itr.4, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 5.1, 5.2, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4, 8.5, 9.1, 9.2, 10.1, 10.2, 10.3, 10.4, 10.5 film industry, itr.1, itr.2, itr.3, itr.4, 1.1, 1.2, 1.3, 1.4, 1.5, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 6.1, 6.2, 7.1, 8.1, 8.2, 9.1, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7 filtering technology, 3.1, 7.1, 10.1, 10.2 financial crisis (2008), 4.1, 4.2, 4.3 Financial Interest and Syndication Rules (“fin-syn”) Financial Times, itr.1, 4.1, 4.2 Firefox First Amendment, 3.1, 3.2, 3.3, 8.1, 10.1 Fisher, William W. “Terry,” III, 9.1, 9.2, 9.3 Fitzgerald, Patricia flyonthewall.com Fortune Fox Entertainment Group, 4.1, 5.1, 7.1 Fox News, 4.1, 5.1, 5.2, 5.3, 5.4, 9.1 France, 1.1, 3.1, 8.1, 8.2, 8.3, 9.1, 9.2, 9.3 Frankfurt Book Fair, 8.1, 8.2 Franklin, Aretha, 2.1, 7.1 Free (Anderson) Free Culture (Lessig), 3.1, 3.2 Freedom of Information Act, 3.1, 3.2 “free-riding” free speech, itr.1, 1.1, 1.2, 1.3, 3.1, 3.2, 3.3, 3.4, 3.5, 4.1, 8.1, 8.2, 10.1, 10.2 Fricklas, Michael, 3.1, 3.2 Friedman, Roger Friends, itr.1, 7.1 Future of the Internet and How to Stop It, The (Zittrain) Galuten, Albhy Garland, Eric Geffen Records GEMA, 7.1, 9.1 German National Library Germany, 6.1, 7.1, 7.2, 7.3, 8.1, 8.2, 8.3, 9.1 Get a Grip GigaOM, itr.1, 5.1 Ginsburg, Ruth Bader Global Repertoire Database Working Group Gnutella Godin, Seth Goldberg, Danny, 2.1, 2.2, 2.3, 3.1 Gomez, Jean-Jacques, 8.1, 8.2 Goodman, Peter Google, itr.1, itr.2, itr.3, itr.4, itr.5, 1.1, 3.1, 3.2, 3.3, 3.4, 3.5, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 5.1, 5.2, 5.3, 6.1, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 9.1, 9.2, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6 Google Books settlement, 6.1, 8.1, 8.2, 10.1, 10.2 Googled (Auletta) Google TV, 5.1, 5.2, 5.3, 5.4, 5.5, 7.1, 10.1, 10.2, 10.3 Google Video Gore, Al, itr.1, 1.1, 1.2 Government Accountability Office, U.S.


pages: 696 words: 111,976

SQL Hacks by Andrew Cumming, Gordon Russell

bioinformatics, business intelligence, business process, database schema, en.wikipedia.org, Erdős number, Firefox, full text search, Hacker Ethic, Paul Erdős, Stewart Brand, web application

A user could save your form page on her desktop. She could then edit her version of your page and alter or disable the JavaScript and field size limits. Also beware of hidden variables and cookies. Under normal circumstances, your scripts control these values, but it is not at all difficult for someone to make up her own values. An external user can view all of the hidden variables and cookies associated with a web page from Firefox, for instance. Look in ToolsPage InfoForms for the variables, including hidden variables, as shown in Figure 6-18. Look in ToolsOptionsPrivacyCookiesView Cookies for the cookies, as shown in Figure 6-19. Figure 6-18. Listing variables, including hidden variables Figure 6-19. Listing cookies associated with a page 6.8.7. Exploits Using Hidden Variables and Cookies An SQL injection attack based on hidden variables is not any more difficult than one using visible components, such as textboxes or a password.

mysql_connect('localhost','scott','tiger') or die(mysql_error( )); mysql_select_db('scott') or die(mysql_error( )); $query = " SELECT DISTINCT 'No preference' AS colorName, NULL UNION SELECT colorName, colorName FROM colorTable ORDER BY 2 "; $cursor = mysql_query($query) or die(mysql_error( )); echo "<select name='menu_name'>"; while ($line = mysql_fetch_array($cursor,MYSQL_ASSOC)) { echo "<option>" .$line{'colorName'} . "</option>\n"; } echo "</select>\n"; mysql_close( ); ?> Figure 8-8 shows what it looks like in Firefox. Figure 8-8. HTML pop-up from a table Chapter 9. Locking and Performance In applications requiring high query throughput, high concurrency rates, and/or large result sets, you need to ensure good database design. However, systems with good database design can still suffer from performance problems. Before you spend money on hardware architecture improvements you should look at your approach to queries, and how queries and result sets are passed between applications and database systems.

VALUES statement CONNECT BY clause CONVERT function (SQL Server) cookies copy of the data (outdated), returned for transaction copying tables SQL92 standard and correlated derived table correlated subquery COS function COUNT function disaggregating result counting with a condition covering index CREATE command CREATE script, storing for tables CROSS JOINs 2nd integers table orders with postage rules crossword puzzle, solving using SQL csc.exe (C# compiler) CTR (click-through ratio) current date current timestamp current username CURRENT_DATE CURRENT_TIMESTAMP 2nd 3rd CURRENT_USER information cursor obtaining using for complicated UPDATEs Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] Data Definition Language (DDL) database connections database systems dates day-of-the-week functions differences in handling executing functions moving databases between potential problems SQL conventions version number databases specifying with command-line switch DATE type column name (whn) DATEADD function (SQL Server) 2nd 3rd 4th DATEDIFF function (SQL Server) DatePart function (Access) DATEPART function (SQL Server) 2nd 3rd dates 2nd 3rd Access converting strings to MySQL Oracle converting to strings SQL Server current date data for consecutive dates, generating database functions for date literals in SQL Server finding floating calendar dates last Thursday of the month second Tuesday of the month generating a calendar generating sequence with integers table keys using, table comparisons and quarterly reports, generating range of dates for period of days up to a year reducing precision in report data custom ranges of any size reporting on any date criteria current month monthly totals year-to-date totals SQL Server uncovering trends in data modular arithmetic DATETIME datatype 2nd day-of-the-week functions DAYOFWEEK function (MySQL) DB2 command-line utility GROUPING SETS clause WITH ROLLUP clause db2batch utility DB_File Perl module DBI interface (Perl) BLOBs, creating and retrieving data from DBMS_CRYPTO library (Oracle) DDL (Data Definition Language) decision tables, building prioritized DELETE triggers denormalization denormalizing data deploying applications CREATE script, storing for each table DROP avoiding constraints namespace management portability derived tables aliases converting to VIEWs correlated deterministic hashes diff command (Unix) differences between tables, finding directory structure dirty reads disk space, managing large data tables temporary space division avoiding division by zero DNS cache (Webalizer) DROP TABLE command avoiding constraints testing if table exists before executing Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] easypass tool email addresses as usernames ENGINE=InnoDB epoch time Erdös numbers Excel importing directly from databases for graphical reports pivot table, filling in missing values with SQL using to preprocess SQL exclusive matches exp and imp utilities exporting table definitions Access MySQL PostgreSQL 2nd problems with SQL Server Express edition (SQL Server) EXTRACT function 2nd 3rd PostgreSQL, day-of-the-week Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] FALSE and TRUE values, Access field size limits (HTML) FIFO queuing in database files image storing data adding/removing files changing existing files too many files filtering in JOIN conditions on indexed columns rows and columns find command Firefox HTML pop-up from a table viewing hidden variables and cookies fiscal year to date, reporting floating calendar dates, finding last Thursday of the month second Tuesday of the month FLOOR function 2nd rounding numbers FOR EACH ROW construct foreign key reference foreign keys email-based username family tree hierarchy Form Wizard (Access) FROM clause dropping from SELECT statement SELECT statement, using other SELECT statements FTP, anonymous sites FULL OUTER JOINs 2nd FULLTEXT pattern match (MySQL) functions aggregating day-of-the-week executing in the database nonstandard, problems switching database platforms static Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] GETDATE( ) function (SQL Server) globally unique identifier (GUID) for transactions GO instructions (SQL Server) 2nd GPS locations, calculating distance between GRANT and REVOKE commands graphing survey results SVG pie chart created directly from SQL vendor-specific XML features GREATEST function 2nd GROUP BY statement, choosing any three of five GROUPING SETS clause (Oracle) GUID (globally unique identifier) for transactions gzip compression Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] hash directory structure hashing algorithms hashing passwords hidden variables SQL injection attacks based on history tables Oracle PostgreSQL processing SQL Server HTML fields, size limits on hung transactions Index [SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] identifiers, unique for updates branch transactions central server update duplicate batches userid IDENTITY column (SQL Server) IFNULL function (MySQL) IIS (Internet Information Services) web log format, controlling 2nd IMAGE datatype (SQL Server) 2nd image files images storing in database using BLOBs storing in files imp utility implicit COMMITs importing external data importing SQL file into Access into DB2 into MySQL, using command-line utility into Oracle, using sqlplus into PostgreSQL into SQL Server importing table definitions problems with SQL Server IN BOOLEAN MODE text-searching (MySQL) inconsistent records, cleaning normalizing the data indexes filtering on indexed columns FULLTEXT infrequently changing values, tracking finding current price finding price on specified date listing all prices for specified date recording price changes INNER JOINs JOIN chain example changing to OUTER JOINs inner joins InnoDB INSERT ...


pages: 48 words: 10,481

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

don't repeat yourself, 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.


pages: 230 words: 61,702

The Internet of Us: Knowing More and Understanding Less in the Age of Big Data by Michael P. Lynch

Affordable Care Act / Obamacare, Amazon Mechanical Turk, big data - Walmart - Pop Tarts, bitcoin, Cass Sunstein, Claude Shannon: information theory, crowdsourcing, Edward Snowden, Firefox, Google Glasses, hive mind, income inequality, Internet of things, John von Neumann, meta analysis, meta-analysis, Nate Silver, new economy, Panopticon Jeremy Bentham, patient HM, prediction markets, RFID, sharing economy, Steve Jobs, Steven Levy, the scientific method, The Wisdom of Crowds, Thomas Kuhn: the structure of scientific revolutions, WikiLeaks

While billions of people continue to have no access to it, millions have immediate access to the sort of information they wouldn’t have had just a decade ago. In short: while it is far from ubiquitous, “more information to more people” is one obvious way that the Internet is making knowledge—or its acquisition—“more democratic.” The Internet is also democratizing knowledge by making its production more inclusive. One common example here is open source software like Mozilla’s Firefox Web browser. When security vulnerabilities or bugs arise in Firefox software, a diverse and widespread community of volunteers works on fixes and plug-ins. Open source software operates similarly to an online co-op. It is software by the people, for the people. Epistemic inclusivity is also a by-product of the growing number of open access research sharing sites such as Academia.edu. Founded in 2008, Academia.edu allows its millions of users (I’m one) a platform upon which to share and comment on one another’s research.


pages: 292 words: 66,588

Learning Vue.js 2: Learn How to Build Amazing and Complex Reactive Web Applications Easily With Vue.js by Olga Filipova

Amazon Web Services, continuous integration, create, read, update, delete, en.wikipedia.org, Firefox, Google Chrome, MVC pattern, pull request, side project, single page application, Skype, source of truth, web application

When this JAR file is executed, it connects to the specified browser, opens the API, and waits for the commands to be performed on the browser. The commands sent to the Selenium server can be performed in tons of different ways and languages. There are a lot of existing implementations and frameworks that allow you to call selenium commands with couple lines of code: You can use the native Selenium's framework for Java ( http://seleniumhq.github.io/selenium/docs/api/java/ ) You can use the Firefox plugin for browsers ( https://addons.mozilla.org/en-us/firefox/addon/selenium-ide/ ) You can use Selenide, which is yet another implementation for Java but a lot easier to use than Selenium's framework ( http://selenide.org/ ) If you are an AngularJS developer, you can use Protractor, which is a very nice e2e test framework for AngularJS applications that also uses the Selenium webdriver ( http://www.protractortest.org/ ) In our case, we will use Nightwatch, which is a nice and very easy-to-use testing framework to call Selenium's commands using JavaScript.


pages: 210 words: 63,879

Cold Hands by John J. Niven

centre right, Firefox, hiring and firing, Mason jar, Maui Hawaii

I looked up from my desk, catching myself mid-thought, suddenly aware of how much I had been thinking about childhood, dwelling on specific moments and people, rather than in the general way we all think about childhood all the time – it flows through us unceasingly, like blood. Why had I suddenly started doing this? The answer came quickly: because you found the dog, ripped up like it’d been vivisected. Because violence came calling, didn’t it? And, quite before I knew what I was doing, I had clicked on Firefox and was typing his name into Google. I read down, expecting nothing. He was not, after all, a famous man; he’d be nearly seventy too, and unlikely to be one of the search results I was looking at now: Follow PCardew on Twitter . . . Paul Cardew is on Facebook . . . Paul Cardew, President of Virginia Loan and Savings . . . Share Spotify playlists with Paul Cardew using . . . And then, right there at the bottom, the second to last result on the first page, were the words:‘Rutherglen man dies in house fire’ and a link to Glasgow’s Evening Times website.

Back at the house I remembered I had a saccharine romcom to review for the following week: two big teen stars in what looked like a Jane Austen rewrite with text messaging and iPods. I lay on the sofa for a long time, sipping tea and tapping the DVD against my knee, until I wandered down the hall to my office and stood over the desk, my finger tracing over the smooth plastic pad of the laptop, the cursor hovering briefly over the icon for Mozilla Firefox – that flaming orange-and-white beast encircling the globe, the pathway to Google, the mortal enemy of the stay-at-home writer – before moving along the toolbar and hovering over the Word icon. Fuck it. The review could wait. I slid the cursor further along and clicked on the foresty-green Final Draft logo and, with a heavy sigh, steeling myself, opened UNTITLED. The last scene I’d been working on had been my first-act climax (falling around page 30 on a 120-page script, all the manuals said), where Welles, the hero, is rooting around in the ruined basement of an office building and he accidentally stumbles upon an ancient laptop, something he has never seen before, that has somehow (and how indeed, I hadn’t quite cracked this part yet) retained enough power to be turned on.


pages: 349 words: 114,038

Culture & Empire: Digital Revolution by Pieter Hintjens

4chan, airport security, AltaVista, anti-communist, anti-pattern, barriers to entry, Bill Duvall, bitcoin, blockchain, business climate, business intelligence, business process, Chelsea Manning, clean water, commoditize, 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, intangible asset, invisible hand, James Watt: steam engine, Jeff Rulifson, Julian Assange, Kickstarter, M-Pesa, mass immigration, mass incarceration, mega-rich, MITM: man-in-the-middle, mutually assured destruction, Naomi Klein, national security letter, Nelson Mandela, 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 Stallman, Ross Ulbricht, Satoshi Nakamoto, security theater, selection bias, 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, twin studies, union organizing, wealth creators, web application, WikiLeaks, Y2K, zero day, Zipf's Law

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. Measurable Success It's all very well to try to turn conflict into competition.


pages: 378 words: 67,804

Learning Android by Marko Gargenta

create, read, update, delete, database schema, Firefox, loose coupling, slashdot, web application

For example, your activity could send an intent saying it simply wants someone to open up a web page. In that case, any application that is capable of opening a web page could “compete” to complete this action. When you have competing applications, the system will ask you which one you’d like to use to complete a given action. You can also set an app as the default. This mechanism works very similarly to your desktop environment, for example, when you downloaded Firefox or Chrome to replace your default Internet Explorer or Safari web browsers. This type of messaging allows the user to replace any app on the system with a custom one. For example, you might want to download a different SMS application or another browser to replace your existing ones. Figure 4-2 shows how intents may be used to “jump” between various activities, in the same application or in another app altogether.

-- --> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="1" android:id="@+id/textUser" android:text="Slashdot" android:textStyle="bold" /> <!-- --> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="1" android:gravity="right" android:id="@+id/textCreatedAt" android:text="10 minutes ago" /> </LinearLayout> <!-- --> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/textText" android:text="Firefox comes to Android" /> </LinearLayout> The main layout for the entire row. It is vertical because our row consists of two lines. A layout that runs horizontally and represents the first line of data, namely the user and timestamp. The user who posted this update. The timestamp indicating when it was posted. It should be a relative time (e.g., 10 minutes ago). The actual status.


pages: 204 words: 67,922

Elsewhere, U.S.A: How We Got From the Company Man, Family Dinners, and the Affluent Society to the Home Office, BlackBerry Moms,and Economic Anxiety by Dalton Conley

assortative mating, call centre, clean water, commoditize, dematerialisation, demographic transition, Edward Glaeser, extreme commuting, feminist movement, financial independence, Firefox, Frank Levy and Richard Murnane: The New Division of Labor, Home mortgage interest deduction, income inequality, informal economy, Jane Jacobs, Joan Didion, John Maynard Keynes: Economic Possibilities for our Grandchildren, knowledge economy, knowledge worker, labor-force participation, late capitalism, low skilled workers, manufacturing employment, mass immigration, McMansion, mortgage tax deduction, new economy, off grid, oil shock, PageRank, Ponzi scheme, positional goods, post-industrial society, post-materialism, principal–agent problem, recommendation engine, Richard Florida, rolodex, Ronald Reagan, Silicon Valley, Skype, statistical model, The Death and Life of Great American Cities, The Great Moderation, The Wealth of Nations by Adam Smith, Thomas Malthus, Thorstein Veblen, transaction costs, women in the workforce, Yom Kippur War

Between dropping them off and reaching his office in the rapidly gentrifying West Thirties, twenty new messages have piled up in his BlackBerry. He makes a brief appearance at the loftlike office and then heads out to the local Starbucks with his laptop to work on a memo on viral media strategy before his meetings. He finds it hard to concentrate, however, since he can’t stop himself from toggling (alt-tab) over to his open-source Firefox browser to e-trade stocks in his self-managed retirement portfolio and search the real estate listings to see how much his neighbors are listing their apartment for. He has been obsessing about the value of his home lately. Maybe this is related to the fact that he happened to see his college friend’s tax return lying around the week before. He had been surprised that his buddy was pulling in $300K to his own $200—mostly from figures on lines 12 and 13: capital gains and business income.

Or maybe we just sneak off, excusing ourselves prematurely from the family “dinner” in order to write that report in the den—the same report we should have been working on all day when instead we were e-mailing. Whatever the reasons for our longer hours of paid (or unpaid) productive labor, the result is a blurring of the line between work and leisure. Does contributing an entry to Wikipedia or debugging Firefox count as work or leisure? Since we are not being paid for it and it’s not housework, it probably falls into the leisure category. (Although some economists argue that programmers, in particular, use open-source work to signal to potential employers how good they are.) And if we are on a fixed salary and take on extra work to “get ahead,” is that work? Or is it just another dressed-up form of leisure?


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, Marc Andreessen, 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, zero-sum game

Google went from nothing, no web browser at all, to best-of-breed in under two years. Meanwhile, Internet Explorer took longer than the entire development period of Chrome to go from version 7 to version 8. And by the time Internet Explorer 9 ships — even though it’s actually looking like Microsoft’s best, most competent technical upgrade of the browser yet — it will be completely outclassed at launch by both Firefox and Chrome. The Google Android project is another example. Android doesn’t have to be better than the iPhone (and it most definitely isn’t; it’s been mediocre at best until recent versions). They just need to be faster at improving. Google is pushing out Froyos and Gingerbreads and Honeycombs with incredible, breakneck speed. Yes, Apple has indisputably better taste — and an impeccably controlled experience.

The most vivid difference between Startup.com and Code Rush is that Netscape, despite all their other mistakes and missteps, didn’t just burn through millions of dollars for no discernable reason. They produced a meaningful legacy: Through Netscape Navigator, the original popularization of HTML and the internet itself. With the release of the Netscape source code on March 31st, 1998, the unlikely birth of the commercial open source movement. Eventually producing the first credible threat to Internet Explorer in the form of Mozilla Firefox 1.0 in 2004. Do you want money? Fame? Job security? Or do you want to change the world … eventually? Consider how many legendary hackers went on to brilliant careers from Netscape: Jamie Zawinski, Brendan Eich, Stuart Parmenter, Marc Andreessen. The lessons of Netscape live on, even though the company doesn’t. Code Rush is ultimately a meditation on the meaning of work as a programmer. As Startup.com and Code Rush illustrate, the hard part is figuring out why you are working all those long hours.


pages: 272 words: 64,626

Eat People: And Other Unapologetic Rules for Game-Changing Entrepreneurs by Andy Kessler

23andMe, Andy Kessler, bank run, barriers to entry, Berlin Wall, Bob Noyce, British Empire, business cycle, business process, California gold rush, carbon footprint, Cass Sunstein, cloud computing, collateralized debt obligation, collective bargaining, commoditize, computer age, creative destruction, disintermediation, Douglas Engelbart, Eugene Fama: efficient market hypothesis, fiat currency, Firefox, Fractional reserve banking, George Gilder, Gordon Gekko, greed is good, income inequality, invisible hand, James Watt: steam engine, Jeff Bezos, job automation, Joseph Schumpeter, Kickstarter, knowledge economy, knowledge worker, libertarian paternalism, low skilled workers, Mark Zuckerberg, McMansion, Netflix Prize, packet switching, personalized medicine, pets.com, prediction markets, pre–internet, profit motive, race to the bottom, Richard Thaler, risk tolerance, risk-adjusted returns, Silicon Valley, six sigma, Skype, social graph, Steve Jobs, The Wealth of Nations by Adam Smith, transcontinental railway, transfer pricing, wealth creators, Yogi Berra

The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.” In other words, there are a bunch of folks around the world who write and revise code, for free, for a software project that is open to contributions from anyone. Linux is an open-source operating system. Apache is open-source server software that spits out most Web pages. Firefox is an open-source browser. Successful open-source projects capture value from the project. The Mozilla Foundation cut a deal with Google to include a search toolbar and collects tens of millions in referral fees. In Sweden, Mårten Mickos tapped programmers around the globe to contribute code and help fix bugs in his MySQL open-source database application. Tom Sawyer again. Let others paint the picket fence.

See Market entrepreneurs; Political entrepreneurs EPI-LIT (entertainment and perishable information) Equality, myth of Equal opportunity Establishment, Alinsky on Exceptionalism and employee testing bans finding in colleges and intelligence and productivity of Vital Few FAB (Feature, Application, Business) Facebook Faggin, Federico Fama, Eugene Fannie Mae/Freddie Mac FarmVille Features, versus applications, businesses Federal Deposit Insurance Corporation (FDIC) Federal Reserve and interest rates and money supply roles of Ferguson, Andrew Ferriss, Tim Financial sector as Slimers as Sponges Firefox Flickr Ford, Henry Fox Broadcasting Fractional reserve banking Freedom Free Radicals accomplishments of defined historical examples of See also Rules for Free Radicals French Revolution Frick, Henry Clay Frick Museum Friedman, Tom Fulton, Robert Garrett, Jesse James Gates, Bill Generation X Generation Y Genes, personalized medicine Gesture recognition Gibbons v.


pages: 239 words: 64,812

Geek Sublime: The Beauty of Code, the Code of Beauty by Vikram Chandra

Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Apple II, barriers to entry, Berlin Wall, British Empire, business process, conceptual framework, create, read, update, delete, crowdsourcing, don't repeat yourself, Donald Knuth, East Village, European colonialism, finite state, Firefox, Flash crash, glass ceiling, Grace Hopper, haute couture, iterative process, Jaron Lanier, John von Neumann, land reform, London Whale, Norman Mailer, Paul Graham, pink-collar, revision control, Silicon Valley, Silicon Valley ideology, Skype, Steve Jobs, Steve Wozniak, supercomputer in your pocket, theory of mind, Therac-25, Turing machine, wikimedia commons, women in the workforce

Steve Jobs was famed not only for his success but also his aggressive rudeness; his erstwhile partner Woz describes him as a “real rugged bastard” who found it necessary to “put people down and make them feel demeaned.”42 The social ineptitude of the sandal-wearing, long-haired pioneers of the early days has been elevated to a virtue. Shouting at co-workers and employees, abrasive behavior, indifference to the feelings of others, all these constitute both a privilege earned by skill and a signifier of the programmer’s elite status. This is most true, paradoxically, in the open-source movement, within which volunteer programmers collaborate to produce programs (like Firefox and Linux) under licensing schemes that guarantee universal, free access. These volunteers must cooperate to produce viable programs; yet it is within open source that programmers most fiercely pledge allegiance to the legacy of the early neckbeards. And so Linus Torvalds, the “benevolent dictator” of Linux, dismissed the makers of a rival operating system as “a bunch of masturbating monkeys”; and so, Eric S.

Usually, you write several tests for each section of code, checking for correct behavior under varying conditions, and so the lines of test code can easily outnumber the lines of program code by orders of magnitude. The open-source database SQLite, at the time of this writing, has 1,177 times the amount of test code as it does program code.14 Most non-programmers have never heard of SQLite, but it is the most widely deployed database in the world.15 SQLite is a tiny program. It runs within your Firefox browser, storing your bookmarks; it is used widely within the Mac operating system; it runs within each copy of Skype; it runs on your smartphone, storing contacts and appointments. SQLite’s vast suite of tests is an attempt to prevent bugs from creeping into a program that has become an essential, foundational component of the working memory of humanity. Programmers work doggedly toward correctness, but the sheer size and complexity of software ensures that bugs lurk within.


pages: 496 words: 174,084

Masterminds of Programming: Conversations With the Creators of Major Programming Languages by Federico Biancuzzi, Shane Warden

Benevolent Dictator For Life (BDFL), business intelligence, business process, cellular automata, cloud computing, commoditize, complexity theory, conceptual framework, continuous integration, data acquisition, domain-specific language, Douglas Hofstadter, Fellow of the Royal Society, finite state, Firefox, follow your passion, Frank Gehry, general-purpose programming language, Guido van Rossum, HyperCard, information retrieval, iterative process, John von Neumann, Larry Wall, linear programming, loose coupling, Mars Rover, millennium bug, NP-complete, Paul Graham, performance metric, Perl 6, QWERTY keyboard, RAND corporation, randomized controlled trial, Renaissance Technologies, Ruby on Rails, Sapir-Whorf hypothesis, Silicon Valley, slashdot, software as a service, software patent, sorting algorithm, Steve Jobs, traveling salesman, Turing complete, type inference, Valgrind, Von Neumann architecture, web application

The beauty is that it doesn’t require new hardware, unlike Sci-Fi solutions proposed by others like virtual reality helmets or eye movement sensors, not to mention brainwave detectors. There’s a lot to do of course—for example, Firefox’s Preferences dialog has the dreadful look and feel of anything coming out of Microsoft, with at least two levels of tabs and many modal dialogs hidden in obscure places. How am I supposed to remember that in order to turn off JavaScript I have to go to the Content tab? Are Cookies under the Privacy tab or under Security? Maybe Firefox 4 can replace the Preferences dialog with a “smart” feature that lets you type keywords so that if I start typing “pass,” it will take me to the section to configure passwords. What do the lessons about the invention, further development, and adoption of your language say to people developing computer systems today and in the forseeable future?

Should application programmers adopt the “less is more” philosophy? How should they simplify the user interface to provide a shorter learning path? Guido: When it comes to graphical user interfaces, it seems there’s finally growing support for my “less is more” position. The Mozilla foundation has hired Aza Raskin, son of the late Jef Raskin (codesigner of the original Macintosh UI) as a UI designer. Firefox 3 has at least one example of a UI that offers a lot of power without requiring buttons, configuration, preferences or anything: the smart location bar watches what I type, compares it to things I’ve browsed to before, and makes useful suggestions. If I ignore the suggestions it will try to interpret what I type as a URL or, if that fails, as a Google query. Now that’s smart! And it replaces three or four pieces of functionality that would otherwise require separate buttons or menu items.

With Flash what we’re trying to do is both beef it up and make it robust enough so that at least you can get one language that’s platform-independent and will move from platform to platform without hitting you every time you turn around with different semantics. Charles: I totally agree. It is so frustrating that this many years later we’re still in an environment where someone says if you really want this to work you have to use Firefox. We should be way past that point by now! The whole point of the universality of the Web would be to not have those kind of distinctions, but we’re still living with them. It’s always fascinating to see how long it takes for certain pieces of historical antiquity to die away. The more you put them in the browsers you’ve codified them as eternal, and that’s stupid. Do you see this as a failure of the standards process we have today?


pages: 1,201 words: 233,519

Coders at Work by Peter Seibel

Ada Lovelace, bioinformatics, cloud computing, Conway's Game of Life, domain-specific language, don't repeat yourself, Donald Knuth, fault tolerance, Fermat's Last Theorem, Firefox, George Gilder, glass ceiling, Guido van Rossum, HyperCard, information retrieval, Larry Wall, loose coupling, Marc Andreessen, Menlo Park, Metcalfe's law, Perl 6, premature optimization, publish or perish, random walk, revision control, Richard Stallman, rolodex, Ruby on Rails, Saturday Night Live, side project, slashdot, speech recognition, the scientific method, Therac-25, Turing complete, Turing machine, Turing test, type inference, Valgrind, web application

Or on the internal code-review tool I'd be like, “Here is a review. What do you think?” They could just say, “Fuck no, that's totally the wrong fix.” Seibel: Do you still read code for fun, as opposed to reading it because you need to work with it? Fitzpatrick: Sometimes. I checked out Android source code for no real reason. The same with Chrome; when it went open source, I mirrored the repo and just looked around. I did the same thing with Firefox and Open Office. Some program you've been using and all of a sudden you have access and you might as well look. Seibel: Programs like that, the code base is pretty huge. When you look at something like that for fun, how deeply do you get into it? Fitzpatrick: Generally, I'll just pipe find into less and try to understand the directory structure. Then either something grabs my eye or I don't understand what something is.

Seibel: You use JSLint, presumably. Crockford: I do use JSLint. I use it a lot. I try to use it every time before I run a program, so if I've gone through and I've done some edits, I'll run it through JSLint first before I run it. Seibel: So you edit in your text editor, run JSLint on the program, and then run it in a browser. How about debugging? Crockford: It depends on the browser. If it's Firefox, then you use Firebug. If it's IE, then you use the Visual Studio debugger. They're both actually very good. We have surprisingly good debuggers in the browser. I've used frameworks in which there were inspectors built out of DOM elements that could then go into objects, and open them up, and inspect through that set of frames. But I found I really don't need that. Just a debugger is enough. Seibel: Do you ever step through code just as a way of checking it when you're not tracking down a specific bug?

Right now, the network does an extremely poor job of identity, does an extremely poor job of security, and those are a necessary component, I think, of building robust social systems. So that aspect of the Web is still deficient and maybe that's why it's so noisy still. Brendan Eich Creator of JavaScript, perhaps the most widely used and most reviled programming language on the modern Web, Brendan Eich is now CTO of the Mozilla Corporation, the subsidiary of the Mozilla Foundation responsible for continuing development of the Firefox browser. With an appreciation of both elegant theory and good pragmatic engineering, Eich spent the early days of his career hacking network and kernel code at Silicon Graphics and MicroUnity. After MicroUnity, he moved to Netscape, where he worked on the Netscape browser and, under intense time pressure, invented JavaScript. In 1998, along with Jamie Zawinski, he was one of the leaders of the effort to convince Netscape to open-source its browser, leading to the formation of mozilla.org, where he was chief architect.


pages: 226 words: 71,540

Epic Win for Anonymous: How 4chan's Army Conquered the Web by Cole Stryker

4chan, barriers to entry, Berlin Wall, Chelsea Manning, cognitive dissonance, Columbine, commoditize, creative destruction, crowdsourcing, Firefox, future of journalism, hive mind, informal economy, Internet Archive, Julian Assange, Kickstarter, Mark Zuckerberg, Marshall McLuhan, Mason jar, pre–internet, Silicon Valley, slashdot, social web, Stephen Hawking, Steve Jobs, Stewart Brand, technoutopianism, wage slave, We are Anonymous. We are Legion, Whole Earth Catalog, WikiLeaks

“Look at this wacky thing from the Internet,” we hear. “What a world.” Commercialization Only the biggest meme stars will ever see any money, whether it’s through corporate sponsorship or by selling meme-related merchandise. Microsoft hired Paul Vasquez, star of the Double Rainbow meme, to promote the Windows Live Photo Gallery software in a TV ad. Adah Bahner of Chocolate Rain fame shilled for Dr. Pepper, Firefox, Sony, Vizio, and more. Internet memes provide advertisers a roster of recognizable but reasonably priced spokespeople who are keen to translate their fifteen minutes of fame into some quick cash before their meme dies. Death Memes never truly die, but one could argue that it’s time to move on when your hopelessly unhip mom or dad asks “Hey, did you see that thing on YouTube about that guy who punched out another guy on the subway?”

Some journalists known for their criticism of the Tunisian government were targeted; in some cases their Facebook and Gmail accounts were hacked, and their blogs were shut down. Anonymous retaliated, successfully DDoSing eight websites, including those representing the Tunisian president, prime minister, the ministry of industry, the ministry of foreign affairs, and the stock exchange. Beyond the DDoSs, Anonymous created informational materials to guide dissidents on concealing their identities on the web. A few Anons developed a Firefox extension to protect Tunisians from phishing. Anonymous also participated in the revolution in Egypt. They helped mirror sites that had been censored by the Egyptian government, brought down President Hosni Mubarak’s website, and, in typical lulzy fashion, sent pizza deliveries to the country’s embassies. Go Go Go! Anonymous has grown beyond 4chan, to the point where the media no longer mentions 4chan in reports on Anonymous.


pages: 238 words: 73,824

Makers by Chris Anderson

3D printing, Airbnb, Any sufficiently advanced technology is indistinguishable from magic, Apple II, autonomous vehicles, barriers to entry, Buckminster Fuller, Build a better mousetrap, business process, commoditize, Computer Numeric Control, crowdsourcing, dark matter, David Ricardo: comparative advantage, death of newspapers, dematerialisation, Elon Musk, factory automation, Firefox, future of work, global supply chain, global village, IKEA effect, industrial robot, interchangeable parts, Internet of things, inventory management, James Hargreaves, James Watt: steam engine, Jeff Bezos, job automation, Joseph Schumpeter, Kickstarter, Lean Startup, manufacturing employment, Mark Zuckerberg, means of production, Menlo Park, Network effects, private space industry, profit maximization, QR code, race to the bottom, Richard Feynman, Ronald Coase, Rubik’s Cube, self-driving car, side project, Silicon Valley, Silicon Valley startup, Skype, slashdot, South of Market, San Francisco, spinning jenny, Startup school, stem cell, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, supply-chain management, The Nature of the Firm, The Wealth of Nations by Adam Smith, transaction costs, trickle-down economics, Whole Earth Catalog, X Prize, Y Combinator

And this time it’s not designed to train workers for low-end blue-collar jobs, but rather it’s funded by the government’s advanced manufacturing initiative aimed at creating a new generation of systems designers and production innovators. Meanwhile, the rise of “open hardware,” another part of what’s known as the Maker Movement, is now doing for physical goods what open source did for software. Just as online communities of programmers created everything from the Linux operating system that runs most of today’s websites to the Firefox Web browser, new communities of Makers are doing the same with electronics, scientific instrumentation, architecture, and even agricultural tools. There are now scores of multimillion-dollar open-hardware companies (including my own company, 3D Robotics8); some of them, such as the Arduino electronics development board, have sold more than a million units. Google, too, has joined the movement, releasing open-hardware electronics to connect to the hundreds of millions of phones and other devices that now run its Android mobile operating system.

It’s the difference between a hobby and a real, thriving, profitable business. It’s also worth bearing in mind that at this more bespoke end of the market, products can generally support a higher price. Customers are both keen and savvy: they are prepared to spend a bit more because they know that they are getting exactly what they want. It’s an attractive business model. Open design’s advantage Today we use the products of open software innovation every day: the Firefox Web browser, Android phones, the Linux Web servers that run most of the websites we go to, and countless other elements of the open-source software that the Internet is built on. Tomorrow the same may be true for hardware, too. I’ve driven in open-source cars (the Local Motors Rally Fighter, of which you’ll hear more later) and watched open-source planes fly. There are open-source rockets designed to reach space, as well as open-source submarines.


pages: 267 words: 78,857

Discardia: More Life, Less Stuff by Dinah Sanders

A. Roger Ekirch, Atul Gawande, big-box store, Boris Johnson, carbon footprint, clean water, clockwatching, cognitive bias, collaborative consumption, credit crunch, endowment effect, Firefox, game design, Inbox Zero, income per capita, index card, indoor plumbing, Internet Archive, Kevin Kelly, late fees, Marshall McLuhan, McMansion, Merlin Mann, post-work, side project, Silicon Valley, Stewart Brand

You will achieve more when working on multiple projects if you give them your full attention for set chunks of time than if you incessantly flit between them. The chunks don't need to be very large—even 15- to 30-minute laps can be hugely productive for many activities. Focus and don't give in to the “I'll just take a quick peek to see if there's new email” urges as you work. (If you need a little help with your willpower, try LeechBlock (a Firefox browser extension) to limit your work-time visiting of nonwork websites.) When you're creating or connecting, shut down other inputs. Turn off chat and message services when writing email or blog posts. Turn the TV off during conversation. Clean all the icons off your computer desktop that do not lead to the tasks you’re doing today. Group shortcuts together in a toolbar or dock and set your system to hide it when you aren’t using it.

Fortunately, unlike physical machines, software is easier to adapt. When you catch yourself swearing at your monitor, see if you can identify a pattern or problem to solve. Perhaps you need to find software that is a better fit for the way you think about this task; maybe you only need to adjust a setting to get the behavior in line with your instincts. This happened to me with iTunes on the Mac. I spend a great deal of my day in the Firefox web browser, and have reached the point where Command-T—the control to open a new tab—means “jump to where I can do the next thing I want to do.” In iTunes I was incessantly hitting that command when I wanted to jump to the currently playing song—to rate it differently or add a comment, for example. Unfortunately, that combination of keystrokes would launch a lovely, full-screen Visualizer lightshow in sync with my music, and I would swear first and then have to escape from it.


pages: 420 words: 79,867

Developing Backbone.js Applications by Addy Osmani

Airbnb, anti-pattern, create, read, update, delete, don't repeat yourself, Firefox, full text search, Google Chrome, Khan Academy, Kickstarter, loose coupling, MVC pattern, node package manager, pull request, Ruby on Rails, side project, single page application, web application

DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script> <script src="http://documentcloud.github.com/backbone/backbone-min.js"></script> <script> // Your code goes here </script> </body> </html> You can then save and run the file in your browser of choice, such as Chrome or Firefox. Alternatively, if you prefer working with an online code editor, jsFiddle and jsBin versions of this boilerplate are also available. Most examples can also be run directly from within the console in your browser’s developer tools, assuming you’ve loaded the boilerplate HTML page so that Backbone and its dependencies are available for use. For Chrome, you can open up the DevTools via the Chrome menu in the top right hand corner: select “Tools > Developer Tools” or alternatively use the Control + Shift + I shortcut on Windows/Linux or Command + Option + I on Mac.

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: 296 words: 78,631

Hello World: Being Human in the Age of Algorithms by Hannah Fry

23andMe, 3D printing, Air France Flight 447, Airbnb, airport security, augmented reality, autonomous vehicles, Brixton riot, chief data officer, computer vision, crowdsourcing, DARPA: Urban Challenge, Douglas Hofstadter, Elon Musk, Firefox, Google Chrome, Gödel, Escher, Bach, Ignaz Semmelweis: hand washing, John Markoff, Mark Zuckerberg, meta analysis, meta-analysis, pattern recognition, Peter Thiel, RAND corporation, ransomware, recommendation engine, ride hailing / ride sharing, selection bias, self-driving car, Shai Danziger, Silicon Valley, Silicon Valley startup, Snapchat, speech recognition, Stanislav Petrov, statistical model, Stephen Hawking, Steven Levy, Tesla Model S, The Wisdom of Crowds, Thomas Bayes, Watson beat the top human players on Jeopardy!, web of trust, William Langewiesche

For another, the identification of illegal practices and enforcement of regulations ­remains tricky in a world where most data analysis and transfer happens in the shadows. We’ll have to wait and see how this ­unfolds. Europeans are the lucky ones, but there are those pushing for regulation in America, too. The Federal Trade Commission published a report condemning the murky practices of data brokers back in 2014, and since then has been actively pushing for more consumer rights. Apple has now built ‘intelligent tracking prevention’ into the Safari browser. Firefox has done the same. Facebook is severing ties with its data brokers. Argentina and Brazil, South ­Korea and many more countries have all pushed through GDPR-like legislation. Europe might be ahead of the curve, but there is a global trend that is heading in the right direction. If data is the new gold, then we’ve been living in the Wild West. But I’m optimistic that – for many of us – the worst will soon be behind us.

‘ambiguous images 211n13’ 23andMe 108–9 profit 109 promises of anonymity 109 sale of data 109 volume of customers 110 52Metro 177 abnormalities 84, 87, 95 acute kidney injuries 104 Acxiom 31 Adele 193 advertising 33 online adverts 33–5 exploitative potential 35 inferences 35 personality traits and 40–1 political 39–43 targeted 41 AF447 (flight) 131–3, 137 Afigbo, Chukwuemeka 2 AI (artificial intelligence) 16–19 algorithms 58, 86 omnipotence 13 threat of 12 see also DeepMind AI Music 192 Air France 131–3 Airbnb, random forests 59 Airbus A330 132–3 algebra 8 algorithmic art 194 algorithmic regulating body 70 algorithms aversion 23 Alhambra 156 Alton Towers 20–1 ALVINN (Autonomous Land Vehicle In a Neural Network) 118–19 Alzheimer’s disease 90–1, 92 Amazon 178 recommendation engine 9 ambiguous images 211n13 American Civil Liberties Union (ACLU) 17 Ancestry.com 110 anchoring effect 73 Anthropometric Laboratory 107–8 antibiotics 111 AOL accounts 2 Apple 47 Face ID system 165–6 arithmetic 8 art 175–95 algorithms 184, 188–9 similarity 187 books 178 films 180–4 popularity 183–4 judging the aesthetic value of 184 machines and 194 meaning of 194 measuring beauty 184–5 music 176–80 piano experiment 188–90 popularity 177, 178, 179 quality 179, 180 quantifying 184–8 social proof 177–8, 179 artifacts, power of 1-2 artificial intelligence (AI) see AI (artificial intelligence) association algorithms 9 asthma 101–2 identifying warning signs 102 preventable deaths 102 Audi slow-moving traffic 136 traffic jam pilot 136 authority of algorithms 16, 198, 199, 201 misuse of 200 automation aircraft 131–3 hidden dangers 133–4 ironies of 133–7 reduction in human ability 134, 137 see also driverless cars Autonomous Emergency Braking system 139 autonomy 129, 130 full 127, 130, 134, 138 autopilot systems A330 132 driverless cars 134 pilot training 134 sloppy 137 Tesla 134, 135, 138 bail comparing algorithms to human judges 59–61 contrasting predictions 60 success of algorithms 60–1 high-risk scores 70 Bainbridge, Lisanne 133–4, 135, 138 balance 112 Banksy 147, 185 Baril, David 171–2 Barstow 113 Bartlett, Jamie 44 Barwell, Clive 145–7 Bayes’ theorem 121–4, 225n30 driverless cars 124 red ball experiment 123–4 simultaneous hypotheses 122–3 Bayes, Thomas 123–4 Bayesian inference 99 beauty 184–5 Beck, Andy 82, 95 Bell, Joshua 185–6 Berk, Richard 61–2, 64 bias of judges 70–1, 75 in machines 65–71 societal and cultural 71 biometric measurements 108 blind faith 14–16, 18 Bonin, Pierre-Cédric ‘company baby‘ 131–3 books 178 boost effect 151, 152 Bratton, Bill 148–50, 152 breast cancer aggressive screening 94 detecting abnormalities 84, 87, 95 diagnoses 82–4 mammogram screenings 94, 96 over-diagnosis and over-treatment 94–5 research on corpses 92–3 ‘in situ’ cancer cells 93 screening algorithms for 87 tumours, unwittingly ­carrying 93 bridges (route to Jones Beach) racist 1 unusual features 1 Brixton fighting 49 looting and violence 49–50 Brooks, Christopher Drew 64, 77 Brown, Joshua 135 browser history see internet browsing ­history buffer zone 144 Burgess, Ernest W. 55–6 burglary 150–1 the boost 151, 152 connections with earthquakes 152 the flag 150–1, 152 Caixin Media 45 calculations 8 calculus 8 Caldicott, Dame Fiona 223n48 Cambridge Analytica 39 advertising 42 fake news 42 personality profiles 41–2 techniques 41–2 whistleblowers 42 CAMELYON16 competition 88, 89 cameras 119–20 cancer benign 94 detection 88–9 and the immune system 93 malignant 94 ‘in situ’ 93, 94 uncertainty of tumours 93–4 see also breast cancer cancer diagnoses study 79–80 Car and Driver magazine 130–1 Carnegie 117 Carnegie Mellon University 115 cars 113–40 driverless see driverless cars see also DARPA (US Defence Advanced Research Projects Agency) categories of algorithms association 9 classification 9 filtering 9–10 prioritization 8 Centaur Chess 202 Charts of the Future 148–50 chauffeur mode 139 chess 5-7 Chicago Police Department 158 China 168 citizen scoring system 45–6 breaking trust 46 punishments 46 Sesame Credit 45–6, 168 smallpox inoculation 81 citizen scoring system 45–6 Citroen DS19 116, 116–17 Citymapper 23 classification algorithms 9 Clinical vs Statistical Prediction (Meehl) 21–2 Clinton Foundation 42 Clubcard (Tesco) 26 Cohen’s Kappa 215n12 cold cases 172 Cold War 18 Colgan, Steyve 155 Commodore 64 ix COMPAS algorithm 63, 64 ProPublica analysis accuracy of scores 65 false positives 66 mistakes 65–8 racial groups 65–6 secrecy of 69 CompStat 149 computational statistics 12 computer code 8 computer intelligence 13 see also AI (artificial intelligence) computer science 8 computing power 5 considered thought 72 cookies 34 Cope, David 189, 190–1, 193 cops on the dots 155–6 Corelogic 31 counter-intuition 122 creativity, human 192–3 Creemers, Rogier 46 creepy line 28, 30, 39 crime 141–73 algorithmic regulation 173 boost effect 151, 152 burglary 150–1 cops on the dots 155–6 geographical patterns 142–3 gun 158 hotspots 148, 149, 150–1, 155 HunchLab algorithm 157–8 New York City subway 147–50 predictability of 144 PredPol algorithm 152–7, 158 proximity of offenders’ homes 144 recognizable patterns 143–4 retail 170 Strategic Subject List 158 target hardening 154–5 see also facial recognition crime data 143–4 Crimewatch programme 142 criminals buffer zone 144 distance decay 144 knowledge of local geographic area 144 serial offenders 144, 145 customers data profiles 32 inferred data 32–4 insurance data 30–1 shopping habits 28, 29, 31 supermarket data 26–8 superstore data 28–31 cyclists 129 Daimler 115, 130 DARPA (US Defence Advanced Research Projects Agency) driverless cars 113–16 investment in 113 Grand Challenge (2004) 113–14, 117 course 114 diversity of vehicles 114 GPS coordinates 114 problems 114–15 top-scoring vehicle 115 vehicles’ failure to finish 115 Grand Challenge (2005) 115 targeting of military vehicles 113–14 data 25–47 exchange of 25, 26, 44–5 dangers of 45 healthcare 105 insurance 30–1 internet browsing history 36–7, 36–8 internet giants 36 manipulation and 39–44 medical records 102–7 benefits of algorithms 106 DeepMind 104–5 disconnected 102–3 misuse of data 106 privacy 105–7 patterns in 79–81, 108 personal 108 regulation of America 46–7 Europe 46–7 global trend 47 sale of 36–7 Sesame Credit 45–6, 168 shopping habits 28, 29, 31 supermarkets and 26–8 superstores and 28–31 data brokers 31–9 benefits provided by 32 Cambridge Analytica 39–42 data profiles 32 inferred data 32–4, 35 murky practices of 47 online adverts 33–5 rich and detailed datasets 103 Sesame Credit 45–6 unregulated 36 in America 36 dating algorithms 9 Davies, Toby 156, 157 decision trees 56–8 Deep Blue 5-7, 8 deep learning 86 DeepMind access to full medical ­histories 104–5 consent ignored 105 outrage 104 contract with Royal Free NHS Trust 104 dementia 90–2 Dewes, Andreas 36–7 Dhami, Mandeep 75, 76 diabetic retinopathy 96 Diaconis, Pesri 124 diagnostic machines 98–101, 110–11 differential diagnosis 99 discrimination 71 disease Alzheimer’s disease 90–1, 92 diabetic retinopathy 96 diagnosing 59, 99, 100 disease (continued) hereditary causes 108 Hippocrates’s understanding of 80 Huntington’s disease 110 motor neurone disease 100 pre-modern medicine 80 see also breast cancer distance decay 144 DNA (deoxyribonucleic acid) 106, 109 testing 164–5 doctors 81 unique skills of 81–2 Dodds, Peter 176–7 doppelgängers 161–3, 164, 169 Douglas, Neil 162–3 driver-assistance technology 131 driverless cars 113–40 advantages 137 algorithms and 117 Bayes’ red ball analogy 123–4 ALVINN (Autonomous Land Vehicle In a Neural Network) 118–19 autonomy 129, 130 full 127, 130, 134, 138 Bayes’ theorem 121–4 breaking the rules of the road 128 bullying by people 129 cameras and 117–18 conditions for 129 cyclists and 129 dealing with people 128–9 difficulties of building 117–18, 127–8 early technology 116–17 framing of technology 138 inevitability of errors 140 measurement 119, 120 neural networks 117–18 potential issues 116 pre-decided go-zones 130 sci-fi era 116 simulations 136–7 speed and direction 117 support for drivers 139 trolley problem 125–6 Uber 135 Waymo 129–30 driverless technology 131 Dubois, Captain 133, 137 Duggan, Mark 49 Dunn, Edwina 26 early warning systems 18 earthquakes 151–2 eBureau 31 Eckert, Svea 36–7 empathy 81–2 ensembles 58 Eppink, Richard 17, 18 Epstein, Robert 14–15 equations 8 Equivant (formerly Northpointe) 69, 217n38 errors in algorithms 18–19, 61–2, 76, 159–60, 197–9, 200–201 false negatives 62, 87, 88 false positives 62, 66, 87, 88 Eureka Prometheus Project 117 expectant mothers 28–9 expectations 7 Experiments in Musical Intelligence (EMI) 189–91, 193 Face ID (Apple) 165–6 Facebook 2, 9, 36, 40 filtering 10 Likes 39–40 news feeds experiment 42–3 personality scores 39 privacy issues 25 severing ties with data brokers 47 FaceFirst 170, 171 FaceNet (Google) 167, 169 facial recognition accuracy 171 falling 168 increasing 169 algorithms 160–3, 165, 201–2 2D images 166–7 3D model of face 165–6 Face ID (Apple) 165–6 FaceFirst 170 FaceNet (Google) 167, 169 measurements 163 MegaFace 168–9 statistical approach 166–7 Tencent YouTu Lab 169 in China 168 cold cases 172 David Baril incident 171–2 differences from DNA testing 164–5 doppelgängers 161–3, 164, 169 gambling addicts 169–70 identical looks 162–3, 164, 165 misidentification 168 neural networks 166–7 NYPD statistics 172 passport officers 161, 164 police databases of facial images 168 resemblance 164, 165 shoplifters 170 pros and cons of techno­logy 170–1 software 160 trade-off 171–3 Youssef Zaghba incident 172 fairness 66–8, 201 tweaking 70 fake news 42 false negatives 62, 87, 88 false positives 62, 66, 87, 88 FBI (Federal Bureau of Investigation) 168 Federal Communications Commission (FCC) 36 Federal Trade Commission 47 feedback loops 156–7 films 180–4 algorithms for 183 edits 182–3 IMDb website 181–2 investment in 180 John Carter (film) 180 novelty and 182 popularity 183–4 predicting success 180–1 Rotten Tomatoes website 181 study 181–2 keywords 181–2 filtering algorithms 9–10 Financial Times 116 fingerprinting 145, 171 Firebird II 116 Firefox 47 Foothill 156 Ford 115, 130 forecasts, decision trees 57–8 free technology 44 Fuchs, Thomas 101 Galton, Francis 107–8 gambling addicts 169–70 GDPR (General Data Protection Regulation) 46 General Motors 116 genetic algorithms 191–2 genetic testing 108, 110 genome, human 108, 110 geographical patterns 142–3 geoprofiling 147 algorithm 144 Germany facial recognition ­algorithms 161 linking of healthcare ­records 103 Goldman, William 181, 184 Google 14–15, 36 creepy line 28, 30, 39 data security record 105 FaceNet algorithm 167, 169 high-paying executive jobs 35 see also DeepMind Google Brain 96 Google Chrome plugins 36–7 Google Images 69 Google Maps 120 Google Search 8 Google Translate 38 GPS 3, 13–14, 114 potential errors 120 guardian mode 139 Guerry, André-Michel 143–4 gun crime 158 Hamm, John 99 Hammond, Philip 115 Harkness, Timandra 105–6 Harvard researchers experiment (2013) 88–9 healthcare common goal 111–12 exhibition (1884) 107 linking of medical records 102–3 sparse and disconnected dataset 103 healthcare data 105 Hinton, Geoffrey 86 Hippocrates 80 Hofstadter, Douglas 189–90, 194 home cooks 30–1 homosexuality 22 hotspots, crime 148, 149, 150–1, 155 Hugo, Christoph von 124–5 human characteristics, study of 107 human genome 108, 110 human intuition 71–4, 77, 122 humans and algorithms opposite skills to 139 prediction 22, 59–61, 62–5 struggle between 20–4 understanding the ­human mind 6 domination by machines 5-6 vs machines 59–61, 62–4 power of veto 19 PredPol (PREDictive ­POLicing) 153–4 strengths of 139 weaknesses of 139 Humby, Clive 26, 27, 28 Hume, David 184–5 HunchLab 157–8 Huntington’s disease 110 IBM 97–8 see also Deep Blue Ibrahim, Rahinah 197–8 Idaho Department of Health and Welfare budget tool 16 arbitrary numbers 16–17 bugs and errors 17 Excel spreadsheet 17 legally unconstitutional 17 naive trust 17–18 random results 17 cuts to Medicaid assistance 16–17 Medicaid team 17 secrecy of software 17 Illinois prisons 55, 56 image recognition 11, 84–7, 211n13 inferred data 32–4, 35 personality traits 40 Innocence Project 164 Instagram 36 insurance 30–1 genetic tests for Huntington’s disease 110 life insurance stipulations 109 unavailability for obese patients 106 intelligence tracking prevention 47 internet browsing history 36–8 anonymous 36, 37 de-anonymizing 37–8 personal identifiers 37–8 sale of 36–7 Internet Movie Database (IMDb) 181–2 intuition see human intuition jay-walking 129 Jemaah Islam 198 Jemaah Islamiyah 198 Jennings, Ken 97–8 Jeopardy!


pages: 313 words: 75,583

Ansible for DevOps: Server and Configuration Management for Humans by Jeff Geerling

AGPL, Amazon Web Services, cloud computing, continuous integration, database schema, Debian, defense in depth, DevOps, fault tolerance, Firefox, full text search, Google Chrome, inventory management, loose coupling, microservices, Minecraft, MITM: man-in-the-middle, Ruby on Rails, web application

Inside main.yml, update the roles section: 9 roles: 10 - geerlingguy.homebrew Then add the following into vars/main.yml: 1 --- 2 homebrew_installed_packages: 3 - ansible 4 - sqlite 5 - mysql 6 - php56 7 - python 8 - ssh-copy-id 9 - cowsay 10 - pv 11 - drush 12 - wget 13 - brew-cask 14 15 homebrew_taps: 16 - caskroom/cask 17 - homebrew/binary 18 - homebrew/dupes 19 - homebrew/php 20 - homebrew/versions 21 22 homebrew_cask_appdir: /Applications 23 homebrew_cask_apps: 24 - google-chrome 25 - firefox 26 - sequel-pro 27 - sublime-text 28 - vagrant 29 - vagrant-manager 30 - virtualbox Homebrew has a few tricks up its sleeve, like being able to manage general packages like PHP, MySQL, Python, Pipe Viewer, etc. natively (using commands like brew install [package] and brew uninstall package), and can also install and manage general application installation for many Mac apps, like Chrome, Firefox, VLC, etc. using brew cask. To anyone who’s set up a new Mac the old-fashioned way—download 15 .dmg files, mount them, drag the applications to the Applications folder, eject them, delete the .dmg files—Homebrew’s simplicity and speed are a godsend.


pages: 269 words: 77,876

Brilliant, Crazy, Cocky: How the Top 1% of Entrepreneurs Profit From Global Chaos by Sarah Lacy

Asian financial crisis, barriers to entry, BRICs, clean water, cleantech, cloud computing, Deng Xiaoping, Donald Trump, Elon Musk, fear of failure, Firefox, income per capita, intangible asset, Jeff Bezos, knowledge economy, knowledge worker, M-Pesa, Mahatma Gandhi, Marc Andreessen, Mark Zuckerberg, McMansion, megacity, Network effects, paypal mafia, QWERTY keyboard, risk tolerance, Skype, social web, Steve Jobs, Tony Hsieh, urban planning, web application, women in the workforce, working-age population, zero-sum game

Microsoft could fail in Web advertising, mobile phone operating systems, entertainment and video games, and its core businesses would stil funnel some $60 bil ion in revenues into its coffers every year. But if Microsoft’s dominance hasn’t been chal enged, it is slowly but surely eroding in terms of influence. On platforms like the Web and mobile devices, the war isn’t between Microsoft and anyone, it’s between Google and Apple. Even with its dominant products, percentage points of market share here or there are increasingly going to competitors, be they Google, Salesforce.com, or Firefox. It’s not the cash Microsoft is stil raking in that matters, it’s that shift in momentum. Customers don’t get excited by a Microsoft launch anymore, many top employees have long since left to work for companies like Google and Facebook, and the stock is essential y where it was 10 years ago. Like Microsoft, Silicon Val ey won’t lose in sheer numbers of startups or dol ars spent, and it wil probably stil continue to give birth to most of the bil ion-dol ar companies for the next decade.

Endeavor Entrepreneurship: in emerging markets globalization of political ramifications U.S. history of Ericsson Estrin, Judy Ewing Marion Kauffman Foundation Facebook: employee cachet funding for in Indonesia as media giant PayPal role in social network Factory Girls (Chang) Fal ows, James FARC. See Revolutionary Armed Forces of Columbia (FARC) Farmer, Paul Fast Company Federal Reserve Bank FedEx 56.com Financial Times Firefox Forbes “Midas List,” Foxconn Friendster Gandhi, Mohandas K. (Mahatma) Gandhi, Pravin Gates, Bil Gates Foundation GDP: Africa China-related Rwanda Singapore wages as share of U.S. world comparisons General Motors Geni Genocide, Rwandan Ghate, Ravi Giant Interactive Giuffrida, Fred Globalization Goldman Sachs Gomes, Marco Gondal, Vishal Google: ad build-out in China as competitor as copycat founder of funding for immigrant success story as innovator in Israel powerhouse vis-à-vis Tencent Web share YouTube acquisition Gourevitch, Philip Grant Thornton LLP Great Leap Forward (Mao) Greenfield opportunities: in Brazil in China defined in India in Israel venture capital and in Western world Groupon Grove, Andy Growth Enterprise Board G7 nations Gupta, Abhishek Gupta, Naren Habyarimana, Juvenal Hambrecht & Quist Hanna, Jack Harvard Business School He, Eric Hertz, Matt Hewlett-Packard Highland Capital Partners Hinduism, culture of Hiware Bazar (India) Ho, Roy Hole-in-the-Wal program Horsley Bridge Partners Hsieh, Tony Huawei Hulu ICQ IL&FS Image Café Immigrants: Brazilian as economic asset as entrepreneurs Indian to Indonesia role in Israel In U.S.


pages: 268 words: 76,702

The System: Who Owns the Internet, and How It Owns Us by James Ball

Bill Duvall, bitcoin, blockchain, Chelsea Manning, cryptocurrency, don't be evil, Donald Trump, Douglas Engelbart, Edward Snowden, en.wikipedia.org, Firefox, Frank Gehry, Internet of things, invention of movable type, Jeff Bezos, jimmy wales, Julian Assange, Kickstarter, Leonard Kleinrock, Marc Andreessen, Mark Zuckerberg, Menlo Park, Minecraft, Mother of all demos, move fast and break things, move fast and break things, Network effects, Oculus Rift, packet switching, patent troll, Peter Thiel, pre–internet, ransomware, RFC: Request For Comment, risk tolerance, Ronald Reagan, Rubik’s Cube, self-driving car, Shoshana Zuboff, Silicon Valley, Silicon Valley startup, Skype, Snapchat, Steve Crocker, Stuxnet, The Chicago School, undersea cable, uranium enrichment, WikiLeaks, yield management, zero day

It doesn’t take any invasive personal data to know, for example, that someone searching for ‘budget holiday Magaluf’ is someone worth targeting a cheap holiday ad at. By adding DoubleClick to its repertoire, Google managed to extend its advertising dominance just in time, now being one of the biggest ad networks displaying ads across the internet, not just on its own sites. Given Google also created Chrome (a web browser – the software used to access the web, such as Internet Explorer or Firefox), Android (a mobile phone operating system) and more, its data pool keeps widening, and its advantage grows and grows – and regulators seem to just tinker at the margins, with even apparently huge and dramatic legislation like GDPR seeming to make almost no difference in the day-to-day business model of the ad-funded internet. ‘The reality is governments are terrified of the internet,’ O’Kelley says.

venture capital/VC: the financial model (and financial backer) of most of the internet, venture capital is a particular subset of private equity which invests in tech firms, hoping for returns of ten times or more. World Wide Web: the web is the most obvious and visible bit of the internet to most of us, conceived in 1989 by Tim Berners-Lee, and is the system by which websites are delivered to browsers such as Chrome, Firefox or Safari. FURTHER READING The following serve as a selected bibliography of the books used in the research of this book, as well as a few not cited herein but which offer good background or further reading on some of the topics covered. This isn’t comprehensive – it doesn’t include books or papers cited in passing, but these are included in the endnotes. Anderson, C., The Long Tail: Why the Future of Business Is Selling Less of More, Hachette Books, 2008.


pages: 720 words: 197,129

The Innovators: How a Group of Inventors, Hackers, Geniuses and Geeks Created the Digital Revolution by Walter Isaacson

1960s counterculture, Ada Lovelace, AI winter, Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, AltaVista, Apple II, augmented reality, back-to-the-land, beat the dealer, Bill Gates: Altair 8800, bitcoin, Bob Noyce, Buckminster Fuller, Byte Shop, c2.com, call centre, citizen journalism, Claude Shannon: information theory, Clayton Christensen, commoditize, computer age, crowdsourcing, cryptocurrency, Debian, desegregation, Donald Davies, Douglas Engelbart, Douglas Engelbart, Douglas Hofstadter, Dynabook, El Camino Real, Electric Kool-Aid Acid Test, en.wikipedia.org, Firefox, Google Glasses, Grace Hopper, Gödel, Escher, Bach, Hacker Ethic, Haight Ashbury, Howard Rheingold, Hush-A-Phone, HyperCard, hypertext link, index card, Internet Archive, Jacquard loom, Jaron Lanier, Jeff Bezos, jimmy wales, John Markoff, John von Neumann, Joseph-Marie Jacquard, Leonard Kleinrock, Marc Andreessen, Mark Zuckerberg, Marshall McLuhan, Menlo Park, Mitch Kapor, Mother of all demos, new economy, New Journalism, Norbert Wiener, Norman Macrae, packet switching, PageRank, Paul Terrell, pirate software, popular electronics, pre–internet, RAND corporation, Ray Kurzweil, RFC: Request For Comment, Richard Feynman, Richard Stallman, Robert Metcalfe, Rubik’s Cube, Sand Hill Road, Saturday Night Live, self-driving car, Silicon Valley, Silicon Valley startup, Skype, slashdot, speech recognition, Steve Ballmer, Steve Crocker, Steve Jobs, Steve Wozniak, Steven Levy, Steven Pinker, Stewart Brand, technological singularity, technoutopianism, Ted Nelson, The Coming Technological Singularity, The Nature of the Firm, The Wisdom of Crowds, Turing complete, Turing machine, Turing test, Vannevar Bush, Vernor Vinge, Von Neumann architecture, Watson beat the top human players on Jeopardy!, Whole Earth Catalog, Whole Earth Review, wikimedia commons, William Shockley: the traitorous eight

“Linux is subversive,” wrote Eric Raymond. “Who would have thought that a world-class operating system could coalesce as if by magic out of part-time hacking by several thousand developers scattered all over the planet, connected only by the tenuous strands of the Internet?”146 Not only did it become a great operating system; it became a model for commons-based peer production in other realms, from Mozilla’s Firefox browser to Wikipedia’s content. By the 1990s there were many models for software development. There was the Apple approach, in which the hardware and the operating system software were tightly bundled, as with the Macintosh and iPhone and every iProduct in between. It made for a seamless user experience. There was the Microsoft approach, in which the operating system was unbundled from the hardware.

The Internet facilitated collaboration not only within teams but also among crowds of people who didn’t know each other. This is the advance that is closest to being revolutionary. Networks for collaboration have existed ever since the Persians and Assyrians invented postal systems. But never before has it been easy to solicit and collate contributions from thousands or millions of unknown collaborators. This led to innovative systems—Google page ranks, Wikipedia entries, the Firefox browser, the GNU/Linux software—based on the collective wisdom of crowds. There were three ways that teams were put together in the digital age. The first was through government funding and coordination. That’s how the groups that built the original computers (Colossus, ENIAC) and networks (ARPANET) were organized. This reflected the consensus, which was stronger back in the 1950s under President Eisenhower, that the government should undertake projects, such as the space program and interstate highway system, that benefited the common good.

Many of the advances that created the Internet and its services occurred in this fashion, which the Harvard scholar Yochai Benkler has labeled “commons-based peer production.”32 The Internet allowed this form of collaboration to be practiced on a much larger scale than before. The building of Wikipedia and the Web were good examples, along with the creation of free and open-source software such as Linux and GNU, OpenOffice and Firefox. As the technology journalist Steven Johnson has noted, “their open architecture allows others to build more easily on top of existing ideas, just as Berners-Lee built the Web on top of the Internet.”33 This commons-based production by peer networks was driven not by financial incentives but by other forms of reward and satisfaction. The values of commons-based sharing and of private enterprise often conflict, most notably over the extent to which innovations should be patent-protected.


pages: 371 words: 78,103

Webbots, Spiders, and Screen Scrapers by Michael Schrenk

Amazon Web Services, corporate governance, fault tolerance, Firefox, Marc Andreessen, new economy, pre–internet, SpamAssassin, The Hackers Conference, Turing test, web application

This log file stores the time of access, the IP address of the requester, and the agent name, which identifies the type of program that requested the file. Generally, agent names identify the browser that the web surfer was using to view the website. Some agent names that a server log file may record are shown in Listing 3-3. The first four names are browsers; the last is the Google spider. Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03 [en] Mozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020515) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1) Googlebot/2.1 (+http://www.google.com/bot.html) Listing 3-3: Agent names as seen in a file access log A webbot using cURL can assume any appropriate (or inappropriate) agent name. For example, sometimes it is advantageous to identify your webbots, as Google does.

[75] The robots.txt specification is available at http://www.robotstxt.org, [76] The specification for the robots meta tag is available at http://www.robotstxt.org/wc/meta_user.html Building Speed Bumps Better methods of deterring webbots are ones that make it difficult for a webbot to operate on a website. Just remember, however, that a determined webbot designer may overcome these obstacles. Selectively Allow Access to Specific Web Agents Some developers may be tempted to detect their visitors' web agent names and only serve pages to specific browsers like Internet Explorer or Firefox. This is largely ineffective because a webbot can pose as any web agent it chooses.[77] However, if you insist on implementing this strategy, make sure you use a server-side method of detecting the agent, since you can't trust a webbot to interpret JavaScript. Use Obfuscation As you learned in Chapter 20, obfuscation is the practice of hiding something through confusion. For example, you could use HTML special characters to obfuscate an email link, as shown in Listing 27-2.


pages: 362 words: 86,195

Fatal System Error: The Hunt for the New Crime Lords Who Are Bringing Down the Internet by Joseph Menn

Brian Krebs, dumpster diving, fault tolerance, Firefox, John Markoff, Menlo Park, offshore financial centre, pirate software, plutocrats, Plutocrats, popular electronics, profit motive, RFID, Silicon Valley, zero day

Anything more intrusive, secretive, or uncontrolled puts us on the road to the destruction of Internet privacy, the consequences of which are on view in such places as China and Iran. THE AREA WITH THE MOST COMPLEXITY—and the greatest short-term potential—lies in the nascent communities of private sleuths like Barrett, the team that identified the suspected author of the SoBig virus, and those tracking the RBN. There should be more of a coordinated movement to save the Net, which should set out credos with the moral force that has driven the development of Linux, the Firefox Web browser, and other open-source projects. Those efforts attracted thousands of volunteer programmers to help develop alternatives to commercial products that were riddled with flaws. Certainly protecting the public is a higher calling still. Such campaigns could simultaneously aid law enforcement and shame them into action. And they should be opened up as much as possible, allowing more people to contribute their time and expertise.

See Maksakov, Ivan Facebook Falun Gong Faust Federal Bureau of Investigation (FBI) CarderPlanet and Digital Gaming Solutions raid and distributed denial-of-service attacks and FSB and identity theft and Lyon, Barrett and MVD and NHTCU and online gambling, federal crackdown on and Russia case and Sacco, Ron and underground economy and Vendorsname and Federal government Federal Security Service (FSB) Federal Trade Commission (FTC) FedEx Feinstein, Dianne Fenwick, Trevor Ferguson, Paul Ferrell, Will Fifth Amendment Financial Times Finland Firefox Web browser First Fidelity Five Families Fleiss, Heidi Flyman Flynn, Mickey. See Richardson, Mickey Flynn, Mickey, Jr. Forbes Forbes Ford, Mike Fortune Frank, Barney Frist, Bill “Fruity.” See Green, Brian FSB. See Federal Security Service F-Secure FTC. See Federal Trade Commission Full Tilt Poker The Future of the Internet—And How to Stop It (Zittrain) Gambino crime family Gambling.


pages: 322 words: 84,752

Pax Technica: How the Internet of Things May Set Us Free or Lock Us Up by Philip N. Howard

Affordable Care Act / Obamacare, Berlin Wall, bitcoin, blood diamonds, Bretton Woods, Brian Krebs, British Empire, butter production in bangladesh, call centre, Chelsea Manning, citizen journalism, clean water, cloud computing, corporate social responsibility, creative destruction, crowdsourcing, digital map, Edward Snowden, en.wikipedia.org, failed state, Fall of the Berlin Wall, feminist movement, Filter Bubble, Firefox, Francis Fukuyama: the end of history, Google Earth, Howard Rheingold, income inequality, informal economy, Internet of things, Julian Assange, Kibera, Kickstarter, land reform, M-Pesa, Marshall McLuhan, megacity, Mikhail Gorbachev, mobile money, Mohammed Bouazizi, national security letter, Nelson Mandela, Network effects, obamacare, Occupy movement, packet switching, pension reform, prediction markets, sentiment analysis, Silicon Valley, Skype, spectrum auction, statistical model, Stuxnet, trade route, undersea cable, uranium enrichment, WikiLeaks, zero day

However, this perspective doesn’t work because social elites are hardly using the internet to usher in a new era of feudalism. There are important civil-society actors that lead successful campaigns against the absolute dominance of technology firms. The 2012 defeat of the Stop Online Piracy Act and Protect IP Act is a good example of the clout that users can have when they are organized. An important open software movement gives us good, free tools, such as Firefox and Apache. In feudal politics the state and religious authority were one and the same thing. China’s technology businesses and government agencies are sometimes indistinguishable from one another because of complex reporting structures and ownership patterns. In most democracies, technology firms and government agencies are closely aligned but organizationally distinct. Hyperbole aside, Apple, Google, and Microsoft are not states.

See also cyberespionage Estrada, Joseph, 127 Ethiopia, 215 Euromaidan protests (Ukraine), 114–15 Europe, political parties in, defending internet freedom, 166 European Union, 98 export controls, 252 extremism, resilience of, 131 extremist groups, 216–17, 219, 220 Facebook: xiii–xiv, 8, 9, 122; facilitating clan formation, 173, 174; governments requesting data from, 26; used as recruiting tool, 216–17 failed states, 72, 80–84, 94, 159; data from, 110–11; technology use in, 134 failing states, 80–84, 94 fair-trade coffee movement, 49–50 Federal Bureau of Investigation (FBI), 39 Femen network (Ukraine), 86 feudalism, 63–64 filter bubble, 202 financial markets, bots in, 34 Finfisher, 201 Firefox, 64 firms, rise of, 6 FISA. See Foreign Intelligence Surveillance Act Flame (virus), 40 Flemish, self-governance and, 145 Flickr, 9 foreign affairs, device networks and, 249 Foreign Intelligence Surveillance Act, 24 foreign policy, technology policy and, 8 fourth wave, 51 Freegate, 30 Free Syria Army, 62 Frischmann, Brett, 243 FrontlineSMS, 101–2, 119 Fukuda, Hareaki, 253 Fukushima Daiichi nuclear plant, 177 Fukuyama, Francis, 12, 52, 129 Gauss (virus), 40 gender politics, 76–77 geographic information systems, 48 geolocation, xiii–xiv Georgia, 238 Gibbon, Edward, 232 GIS.


Beautiful Data: The Stories Behind Elegant Data Solutions by Toby Segaran, Jeff Hammerbacher

23andMe, airport security, Amazon Mechanical Turk, bioinformatics, Black Swan, business intelligence, card file, cloud computing, computer vision, correlation coefficient, correlation does not imply causation, crowdsourcing, Daniel Kahneman / Amos Tversky, DARPA: Urban Challenge, data acquisition, database schema, double helix, en.wikipedia.org, epigenetics, fault tolerance, Firefox, Hans Rosling, housing crisis, information retrieval, lake wobegon effect, longitudinal study, Mars Rover, natural language processing, openstreetmap, prediction markets, profit motive, semantic web, sentiment analysis, Simon Singh, social graph, SPARQL, speech recognition, statistical model, supply-chain management, text mining, Vernor Vinge, web application

CrimeWatch also relies heavily on client-side JavaScript smarts beyond simple form submissions, including the use of additional state variables, so intermediate response pages must be parsed with a tolerant HTML parser and regular expressions to search for details buried deep within page scripts. Finally, since many such older-generation web applications were built and released before cross-browser dynamic HTML became a common practice among developers, it’s often necessary to spoof the User-Agent header and pretend to be either Internet Explorer or Mozilla Firefox; other browsers are turned away with compatibility warnings and no data. At the end of this process, you are left with a medium-sized image bitmap, hopefully containing recognizable crime report icons. The first pass at extracting the pixel locations of each icon was simple, but slow: for every possible location in the image, compare its pixel colors to a known icon, and report positive matches wherever the amount of difference was below a certain threshold.

Cones would have to remain in the experimental bin. Another possible enhancement that received a great deal of serious attention during our downtime was the concept of distributed page scraping. The reason our normal collection process was vulnerable to interruption was that all requests had to originate from the same Internet address, making them trivially easy to block when needed. We experimented with a distributed model implemented as a Firefox browser add-on, executed in JavaScript and controlled centrally. We hoped that a sufficient number of our technically savvy visitors would be willing to download a browser toolbar icon and help collect data when indicated. Requests to the CrimeWatch server would be spread over a large number of visiting IP addresses, at unpredictable hours of the day: a pattern effectively indistinguishable from normal site use.

Beat pages are now home to a static overview map of the area showing its borders, as well as portions of the API likely to be maximally useful to nontechnical users comfortable with common spreadsheet software. The eventual feedback we received on this feature was invaluable. One resident said, “We have a Beat1X NCPC (Neighborhood Crime Prevention Council) meeting next week…I’ll be able to show up more prepared than OPD…our experience has been that they seldom if ever have current statistics to share with us.” The Firefox browser plug-in and associated web service controller were completed and planned for limited, experimental rollout around the same time that the City of Oakland informed us that we would be provided with a nightly spreadsheet of complete citywide crime report information, along with street addresses or intersections where appropriate. Starting in January 2008 and lasting until the present day, our data collection process has evolved from a lengthy, error-prone affair to a rapid one blessed by the municipal creators and stewards of the data we were working with. 180 CHAPTER ELEVEN Download at Boykma.Com F I G U R E 1 1 - 1 0 .


pages: 478 words: 149,810

We Are Anonymous: Inside the Hacker World of LulzSec, Anonymous, and the Global Cyber Insurgency by Parmy Olson

4chan, Asperger Syndrome, bitcoin, call centre, Chelsea Manning, corporate governance, crowdsourcing, Firefox, hive mind, Julian Assange, Minecraft, MITM: man-in-the-middle, Occupy movement, peer-to-peer, pirate software, side project, Skype, speech recognition, Stephen Hawking, Stuxnet, We are Anonymous. We are Legion, We are the 99%, web application, WikiLeaks, zero day

Sabu, Topiary, and one other senior figure in Anonymous said that Tflow originally wrote the script. Tflow had written a browser JavaScript plug-in that effectively stripped the government’s added Java code and redirected Tunisian Internet users away from its phishing servers (essentially fake Gmail, Yahoo, and Facebook sites) and back to the original, true hosts. Tunisian Internet users first had to install the Greasemonkey add-on for Firefox. Then it was just a matter of opening Firefox and going to Tools, then to Greasemonkey and New User Script, to paste in the code. Having clicked “Okay,” Tunisians could within a minute or two access Facebook, Twitter, Blogger, Gmail, and Yahoo without exposing their login details. I have sourced the story about Sabu remotely controlling a Tunisian man’s computer to deface the website of the country’s prime minister from interviews with Sabu himself, conducted in April of 2011.

In a separate incident, a webmaster whose website was being hit by Gigaloader in 2007 said the traffic he was getting looked like this: 75.185.163.131 - - [27/Sep/2007:05:10:16 -0400] “GET /styles/xanime/top.jpg?2346141190864713656_ANON_DOES_NOT_FORGIVE HTTP/1.1” 200 95852 “http://www.gigaloader.com/user-message/ANON_DOES_NOT_FORGIVE” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7” In the case of Scientology.org, 4chan was sending the message “DDOS BY EBAUMSWORLD” to the church’s servers, part of a running gag to blame 4chan’s antics on the rival, slightly tamer site. Once the thread’s participants started hitting Scientology.org with Gigaloader, another poster described “Phase 2”: /b/ would create a shell site and upload to it a video that repeatedly flashed “facts of Scientology and its inner workings.”


pages: 492 words: 153,565

Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon by Kim Zetter

Ayatollah Khomeini, Brian Krebs, crowdsourcing, data acquisition, Doomsday Clock, drone strike, Edward Snowden, facts on the ground, Firefox, friendly fire, Google Earth, information retrieval, John Markoff, Julian Assange, Kickstarter, Loma Prieta earthquake, Maui Hawaii, MITM: man-in-the-middle, pre–internet, RAND corporation, Silicon Valley, skunkworks, smart grid, smart meter, South China Sea, Stuxnet, undersea cable, uranium enrichment, Vladimir Vetrov: Farewell Dossier, WikiLeaks, Y2K, zero day

But an exploit for Flash or Windows can jump to $100,000 or more because of the programs’ ubiquity in the marketplace. An exploit for Apple’s iOS can also go for $100,000 because the iPhone is more difficult to crack than competing mobile phones. Browser exploits that attack Firefox, Internet Explorer, and Chrome can sell for anywhere from $60,000 to more than $200,000, depending on their ability to bypass security protections the vendors have put in the software.1 Whatever the price on the gray market, however, it far surpasses in most cases what a seller can get from the white-market bounty programs. The Mozilla Foundation pays just $3,000 for bugs found in its Firefox browser and Thunderbird e-mail client, for example, while Microsoft, which was criticized for years for having no bug bounty program, began offering just $11,000 in 2013 for bugs found in the preview release of its new Internet Explorer 11 browser.

For many years it operated ad-hoc, with sales occurring only quietly in private between security firms and researchers and their government contacts. If someone wanted to sell an exploit but had no government contacts, it was difficult to sniff out a buyer. Beginning in 2006, for example, one security firm sold several zero-day exploits to a contact at a large US defense firm, according to a former employee who worked there. The zero days, all browser exploits targeting security holes in Safari, Firefox, and Internet Explorer, sold for about $100,000 each. The security firm got $50,000 up front for each sale it made and $10,000 a month thereafter until the price was paid off—payments were spread out to discourage them from reselling the exploits to other buyers or disclosing them to the vendors for patching. One of the first people to openly admit selling exploits to the government is security researcher Charlie Miller, a former NSA hacker who was recruited by the spy agency in 2000 after earning a PhD in mathematics from the University of Notre Dame.


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, basic income, Brian Krebs, California gold rush, call centre, cloud computing, cognitive dissonance, commoditize, correlation does not imply causation, Credit Default Swap, crowdsourcing, don't be evil, drone strike, 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, lifelogging, Lyft, Mark Zuckerberg, Mars Rover, Marshall McLuhan, mass incarceration, meta analysis, meta-analysis, Minecraft, move fast and break things, 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 intelligence, social web, sorting algorithm, Steve Ballmer, Steve Jobs, Steven Levy, TaskRabbit, technoutopianism, telemarketer, transportation-network company, Travis Kalanick, Turing test, Uber and Lyft, Uber for X, uber lyft, universal basic income, unpaid internship, women in the workforce, Y Combinator, Zipcar

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. This Do Not Track capability was instituted after members of the advertising and tech industries, government officials, and privacy advocates came together to support the mechanism, which was a central part of the Consumer Privacy Bill of Rights that the Obama administration presented in February 2012.

Coders have created a number of anti-tracking tools, often in the form of free browser plug-ins that users can install. Apps such as Ghostery, DoNotTrackMe, and Disconnect block the more than 2,000 “retargeters” that use cookies, ad networks, and other techniques to track your browsing history and present you related ads across the Internet. These plug-ins can also block surveillance from social widgets, including Like buttons. Some browser makers have also stepped up, with Safari and Firefox automatically blocking cookies from third-party sites that the user hasn’t visited. But some of these blocking apps aren’t quite what they claim to be. Evidon, the company that makes Ghostery, takes some of the data it collects from Ghostery users—there are eight million of them—and sells it to advertisers. Anti-tracking and -targeting measures may provide short-term solutions for users seeking some modicum of privacy or anonymity while browsing the Internet, but they do little to overturn the industry’s status quo, which remains single-mindedly focused on knowing more about user activities than the users themselves.


pages: 299 words: 91,839

What Would Google Do? by Jeff Jarvis

23andMe, Amazon Mechanical Turk, Amazon Web Services, Anne Wojcicki, barriers to entry, Berlin Wall, business process, call centre, cashless society, citizen journalism, clean water, commoditize, connected car, credit crunch, crowdsourcing, death of newspapers, different worldview, disintermediation, diversified portfolio, don't be evil, fear of failure, Firefox, future of journalism, G4S, Google Earth, Googley, Howard Rheingold, informal economy, inventory management, Jeff Bezos, jimmy wales, Kevin Kelly, Mark Zuckerberg, moral hazard, Network effects, new economy, Nicholas Carr, old-boy network, PageRank, peer-to-peer lending, post scarcity, prediction markets, pre–internet, Ronald Coase, search inside the book, Silicon Valley, Skype, social graph, social software, social web, spectrum auction, speech recognition, Steve Jobs, the medium is the message, The Nature of the Firm, the payments system, The Wisdom of Crowds, transaction costs, web of trust, WikiLeaks, Y Combinator, Zipcar

The story is often told: Distributed armies of programmers created the most important software underlying the internet, from the Linux operating system that powers most internet servers to the free Apache web server software that delivers most web pages to the 500 million open-source Firefox browsers that show those pages. Why do these programmers do this work for free? Because they’re generous. They want to be part of something. They care. They may want to stick it to the man (namely, Mr. Gates). And they know that banding together in an open network lets them create a better product than they could if they were to work inside most corporations. How is open-source not chaos? New York University journalism professor Jay Rosen studied the Firefox project when he wanted to bring similar collaboration to journalism at his NewAssignment.net project. He learned that contrary to common misperception, open-source projects are not anarchies.


pages: 340 words: 96,149

@War: The Rise of the Military-Internet Complex by Shane Harris

Amazon Web Services, barriers to entry, Berlin Wall, Brian Krebs, centralized clearinghouse, clean water, computer age, crowdsourcing, data acquisition, don't be evil, Edward Snowden, failed state, Firefox, John Markoff, Julian Assange, mutually assured destruction, peer-to-peer, Silicon Valley, Silicon Valley startup, Skype, Stuxnet, undersea cable, uranium enrichment, WikiLeaks, zero day

The NSA would be like a gremlin, mischievously futzing with the machine. The agency also tried to attack Tor users from outside the network, infecting or “tagging” computers with a kind of electronic marker as they went in and out of Tor. The NSA’s hackers looked for different avenues to break in to computers that might be using the network—or might not. Once, they discovered a particular weak spot in a version of the Internet browser Firefox, which made it easier to tag computers using that browser. Never mind that the same weakness, if left unprotected, could be used to harm people who’d never heard of Tor and had no desire to cover their online footprints. The NSA’s anti-Tor campaign was exposed in 2013, through top-secret documents leaked by Edward Snowden. Those documents also revealed that the campaign was largely a failure.

See electrical power systems; nuclear facilities; petroleum power systems engineering, reverse, [>] England, Gordon, [>] Estonia, [>] ethical issues: cyber offense by private companies, [>]; how sold information is used, [>], [>]; placement of blame for zero day attack, [>]; responsibility to disclose vulnerabilities, [>], [>]–[>], [>]–[>], [>] Facebook, [>], [>], [>], [>], [>] Federal Bureau of Investigation (FBI), [>], [>]–[>], [>], [>]–[>], [>], [>]–[>], [>]–[>], [>], [>] fiber-optic trunk lines, [>], [>], [>] Fick, Nathaniel, [>]–[>] fifth domain, cyberspace as the, [>], [>], [>], [>], [>] file-sharing networks, [>]–[>] financial and banking data systems: clearinghouse network, [>]; cyber breaches, [>]–[>], [>]–[>]; cyber security, [>], [>], [>]–[>], [>]–[>], [>], [>]; denial-of-service attacks, [>], [>], [>], [>], [>]; hack-back against Citadel, [>]–[>]; risks of malware use in military context, [>]–[>], [>]. See also critical infrastructures FinFisher software, [>]–[>], [>] FireEye, [>], [>] Firefox, [>] First Amendment, [>] FISA. See Foreign Intelligence Surveillance Act Flatliquid operation, [>]–[>], [>] n. [>] Foreign Intelligence Surveillance Act (FISA), [>], [>]–[>], [>] Foreign Intelligence Surveillance Court, [>], [>]–[>], [>] foreign policy, US: for China, [>]–[>], [>]–[>]; international cyber agreements, [>], [>]; and monitoring of foreigners, [>], [>]–[>], [>], [>], [>], [>] forensics, network, [>], [>]–[>], [>], [>], [>] Fourth Amendment, [>], [>], [>], [>], [>] France, [>]–[>], [>]–[>], [>] F-35.


pages: 317 words: 98,745

Black Code: Inside the Battle for Cyberspace by Ronald J. Deibert

4chan, Any sufficiently advanced technology is indistinguishable from magic, Brian Krebs, call centre, citizen journalism, cloud computing, connected car, corporate social responsibility, crowdsourcing, cuban missile crisis, data acquisition, failed state, Firefox, global supply chain, global village, Google Hangouts, Hacker Ethic, informal economy, invention of writing, Iridium satellite, jimmy wales, John Markoff, Kibera, Kickstarter, knowledge economy, low earth orbit, Marshall McLuhan, MITM: man-in-the-middle, mobile money, mutually assured destruction, Naomi Klein, new economy, Occupy movement, Panopticon Jeremy Bentham, planetary scale, rent-seeking, Ronald Reagan, Ronald Reagan: Tear down this wall, Silicon Valley, Silicon Valley startup, Skype, smart grid, South China Sea, Steven Levy, Stuxnet, Ted Kaczynski, the medium is the message, Turing test, undersea cable, We are Anonymous. We are Legion, WikiLeaks, zero day

Whereas ten years ago a cyber criminal needed the equivalent of an advanced graduate degree in engineering, today a teenager could set up something like Koobface. In Brazil, there is an academy that openly advertises courses on computer crime: “This course is intended for everybody making online transactions. You will learn how crackers take control of corporate or home computers … how ‘auto-infect’ works, how to use sources [trojans], how to manipulate the security plug-ins installed on browsers such as Internet Explorer, Firefox, Chrome, Avant, Opera, and antivirus and firewalls. How spamming helps catch new victims, what ‘loaders’ do and how crackers use them … how crackers can own e-commerce websites that store credit card numbers and what they do with this data. You’ll learn about the laws in Brazil and what the sentence is if you’re caught.” The course costs $75 and includes a special bonus: 60 million email addresses with which to begin experimenting.

• • • In 2011, the German hacker collective, Chaos Computer Club (CCC) announced that it had discovered and examined a backdoor trojan horse made by the German company DigiTask as part of a “lawful interception” program to listen in on Internet-based communications. In Germany, courts have long allowed the use of backdoor programs to help law enforcement listen in on encrypted communications as part of legal wiretaps. However, the CCC alleged that the software went far beyond those permissible purposes, and claimed the trojan could be used to monitor Skype, Yahoo! Messenger, and MSN Messenger; log keystrokes made through Firefox, Internet Explorer, and other browsers; and take screen captures of desktops. The CCC wrote that the “State Trojan” violated German law because it could also upload and execute programs remotely. “This means, an ‘upgrade path’ from [lawful spyware] to the full State Trojan’s functionality is built-in right from the start. Activation of the computer’s hardware like a microphone or camera can be used for room surveillance.


pages: 316 words: 90,165

You Are Here: From the Compass to GPS, the History and Future of How We Find Ourselves by Hiawatha Bray

A Declaration of the Independence of Cyberspace, Albert Einstein, Big bang: deregulation of the City of London, bitcoin, British Empire, call centre, Charles Lindbergh, crowdsourcing, Dava Sobel, digital map, don't be evil, Edmond Halley, Edward Snowden, Firefox, game design, Google Earth, Hedy Lamarr / George Antheil, Isaac Newton, job automation, John Harrison: Longitude, John Snow's cholera map, license plate recognition, lone genius, openstreetmap, polynesian navigation, popular electronics, RAND corporation, RFID, Ronald Reagan, Silicon Valley, Steve Jobs, Steven Levy, Thales of Miletus, trade route, turn-by-turn navigation, uranium enrichment, urban planning, Zipcar

He did not elaborate, but Morgan knew that Apple would soon have one of its regular meetings in which senior executives would pitch new product ideas to Steve Jobs. Skyhook had created a version of Loki for Apple’s Mac computers a few months earlier, but it was not good enough for Borchers. He had seen Loki run as an add-on program for the Firefox Internet browser, but worried that Jobs might reject a browser-based program not running on Apple’s own browser, Safari. “I kind of begged him to quickly do a Safari port,” said Borchers, today a general partner at venture investing firm Opus Capital, “because I knew if I showed it on Firefox, that wouldn’t be popular.”8 Meanwhile, Morgan and Shean were determined that Jobs see their technology at its best. Shean had managed to identify the resort where the executive meeting would be held. He flew to the location with a Skyhook wardriving kit, rented a car, and drove throughout the area to make sure it was thoroughly mapped.


pages: 366 words: 94,209

Throwing Rocks at the Google Bus: How Growth Became the Enemy of Prosperity by Douglas Rushkoff

activist fund / activist shareholder / activist investor, Airbnb, algorithmic trading, Amazon Mechanical Turk, Andrew Keen, bank run, banking crisis, barriers to entry, bitcoin, blockchain, Burning Man, business process, buy and hold, buy low sell high, California gold rush, Capital in the Twenty-First Century by Thomas Piketty, carbon footprint, centralized clearinghouse, citizen journalism, clean water, cloud computing, collaborative economy, collective bargaining, colonial exploitation, Community Supported Agriculture, corporate personhood, corporate raider, creative destruction, crowdsourcing, cryptocurrency, disintermediation, diversified portfolio, Elon Musk, Erik Brynjolfsson, Ethereum, ethereum blockchain, fiat currency, Firefox, Flash crash, full employment, future of work, gig economy, Gini coefficient, global supply chain, global village, Google bus, Howard Rheingold, IBM and the Holocaust, impulse control, income inequality, index fund, iterative process, Jaron Lanier, Jeff Bezos, jimmy wales, job automation, Joseph Schumpeter, Kickstarter, loss aversion, Lyft, Marc Andreessen, Mark Zuckerberg, market bubble, market fundamentalism, Marshall McLuhan, means of production, medical bankruptcy, minimum viable product, Mitch Kapor, Naomi Klein, Network effects, new economy, Norbert Wiener, Oculus Rift, passive investing, payday loans, peer-to-peer lending, Peter Thiel, post-industrial society, profit motive, quantitative easing, race to the bottom, recommendation engine, reserve currency, RFID, Richard Stallman, ride hailing / ride sharing, Ronald Reagan, Satoshi Nakamoto, Second Machine Age, shareholder value, sharing economy, Silicon Valley, Snapchat, social graph, software patent, Steve Jobs, TaskRabbit, The Future of Employment, trade route, transportation-network company, Turing test, Uber and Lyft, Uber for X, uber lyft, unpaid internship, Y Combinator, young professional, zero-sum game, Zipcar

The most creative digital companies have begun to mix and match various corporate strategies. The Mozilla Foundation, developers of the Web browser now called Firefox and one of the most successful digital companies of our time, is a not-for-profit. The company is a success both for its widely used open-source technologies and for its leadership position in a field dominated by platform monopolies. Mozilla is actually made up of two different entities: the Mozilla Foundation, a nonprofit, and the Mozilla Corporation, which the foundation oversees. The subsidiary corporation is responsible for much of Mozilla software’s development, marketing, and distribution. It collects the massive revenue generated by Firefox,84 but it has no publicly traded stock, no dividends, and no shareholders. All profits are directed back to the nonprofit,85 which can spend them only to fulfill the Mozilla Foundation’s nonprofit mission: “To promote the development of, public access to and adoption of the open source Mozilla web browsing and Internet application software.”86 By shunting profits into a nonprofit instead of delivering them to shareholders as capital gains, Mozilla is able to maintain its distributed network of open-source volunteers and five hundred to a thousand paid employees.87 Capital is always in service of the business, its products, its employees, and its customers, never vice versa.


pages: 135 words: 26,407

How to DeFi by Coingecko, Darren Lau, Sze Jin Teh, Kristian Kho, Erina Azmi, Tm Lee, Bobby Ong

algorithmic trading, asset allocation, Bernie Madoff, bitcoin, blockchain, buy and hold, capital controls, collapse of Lehman Brothers, cryptocurrency, distributed ledger, diversification, Ethereum, ethereum blockchain, fiat currency, Firefox, information retrieval, litecoin, margin call, new economy, passive income, payday loans, peer-to-peer, prediction markets, QR code, reserve currency, smart contracts, tulip mania, two-sided market

To skip the queue, you may use this link to sign up: https://argent.link/coingecko You will get an email notification once your wallet is ready to use! Step 6 You start depositing or sending cryptocurrencies to other people. Do consider adding additional Argent Guardians to improve your security. ~ Desktop Users: Metamask For desktop users, you may use Metamask, a web browser extension available on the Chrome, Firefox, Opera, and Brave browsers. Like Argent, Metamask is a non-custodial wallet and it acts as both a wallet and an interaction bridge for the Ethereum network. You can store your Ethereum and ERC20 tokens on Metamask. Acting as an interaction bridge, Metamask enables you to use all Decentralized Applications (Dapps) that are hosted on the Ethereum Network. Without the use of an interaction bridge like MetaMask, your browser would not be able to access the Ethereum blockchain unless you were running a full Ethereum node and have the entire Ethereum blockchain of over 400GB downloaded on your computer.


pages: 309 words: 65,118

Ruby by example: concepts and code by Kevin C. Baird

Benevolent Dictator For Life (BDFL), David Heinemeier Hansson, Debian, digital map, Donald Knuth, en.wikipedia.org, Firefox, fudge factor, general-purpose programming language, Guido van Rossum, Larry Wall, MVC pattern, Paul Graham, Perl 6, premature optimization, union organizing, web application

Then we use the output of margin_left within a CSS declaration for a list element at . The stylesheet also defines two IDs called #navAlpha and #navBeta, which are just identifiers for column divs. Within #navAlpha at , we use the output of alpha_width for the width of #navAlpha, and at , we do something analogous for #navBeta. The Results Here’s the output of stylesheet.rcss when I browse to it using Mozilla Firefox on an Ubuntu system: /* This file outputs CSS data customized by user_agent via eruby. There is a blog entry about some similar ideas at http://blog.airbladesoftware.com/2006/12/11/cssdryer-dry-up-your-css */ li { margin-left:-2.5em; } #navAlpha { position:absolute; width:11.8em; top:2em; left:2em; border:0.5em double #333; background-color:#ada; padding:1em; z-index:2; } #navBeta { position:absolute; width:15.8em; CGI a n d t h e We b 217 top:2em; right:2em; border:0.5em double #333; background-color:#ada; padding:1em; z-index:1; } You’ll notice that the appropriate values are interpolated within the li and width CSS declarations.

Using the Application At this point, we have a photo album application, as well as a decent understanding of how its component parts are organized and how they work, both individually and as part of the whole. Now let’s take a look at this app in action, starting by opening it in a web browser. Figure 13-2 shows how the default action of the Album Controller looks when I view it with the Epiphany web browser. Its appearance should differ only trivially in other graphical browsers, like Firefox or Internet Explorer. Figure 13-3 shows the appearance of the first image, as displayed by the show View of the Album Controller. Figures 13-4 and 13-5 show the appearance of the images View of the Feed Controller. Figure 13-4 shows it (again) in Epiphany, while Figure 13-5 shows it in Akregator, which is a program designed specifically for viewing RSS feeds. A Sim pl e R a ils P roj ect 257 Figure 13-2: Browsing the Album Controller Figure 13-3: Showing the first image in the Album Controller 258 C h ap te r 1 3 Figure 13-4: Browsing the RSS images in the Feed Controller with Epiphany Figure 13-5: Browsing with the Akregator RSS reader A Sim pl e R a ils P roj ect 259 Learning More About Rails This chapter has only scratched the surface of Rails.


pages: 415 words: 95,261

Map Scripting 101: An Example-Driven Guide to Building Interactive Maps With Bing, Yahoo!, and Google Maps by Adam Duvander

Firefox, Google Earth, openstreetmap, web application

Due to copyright concerns, providers tend to make it difficult to access their tiles directly. You can, however, look at the tiles that are downloaded to your browser when you access a provider's maps. Doing this will give you a better idea of how the tile system works. Though you can get at the files in a number of ways, I'll show you a very easy method using the Firefox browser and the Firebug developer add-on. You can find them at http://www.getfirefox.com/ and http://www.getfirebug.com/, respectively. In Firefox, load an embedded map, such as the one in the basic map example. Click the Firebug icon in the lower-right corner, or choose Firebug ▸ Open Firebug from the Tools menu. In the Firebug panel, click the Inspect button, which allows you to see highlighted page elements. Hover your mouse over the center of the map, and a blue border should appear around a portion of the map.


pages: 368 words: 96,825

Bold: How to Go Big, Create Wealth and Impact the World by Peter H. Diamandis, Steven Kotler

3D printing, additive manufacturing, Airbnb, Amazon Mechanical Turk, Amazon Web Services, augmented reality, autonomous vehicles, Charles Lindbergh, cloud computing, creative destruction, crowdsourcing, Daniel Kahneman / Amos Tversky, dematerialisation, deskilling, disruptive innovation, Elon Musk, en.wikipedia.org, Exxon Valdez, fear of failure, Firefox, Galaxy Zoo, Google Glasses, Google Hangouts, gravity well, ImageNet competition, industrial robot, Internet of things, Jeff Bezos, John Harrison: Longitude, John Markoff, Jono Bacon, Just-in-time delivery, Kickstarter, Kodak vs Instagram, Law of Accelerating Returns, Lean Startup, life extension, loss aversion, Louis Pasteur, low earth orbit, Mahatma Gandhi, Marc Andreessen, Mark Zuckerberg, Mars Rover, meta analysis, meta-analysis, microbiome, minimum viable product, move fast and break things, Narrative Science, Netflix Prize, Network effects, Oculus Rift, optical character recognition, packet switching, PageRank, pattern recognition, performance metric, Peter H. Diamandis: Planetary Resources, Peter Thiel, pre–internet, Ray Kurzweil, recommendation engine, Richard Feynman, ride hailing / ride sharing, risk tolerance, rolodex, self-driving car, sentiment analysis, shareholder value, Silicon Valley, Silicon Valley startup, skunkworks, Skype, smart grid, stem cell, Stephen Hawking, Steve Jobs, Steven Levy, Stewart Brand, superconnector, technoutopianism, telepresence, telepresence robot, Turing test, urban renewal,