Hacker News from Y Combinator

Syndicate content
Links for the intellectually curious, ranked by readers. // via fulltextrssfeed.com
Updated: 6 hours 12 min ago

Tim Cook Speaks Up

30 October 2014 - 7:00pm

Throughout my professional life, I’ve tried to maintain a basic level of privacy. I come from humble roots, and I don’t seek to draw attention to myself. Apple is already one of the most closely watched companies in the world, and I like keeping the focus on our products and the incredible things our customers achieve with them.

At the same time, I believe deeply in the words of Dr. Martin Luther King, who said: “Life’s most persistent and urgent question is, ‘What are you doing for others?’ ” I often challenge myself with that question, and I’ve come to realize that my desire for personal privacy has been holding me back from doing something more important. That’s what has led me to today.

For years, I’ve been open with many people about my sexual orientation. Plenty of colleagues at Apple know I’m gay, and it doesn’t seem to make a difference in the way they treat me. Of course, I’ve had the good fortune to work at a company that loves creativity and innovation and knows it can only flourish when you embrace people’s differences. Not everyone is so lucky.

While I have never denied my sexuality, I haven’t publicly acknowledged it either, until now. So let me be clear: I’m proud to be gay, and I consider being gay among the greatest gifts God has given me.

Being gay has given me a deeper understanding of what it means to be in the minority and provided a window into the challenges that people in other minority groups deal with every day. It’s made me more empathetic, which has led to a richer life. It’s been tough and uncomfortable at times, but it has given me the confidence to be myself, to follow my own path, and to rise above adversity and bigotry. It’s also given me the skin of a rhinoceros, which comes in handy when you’re the CEO of Apple.

The world has changed so much since I was a kid. America is moving toward marriage equality, and the public figures who have bravely come out have helped change perceptions and made our culture more tolerant. Still, there are laws on the books in a majority of states that allow employers to fire people based solely on their sexual orientation. There are many places where landlords can evict tenants for being gay, or where we can be barred from visiting sick partners and sharing in their legacies. Countless people, particularly kids, face fear and abuse every day because of their sexual orientation.

I don’t consider myself an activist, but I realize how much I’ve benefited from the sacrifice of others. So if hearing that the CEO of Apple is gay can help someone struggling to come to terms with who he or she is, or bring comfort to anyone who feels alone, or inspire people to insist on their equality, then it’s worth the trade-off with my own privacy.

I’ll admit that this wasn’t an easy choice. Privacy remains important to me, and I’d like to hold on to a small amount of it. I’ve made Apple my life’s work, and I will continue to spend virtually all of my waking time focused on being the best CEO I can be. That’s what our employees deserve—and our customers, developers, shareholders, and supplier partners deserve it, too. Part of social progress is understanding that a person is not defined only by one’s sexuality, race, or gender. I’m an engineer, an uncle, a nature lover, a fitness nut, a son of the South, a sports fanatic, and many other things. I hope that people will respect my desire to focus on the things I’m best suited for and the work that brings me joy.

The company I am so fortunate to lead has long advocated for human rights and equality for all. We’ve taken a strong stand in support of a workplace equality bill before Congress, just as we stood for marriage equality in our home state of California. And we spoke up in Arizona when that state’s legislature passed a discriminatory bill targeting the gay community. We’ll continue to fight for our values, and I believe that any CEO of this incredible company, regardless of race, gender, or sexual orientation, would do the same. And I will personally continue to advocate for equality for all people until my toes point up.

When I arrive in my office each morning, I’m greeted by framed photos of Dr. King and Robert F. Kennedy. I don’t pretend that writing this puts me in their league. All it does is allow me to look at those pictures and know that I’m doing my part, however small, to help others. We pave the sunlit path toward justice together, brick by brick. This is my brick.

A fast HTTP request/response parser for Common Lisp

30 October 2014 - 7:00pm

This is a fast HTTP request/response protocol parser for Common Lisp. Most parts were ported from C http-parser.

See Benchmark for the detail.


(let* ((http (make-http-request)) (parser (make-parser http :header-callback (lambda (headers) (my-app:got-headers!!! headers)) :body-callback (lambda (bytes) (my-app:got-body-piece bytes))))) (loop for http-data = (my-app:get-http-data-from-request-i-sent-out-earlier) do (multiple-value-bind (http headers-finished-p body-finished-p) (funcall parser http-data) (when body-finished-p (my-app:close-http-stream)) ...)))

Quicklisp, download it from GitHub.

$ cd ~/common-lisp/ $ git clone https://github.com/fukamachi/xsubseq $ git clone https://github.com/fukamachi/fast-http (ql:quickload :fast-http)

http-parser, a C equivalent and 1.2 times faster than picohttpparser.

http-parser (C) picohttpparser (C) fast-http 0.289s 0.163s 0.138s

the official repository.

#include <assert.h> #include <stdio.h> #include <time.h> #include "picohttpparser.h" #define REQ "GET /cookies HTTP/1.1\r\nHost:\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: en-US,en;q=0.8\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\nCookie: name=wookie\r\n\r\n" int main(void) { const char* method; size_t method_len; const char* path; size_t path_len; int minor_version; struct phr_header headers[32]; size_t num_headers; int i, ret; float start, end; start = (float)clock()/CLOCKS_PER_SEC; for (i = 0; i < 100000; i++) { num_headers = sizeof(headers) / sizeof(headers[0]); ret = phr_parse_request(REQ, sizeof(REQ) - 1, &method, &method_len, &path, &path_len, &minor_version, headers, &num_headers, 0); assert(ret == sizeof(REQ) - 1); } end = (float)clock()/CLOCKS_PER_SEC; printf("Elapsed %f seconds.\n", (end - start)); return 0; } $ make $ gcc -Wall -Wextra -Werror -O3 http_parser.o bench.c -o bench $ bench Elapsed 0.163665 seconds.

LG G Watch R – New Round Smartwatch by LG

30 October 2014 - 7:00pm
LG G Watch R | powered by android wear

  • LG G Watch R
    Official Product Video

  • LG G Watch R
    Official Teaser

  • IFA 2014 LG - G Watch R Presentation

  • IFA 2014 LG - G Watch R

Display 1.3-inch Full Circle P-OLED AP Qualcomm® Snapdragon™ 400, 1.2GHz OS Android Wear Network BT 4.0 Memory 4GB eMMC / 512MB RAM Battery 410mAh Size 46.4 x 53.6 x 9.7 mm (Bezel Ring included 11.1mm) Weight 62g Sensor 9-Axis (Gyro, Accelerometer, Compass),
PPG(Hear rate monitor), Barometer Resistance Dust & Water Resistant (IP67) Band Type Changeable Camera None

PgOSQuery: Expose the operating system as a Postgres database

30 October 2014 - 7:00pm


http://multicorn.org/#installation for multicorn installation)

CREATE DATABASE pgosquery; \c pgosquery; CREATE EXTENSION multicorn;

Create a FDW table for PgOSQuery:

CREATE SERVER pgosquery_srv foreign data wrapper multicorn options ( wrapper 'pgosquery.PgOSQuery' ); CREATE FOREIGN TABLE processes ( pid integer, name character varying, username character varying ) server pgosquery_srv options ( tabletype 'processes' ); CREATE FOREIGN TABLE listening_ports ( pid integer, address character varying, port integer ) server pgosquery_srv options ( tabletype 'listening_ports' );

Select data:

-------------------------------------------------------- -- get the name, pid and attached port of all processes -- which are listening on all interfaces -------------------------------------------------------- SELECT DISTINCT process.name, listening.port, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid WHERE listening.address = ''; name | port | pid ----------+------+------ postgres | 5432 | 6932 (1 row)



columns: pid, address, port

Microsoft Band

30 October 2014 - 7:00am

Microsoft Health is a new service that helps you live healthier by providing actionable insights based on data gathered from the fitness devices and apps that you use every day. It's designed to work for you, no matter what phone you have, device you wear, or services you use. Microsoft Health makes tracking personal fitness easier, more insightful, and more holistic.

Walk through a 3D model of Y Combinator

30 October 2014 - 7:00am

Back in the beginning of 2012, when we started the Y Combinator startup accelerator program, we had a very basic demo of a 3D reconstruction system that could make 3D models of objects.  Our demo was impressive at the time, but we were starting to get feedback from potential customers that the market for capturing spaces might be much bigger than the market for capturing objects.

However, there was a massive leap in complexity between capturing an object and capturing an entire building – a leap big enough that it would take almost a year of additional product development to make it possible.  The YC partners encouraged us to find the quickest path to test our theory that capturing buildings was the right market to go after.

We ended up finding the fastest, hackiest way we could come up with to start making automatic 3D models of whole buildings.  After throwing out considerations of cost, portability, speed, and ease of use, we managed to put something together that worked. The hardware was an awkward pile of wires and equipment on a tripod, with a desktop computer on a cart in tow.  However, we were able to start making 3D models of spaces, including the entire Y Combinator building at the time.

You can check out this 3D model from back in the day at https://vimeo.com/39083029 – it took over 20 hours for us to capture it.  It turned out that, yes, the market wants 3D models of buildings.  It wants them a lot.

Two years later, we came back to capture the new YC.  Our camera is now sleek, standalone, and easy to use, with real time feedback for users and a final 3D model that’s viewable via WebGL.  It took just a couple of hours to capture the much larger new YC office in 3D.  Have a look!

Our model quality has changed a lot in 2 years as well.  Then vs now:



You can check out some other examples of our work and our customers’ work at http://matterport.com/try/

Also, we’re actively hiring for a range of positions, so if you want to help make our product even better, check us out at http://matterport.com/jobs/

Visualizing hex bytes with Unicode emoji

30 October 2014 - 7:00am

Memorizing SSH public key fingerprints can be difficult; they're just long strings of random hexadecimal numbers. There are some terminal-friendly solutions, like OpenSSH's randomart. But because I use a Unicode terminal, I like to map the individual bytes into characters in the Miscellaneous Symbols and Pictographs block.

What's happening here? First we create a 256-element array containing a hand-picked collection of emoji. Naturally, they're all assigned an index from 0x00 to 0xff. Then we'll loop through standard input and look for lines containing colon-separated hex bytes. Each hex value is replaced with an emoji from the array.

Here's the output:

The script could be extended to support output from other hex sources as well, such as hexdump:

What Does an Idle CPU Do?

30 October 2014 - 7:00am

In the last post I said the fundamental axiom of OS behavior is that at any given time, exactly one and only one task is active on a CPU. But if there’s absolutely nothing to do, then what?

It turns out that this situation is extremely common, and for most personal computers it’s actually the norm: an ocean of sleeping processes, all waiting on some condition to wake up, while nearly 100% of CPU time is going into the mythical “idle task.” In fact, if the CPU is consistently busy for a normal user, it’s often a misconfiguration, bug, or malware.

Since we can’t violate our axiom, some task needs to be active on a CPU. First because it’s good design: it would be unwise to spread special cases all over the kernel checking whether there is in fact an active task. A design is far better when there are no exceptions. Whenever you write an if statement, Nyan Cat cries. And second, we need to do something with all those idle CPUs, lest they get spunky and, you know, create Skynet.

So to keep design consistency and be one step ahead of the devil, OS developers create an idle task that gets scheduled to run when there’s no other work. We have seen in the Linux boot process that the idle task is process 0, a direct descendent of the very first instruction that runs when a computer is first turned on. It is initialized in rest_init, where init_idle_bootup_task initializes the idle sheduling class.

Briefly, Linux supports different scheduling classes for things like real-time processes, regular user processes, and so on. When it’s time to choose a process to become the active task, these classes are queried in order of priority. That way, the nuclear reactor control code always gets to run before the web browser. Often, though, these classes return NULL, meaning they don’t have a suitable process to run – they’re all sleeping. But the idle scheduling class, which runs last, never fails: it always returns the idle task.

That’s all good, but let’s get down to just what exactly this idle task is doing. So here is cpu_idle_loop, courtesy of open source:

cpu_idle_loop 1 2 3 4 5 while (1) { while(!need_resched()) { cpu_idle_call(); } }

I’ve omitted many details, but if you read the code you’ll get the gist of it: as long as there’s no need to reschedule, meaning change the active task, stay idle. Measured in elapsed time, this loop and its cousins in other OSes are probably the most executed pieces of code in computing history. For Intel processors, staying idle traditionally meant running the halt instruction:

native_halt 1 2 3 4 static inline void native_halt(void) { asm volatile("hlt": : :"memory"); }

hlt stops code execution in the processor and puts it in a halted state. It’s weird to think that across the world millions and millions of Intel-like CPUs are spending the majority of their time halted, even while they’re powered up. It’s also not terribly efficient, energy wise, which led chip makers to develop deeper sleep states for processors, which trade off less power consumption for longer wake-up latency. The kernel’s cpuidle subsystem is responsible for taking advantage of these power-saving modes.

Now once we tell the CPU to halt, or sleep, we need to somehow bring it back to life. If you’ve read the last post, you might suspect interrupts are involved, and indeed they are. Interrupts spur the CPU out of its halted state and back into action. So putting this all together, here’s what your system mostly does as you read a fully rendered web page:

Other interrupts besides the timer interrupt also get the processor moving again. That’s what happens if you click on a web page, for example: your mouse issues an interrupt, its driver processes it, and suddenly a process is runnable because it has fresh input. At that point need_resched returns true, and the idle task is booted out in favor of your browser.

But let’s stick to idleness in this post. Here’s the idle loop over time:

In this example the timer interrupt was programmed by the kernel to happen every 4 milliseconds (ms). This is the tick period. That means we get 250 ticks per second, so the tick rate or tick frequency is 250 Hz. That’s a typical value for Linux running on Intel processors, with 100 Hz being another crowd favorite. This is defined in the CONFIG_HZ option when you build the kernel.

Now that looks like an awful lot of pointless work for an idle CPU, and it is. Without fresh input from the outside world, the CPU will remain stuck in this hellish nap getting woken up 250 times a second while your laptop battery is drained. If this is running in a virtual machine, we’re burning both power and valuable cycles from the host CPU.

The solution here is to have a dynamic tick so that when the CPU is idle, the timer interrupt is either deactivated or reprogrammed to happen at a point where the kernel knows there will be work to do (for example, a process might have a timer expiring in 5 seconds, so we must not sleep past that). This is also called tickless mode.

Finally, suppose you have one active process in a system, for example a long-running CPU-intensive task. That’s nearly identical to an idle system: these diagrams remain about the same, just substitute the one process for the idle task and the pictures are accurate. In that case it’s still pointless to interrupt the task every 4 ms for no good reason: it’s merely OS jitter slowing your work ever so slightly. Linux can also stop the fixed-rate tick in this one-process scenario, in what’s called adaptive-tick mode. Eventually, a fixed-rate tick may be gone altogether.

That’s enough idleness for one post. The kernel’s idle behavior is an important part of the OS puzzle, and it’s very similar to other situations we’ll see, so this helps us build the picture of a running kernel. More next week, RSS and Twitter.

Osquery: Expose the operating system as a relational database

30 October 2014 - 7:00am

Maintaining real-time insight into the current state of your infrastructure is important. At Facebook, we've been working on a framework called osquery which attempts to approach the concept of low-level operating system monitoring a little differently.

Osquery exposes an operating system as a high-performance relational database. This design allows you to write SQL-based queries efficiently and easily to explore operating systems. With osquery, SQL tables represent the current state of operating system attributes, such as:

  • running processes
  • loaded kernel modules
  • open network connections

SQL tables are implemented via an easily extendable API. Several tables already exist and more are being written. To best understand the expressiveness that is afforded to you by osquery, consider the following examples.

Example queries

This first example illustrates how you might use osquery to interact with the processes that are running on the current system. Specifically, this query returns all of the processes which are currently executing. The where clause of the query only returns processes where the original binary used to launch the process no longer exists on the filesystem. This is a common tactic used by malicious actors, so this should not return any results on your system, assuming your system isn't compromised.

SELECT name, path, pid FROM processes WHERE on_disk = 0;

Interacting with operating system state via SQL is fun and easy. One of the aspects of SQL that makes it so applicable to operating system analytics is the ability to join different tables together. Consider the following example, which uses data from both the “listening_ports” table and the “processes” table. This query finds all processes that are listening on network ports. Then, using the processes table from the last example, we can join the two tables together since they both expose the pid of the processes in question. This allows you to use generic tables to add context as you explore operating system state.

SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;

There are many tables included with osquery and we're creating more every day. Tables are easy to write, so we often encourage new contributors to develop a few tables as an introduction to the osquery codebase. For detailed documentation on how to create a table, see the guide on the wiki.


Osquery is a framework we've used to create a few products and tools. Osquery's modular codebase allows us to take advantage of existing concepts in new and interesting ways. We're releasing several tools as a part of the open source release and we have more planned. We're also looking forward to seeing how the community uses the codebase to create even more interesting tools.

Interactive query console

The interactive query console, osqueryi, gives you an SQL interface to try out new queries and explore your operating system. With the power of SQL and dozens of useful tables built-in, osqueryi is an invaluable tool when diagnosing a systems operations problem, troubleshooting a performance issue, etc.

For more information on how to use osqueryi, see the usage guide on the wiki.

Large-scale host monitoring

The high-performance host monitoring daemon, osqueryd, allows you to schedule queries for execution across your infrastructure. The daemon takes care of aggregating the query results over time, and generates logs which indicate state changes in your infrastructure. You can use this to maintain insight into the security, performance, configuration and state of your entire infrastructure. Osqueryd's logging can integrate into your existing internal log aggregation pipeline, regardless of your technology stack, via a robust plugin architecture.

If you're interested in using osqueryd in your infrastructure, see the usage guide on the wiki as well as the internal deployment guide.

Cross platform

Osquery is cross platform. Even though osquery takes advantage of low-level operating system APIs, you can build and use osquery on Ubuntu, CentOS and Mac OSX. This has the distinct advantage of allowing you to monitor your corporate Mac OS X clients the same way you monitor your production Linux servers.

Native packages and extensive documentation

To make deployment as easy as possible, osquery comes with native packages for all supported operating systems. There's extensive tooling and documentation around creating packages, so packaging and deploying your custom osquery tools can be just as easy, too.

To assist with the rollout process, the osquery wiki has detailed documentation on internal deployment. Osquery was built so that every environment specific aspect of the toolchain can be hot-swapped at run-time with custom plugins. Use these interfaces to deeply integrate osquery into your infrastructure if one of the several existing plugins don't suit your needs.

You can find out more in the osquery wiki.

Modular codebase

Osquery's codebase is made up of high-performance, modular components with documented public APIs. These components can be easily strung together to create new, interesting applications and tools. For information on the public API, see the wiki.

Open source

After talking with several external companies, it became clear to us that maintaining insight into the low-level behavior of operating systems is not a problem which is unique to Facebook. Over the past few months, we have released the osquery code and binaries to a small number of external companies. They have successfully deployed and tested osquery within their environments and they've given us great feedback.

We're excited to announce that we're open sourcing osquery today. You can check out the code and documentation on GitHub.

We're looking forward to interacting with the community on future features. We do all of our work on osquery via GitHub, which makes working with external contributors a breeze. We hope you'll see the potential in osquery and will build something amazing with us.

The osquery team within Facebook consists of Mike Arpaia, Ted Reed, Mimeframe and Javier Marcos de Prado.


30 October 2014 - 7:00am
Sprout | HP® Official Site
  • Sprout
  • hands of time

Chromeless Video Player

We believe hands can do amazing things. What will you do with yours?watch the video meet sprout

Blending the physical and digital worlds that you live in, Sprout unleashes your creativity like never before.

take a tour

Chromeless Video Player

sprout features

A creativity station. A fully functioning PC. Whatever you want to call it, Sprout can do it.

watch the video
  • Chromeless Video Player

    see what's possible

    Sprout gives you all the tools to express yourself and get work done.

  • Chromeless Video Player

    reimagine how you can sell

    Collaborate with your customers like never before - demonstrate and adapt to close the deal even faster.

  • Chromeless Video Player

    reimagine how you can teach

    make teachign even more dynamic. Sprout's unique workspace helps you engage learning in a whole new dimension.

  • Chromeless Video Player

    reimagine how you can present

    A fully functional PC that enables you to blend imagery and customized creative into more powerful presentations, with a flick of the finger.

  • Chromeless Video Player

    reimagine how you can play

    Experience gameplay and learning in a whole new way with Sprout's unique two screen experience.

  • Chromeless Video Player

    reimagine how you can create

    Bring your ideas to life with instant capture of 3D objects.

  • reimagine how you can sell

    Collaborate with your customers like never before - demonstrate and adapt to close the deal even faster.

    Chromeless Video Player

  • reimagine how you can teach

    Make lesson time even more dynamic. Sprout's unique workspace helps you teach in a whole new dimension.

    Chromeless Video Player

  • reimagine what you can do

    Bring ideas to life like never before. Sprout's dual-screen multi-touch experience and capture of 3D objects means you don't just see your idea, you can touch, move, manipulate and share it. Making your ideas real is now so easy.

    Chromeless Video Player

  • reimagine how you can present

    A fully functional PC that enables you to blend imagery and your ideas into more powerful presentations with the flick of a finger.

    Chromeless Video Player

  • reimagine how you can play

    Experience gameplay and learning in a whole new way with Sprout's unique two-screen experience.

    Chromeless Video Player

  • reimagine how you can create

    Bring your ideas to life with instant capture of 3D objects.

    Chromeless Video Player

  • StoryProducer DreamWorks Ed

    Take control of the action and create DreamWorks Animation movie scenes YOUR way.

  • Crayola Color Draw & Sing

    Draw and color with music! A fun, creative, and educational experience for kids!

  • Martha Stewart CraftStudio

    Create print and share personalized cards, invitations, scrapbook pages and more!

  • PowerDirector

    Turn your family memories into all-time favorite movies.

  • Trine 2: Complete Story

    Join the Three Heroes in their magical adventure!

  • Spruzzle

    Instandly capture your own photo, art, or project to create your own unique timeless puzzle.

  • Infinite Scuba ®

    Explore the ocean from home!

  • Teslagrad (Demo)

    Try Teslagrad. A beautiful steampunk platformer.

  • Pianotime

    Piano Time is a multi-touch virtual piano application with engaging features.

  • Castle Crashers (Demo)

    Fight your way to victory in this 2D arcade adventure!

  • Fuse Character Creator

    Create the unique character you want for your next project.

sprout apps

Apps developed specifically for Sprout's unique technology.

  • StoryProducer DreamWorks Ed

    Take control of the action and create DreamWorks Animation movie scenes YOUR way.

  • Crayola Color Draw & Sing

    Draw and color with music! A fun, creative, and educational experience for kids!

  • Martha Stewart CraftStudio

    Create print and share personalized cards, invitations, scrapbook pages and more!

  • PowerDirector

    Turn your family memories into all-time favorite movies.

  • Trine 2: Complete Story

    Join the Three Heroes in their magical adventure!

  • Spruzzle

    Instandly capture your own photo, art, or project to create your own unique timeless puzzle.

  • Infinite Scuba ®

    Explore the ocean from home!

  • Teslagrad (Demo)

    Try Teslagrad. A beautiful steampunk platformer.

  • Pianotime

    Piano Time is a multi-touch virtual piano application with engaging features.

  • Castle Crashers (Demo)

    Fight your way to victory in this 2D arcade adventure!

  • Fuse Character Creator

    Create the unique character you want for your next project.

Sprout Stories

See how Sprout inspires creativity and collaboration.

  • joshua davis

    Artist and digital wizard Joshua Davis is pretty pumped about what Sprout can mean for the world of digital art.

    Chromeless Video Player

  • todd selby

    Photographer, illustrator, and newfound cat-lover Todd Selby is using Sprout to reimagine what's possible in his home studio.

    Chromeless Video Player

  • jacob brown

    The magazine industry is changing and the team at BlackBook is using Sprout to not just keep up with the conversations online, but lead them.

    Chromeless Video Player

product specificationsOperating System Windows 8.1 HP Illuminator HP Illuminator, powered by the HP DLP Projector, the HP High-Resolution Camera with up to 14.6 megapixel resolution and the Intel® RealSense™ 3D Camera for instant capture of 2D and 3D objects, along with an LED desk lamp HP Touch Mat 20" diagonal, 20-point touch-enabled touch mat with an ultra-resistant top coating Stylus Adonit Jot Pro stylus to write and draw comfortably. It can be attached magnetically to the upper-right side of the Sprout display. Processor 4th generation Intel® Core™ i7-4790S Processor Graphics NVIDIA GeForce GT 745A with 2GB DDR3 dedicated memory Integrated display 23" diagonal, 10-point touch-enabled, Full HD (1920x1080) Wide Viewing Angle, White-LED backlit LCD Display Memory 8GB PC3-12800 DDR3-1600 SDRAM memory2x4GB (expandable to 16GB) Hybrid drive 1TB SATA 6G Solid State Hybrid Drivewith 8GB flash acceleration cache offers SSD-like Speed & HDD capacity Webcam HP High Definition 1MP Webcam Sound DTS Sound™ Wireless 10/100/1000 Base-T Network and Integrated Bluetooth® 4.0 and Wireless LAN 802.11a/b/g/n featuring Dual-band (2.4GHz and 5GHz) 2x2 MIMO technology USB ports Dual USB 2.0 ports and dual USB 3.0 ports, including a powered port to charge phones or other USB devices Memory Card Reader HP 3-in-1 Media Card Reader - Supports SD, SDHC, SDXC Keyboard and mouse Premium wireless chiclet-style keyboard with volume control, Windows 8 hot keys and optical mouse sprout workspace The app for capturing, creating and sharing your ideas reimagine what you can do

buy now

accessories blended reality

A way to humanize technology and make it more tangible, allowing us to grab things, mash things and make something even better.

learn more Blended Reality

A way to humanize technology and make it more tangible, allowing us to grab things, mash things and make something even better.

see the specs

stay in the loop,
get the newsletter

sign up now

need a hand?

contact us

calling all app developers

create an app

Bootstrap 3.3.0 and Bootstrap 4

29 October 2014 - 7:00pm
29 Oct 2014

Bootstrap 3.3.0 is here! This release has been all about bug fixes, accessibility improvements, and documentation updates. We’ve had over 700 commits from 28 contributors since our last release. Woohoo!

Here are some of the highlights:

  • Added a handful of new Less variables for easier customization.
  • Removed recent progress bar changes for low percentages.
  • Removed all instances of translate3d as they improved repaint performance, but also added several cross browser bugs.
  • Added transforms to improve carousel performance in modern browsers.
  • Updated Normalize.css and our H5BP print styles to their latest releases.
  • Improved accessibility for navs, panels, tooltips, buttons, and more.
  • Resolved dozens of JavaScript and documentation bugs.

For a complete breakdown, read the release changelog or the v3.3.0 milestone.

Download Bootstrap

Download the latest release—source code, compiled assets, and documentation—as a zip file directly from GitHub:

Download Bootstrap 3.3.0

Hit the project repository or Sass repository for more options. Also, remember we’re available on npm, too.

An update for the Bootstrap CDN will be available shortly.

Since our last release, we’ve open sourced two new tools:

  • Bootlint, a custom linter for all your Bootstrap projects.
  • Rorschach, a bot for checking new pull requests for common mistakes.

They join LMVTFY, our bot for quickly validating HTML in live examples. As the project, team, and community continue to grow, look for even more awesome tools to be open sourced.

Onward to Bootstrap 4

Perhaps the best part of releasing v3.3.0 today is that we can start to tell you more about Bootstrap 4! While the first alpha is a couple weeks off, here’s a quick preview of what’s to come:

  • Updated grid system with at least one additional tier for handheld devices.
  • A brand new component to replace panels, thumbnails, and wells.
  • A completely new, simpler navbar.
  • Switch all pixel values over to rems and ems for easier and better type and component sizing.
  • Dropped support for IE8.
  • Tons of form updates, including custom form controls.
  • New component animations and transitions for several components.
  • UMD support throughout our JavaScript plugins.
  • Improved JavaScript positioning for tooltips, popovers, and dropdowns.
  • Brand new documentation (written in Markdown, too!).
  • A new approach to configuring global theming options.
  • And hundreds more changes across the board.

We’d love to tell you more, but the dust still has to settle before we open our first pull request with a live alpha release. In addition to launching in v4 in the coming months, we’ll be maintaining v3 with small bugfixes for the first few months after the new version ships.


@mdo & team

© 2014. All rights reserved.

This is why I can't have conversations using Twitter

29 October 2014 - 7:00am
antirez 26 minutes ago. Yesterday Stipe engineers wrote a detailed report of why they had an issue with Redis. This is very appreciated. In the Hacker News thread I explained that because now we have diskless replication (http://antirez.com/news/81) now persistence is no longer mandatory for people having a master-slaves replicas set. This changes the design constraints: now that we can have diskless replicas synchronization, it is worth it to better support the Stipe (ex?) use case of replicas set with persistence turned down, in a more safe way. This is a work in progress effort. In the same post Stripe engineers said that they are going to switch to PostgreSQL for the use case where they have issues with Redis, which is a great database indeed, and many times if you can go with the SQL data model and an on-disk database, it is better to use that instead of Redis which is designed for when you really want to scale to a lot of complex operations per second. Stripe engineers also said that they measured the 99th percentile and it was better with PostgreSQL compared to Redis, so in a tweet @aphyr wrote: “Note that *synchronous* Postgres replication *between AZs* delivers lower 99th latencies than asynchronous Redis” And I replied: “It could be useful to look at average latency to better understand what is going on, since I believe the 99% percentile is very affected by the latency spikes that Redis can have running on EC2.” Which means, if you have also the average, you can tell if the 99th percentile is ruined (or not) by latency spikes, that many times can be solved. Usually it is as simple as that: if you have a very low average, but the 99th percentile is bad, likely it is not that Redis is running slow because, for example, operations performed are very time consuming or blocking, but instead a subset of queries are served slow because of the usual issues in EC2: fork time in certain instances, remote disks I/O, and so forth. Stuff that you can likely address, since for example, there are instance types without the fork latency issue. For half the Twitter IT community, my statement was to promote the average latency as the right metric over 99th percentiles: "averages are the worst possible metric for latency. No latency I've ever seen falls on a bell curve. Averages give nonsense." "You have clearly not understood how the math works or why tail latencies matter in dist sys. I think we're done here." “indeed; the problem is that averages are not robust in the presence of outliers” Ehm, who said that average is a good metric? I proposed it to *detect* if there are or not big outliers. So during what was supposed to be a normal exchange, I find after 10 minutes my Twitter completely full of people that tell me that I’m an idiot to endorse averages as The New Metric For Latency in the world. Once you get the first retweets, you got more and more. Even a notable builder of other NoSQL database finds the time to lecture me a few things via Twitter: I reply saying that clearly what I wrote was that if you have 99th + avg you have a better picture of the curve and can understand if the problem is the Redis spikes on EC2, but magically the original tweet gets removed, so my tweets are now more out of context. My three tweets: 1. “may point was, even if in the internet noise I'm not sure if it is still useful, that avg helps to understand why (…)” 2. “the 99% percentile is bad. If avg is very good but 99% percentile is bad, you can suspect a few very bad samples” 3. “this is useful with Redis, since with proper config sometimes you can improve the bad latency samples a lot.” Guess what? There is even somebody that isolated tweet #2 that was the continuation of “to understand why the 99% percentile is bad” (bad as in, is not providing good figures), and just read it out of context: “the 99% percentile is bad”. Once upon a time, people used to argue for days on usenet, but at least there was, most of the times, an argument against a new argument and so forth, with enough text and context to have a normal condition. This instead is just amplification of hate and engineering rules 101 together. 99th latency is the right metric and average is a poor one? Make sure to don’t talk about averages even in a context where it makes sense otherwise you get 10000 shitty replies. What to do with that? Now a good thing about me is that I’m not much affected by all this personally, but it is also clear that because I use Twitter for a matter of work, in order to inform people of what is happening with Redis, this is not a viable working environment. For example, latency: I care a lot about latency, so many efforts were done during the years in order to improve it (including diskless replication). We have monitoring as well in order to understand if and why there are latency spikes, Redis can provide you an human readable report of what is happening inside of it by monitoring different execution paths. After all this work, what you get instead is the wrong message retweeted one million times, which does not help. Most people will not follow the tweets to make an idea themselves, the reality is, at this point, rewritten: I said that average percentile is good and I don’t realize that you should look at the long tail. Next time I’ll talk about latency, for many people, I’ll be the one that has a few non clear ideas about it, so who knows what I’m talking about or what I’m doing? At the same time Twitter is RSS for humans, it is extremely useful to keep many people updated about what I love to do, which is, to work to my open source project that so far I tried to develop with care. So I’m trying to think about what a viable setup can be. Maybe I can just blog more, and use the Redis mailing list more, and use Twitter just to link stuff so that interested people can read, and interested people can argue and have real and useful discussions. I’ve a lot of things to do about Redis, for the users that have a good time with it, and a lot of things to do for the users that are experiencing problems. I feel like my time is best spent hacking instead of having non-conversations on Twitter. I love to argue, but this is just a futile exercise.

Please enable JavaScript to view the comments powered by Disqus.

blog comments powered by

The new archive.org

29 October 2014 - 7:00am
Internet Archive Announcements

Invitation to the Internet Archive Annual Event

Building Libraries Together: New Tools for a New Direction

Building Music Libraries


Moving Image Archive

1.8M Items


&lt;span style="font-size:125%;"&gt;&lt;b&gt;Download or listen to free movies, films, and...

Audio Archive

2.1M Items


&lt;span style="font-size:125%;"&gt;&lt;b&gt;Download or listen to free music and...

Community Audio

1.6M Items



eBooks and Texts

6.9M Items


&lt;p&gt;&lt;img src="/download/texts/texts_archive.jpg"25%" max-width="25%" style="float:right; padding: 0...

Community Video

414,954 Items


You are invited to view or upload your videos to the Community collection. These thousands of videos were contributed by Archive users and community...

American Libraries

2.1M Items


&lt;table border="0" cellpadding="2" cellspacing="10"&gt; &lt;tr&gt; &lt;td colspan="2"...


881,416 Items


This library contains digital images uploaded by Archive users which range from maps to astronomical imagery to photographs of artwork. Many of these...

Live Music Archive

133,962 Items


Welcome to Internet Archive's Live Music library. &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwiki.etree.org"&gt;etree.org&lt;/a&gt; is a community...

The LibriVox Free Audiobook Collection

8,157 Items


The LibriVox Free Audiobook Collection

&lt;p&gt;LibriVox - founded in 2005 - is a community of volunteers from all over the world who record public domain texts: poetry, short...

Electric Sheep

358 Items


Electric Sheep is a distributed computing project for animating and evolving fractal flames, which are in turn distributed to the networked...

Community Spirituality &amp; Religion

104,856 Items


Community Spirituality &amp; Religion

&lt;p&gt; These religion and spirituality videos were all contributed by Archive users! &lt;/p&gt;

Community Texts

534,253 Items



Canadian Libraries

469,259 Items


See a &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.archive.org%2Fbrowse.php%3Ffield%3D%2Fmetadata%2Fsubject%26amp%3Bamp%3Bcollection%3Dtoronto%26amp%3Bamp%3Bview%3Dcloud"&gt;Tag...

Prelinger Archives

6,452 Items


View thousands of films from the Prelinger Archives! &lt;p&gt; Prelinger Archives was founded in 1983 by Rick Prelinger in New York City....


56,519 Items


Welcome to the Netlabels collection at the &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=%2F"&gt;Internet Archive&lt;/a&gt;. This collection hosts complete,...

University of Toronto - Robarts Library

205,000 Items


University of Toronto - Robarts Library

&lt;img src="http://www.archive.org/download/robarts/robarts_pic.gif"&gt; &lt;p&gt;Books from the University of Toronto,...

California Digital Library

191,450 Items


California Digital Library

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.cdlib.org"&gt;&lt;img src="../download/cdl/cdl.jpg"...

Community Media

120,282 Items


A collection of media donated by individuals to the Internet Archive.

Speed Runs

3,605 Items


&lt;p&gt;Speed running (trying to complete a videogame in the fastest time possible) is almost as old as gaming itself. At least, it's almost...

Grateful Dead

9,892 Items


&lt;img src="../download/GratefulDead/gdmain3.jpg"&gt; &lt;br /&gt; &lt;b&gt;Welcome to the Grateful Dead...

Feature Films

3,911 Items


&lt;p&gt;Feature films, &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.archive.org%2Fdetails%2Fshort_films"&gt;shorts&lt;/a&gt;, &lt;a...

Iraq War: Non-English Language Videos

36,414 Items


Iraq War: Non-English Language Videos

&lt;p&gt;This collection contains user-submitted videos that are primarily from Middle Eastern sources. The Internet Archive has not reviewed...

Old Time Radio

2,364 Items


&lt;p&gt;You are invited to listen to and download Old Time Radio shows here!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;OTR...

Biodiversity Heritage Library

98,814 Items


Biodiversity Heritage Library

&lt;div align="center"&gt; &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.biodiversitylibrary.org"&gt;&lt;img border="0"...

Television Archive

714,414 Items


Files pulled from &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=https%3A%2F%2Farchive.org%2Ftv"&gt;TV News Archive&lt;/a&gt; for research and educational purposes.

Television Archive News Search Service

705,150 Items


Television Archive News Search Service

Items included in the Television News search service.

Universal Library

107,312 Items


The Universal Library Project, sometimes called the Million Books Project, was pioneered by Jaime Carbonell, Raj Reddy, Michael Shamos, Gloriana St...

European Libraries

207,838 Items


The Boston Library Consortium

73,201 Items


The Boston Library Consortium

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.blc.org%2F"&gt;&lt;img src='http://www.archive.org/download/blc/logo.jpg' border='0'...

The Library of Congress

145,011 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.loc.gov"&gt;&lt;img border="0"...


167,361 Items


&lt;p&gt;&lt;b&gt;Take a picture, it will last longer&lt;/b&gt;&lt;br /&gt; As books become old and begin to fall...

Data Collection

110,912 Items


Cornell University Library

74,252 Items


Cornell University Library

These books, the originals of which are in the &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.library.cornell.edu%2F"&gt;Cornell University...

The Iraq War Collection

18,177 Items


&lt;p&gt;A compilation of videos from Internet Archive users about the Iraq War and the issues and events surrounding it are collected...

Internet Records

0 Items


Digital and digitized music albums from Internet record collectors spanning from LP's to web releases.

Short Format Films

2,850 Items


Short Format Films contributed by users.&lt;/p&gt; &lt;p&gt;View a list of all the &lt;a...

Project Gutenberg

36,352 Items


&lt;table border="0" cellspacing="10" cellpadding="2"&gt; &lt;tr&gt; &lt;td colspan="2"...

78 RPMs &amp; Cylinder Recordings

13,285 Items


78 RPMs &amp; Cylinder Recordings

&lt;p&gt;Listen to this collection of 78rpm records and cylinder recordings released in the early 20th century. These recordings were...

Sci-Fi / Horror

446 Items


Science Fiction and Horror films: monsters and aliens, space and time travel, experiments gone wrong, unimagined disasters.

The Internet Archive Software Collection

87,157 Items


The Internet Archive Software Collection

&lt;b&gt;The Internet Archive Software Collection is the largest vintage and historical software library in the world, providing instant...

RECAP US Federal Court Documents

1.1M Items


RECAP US Federal Court Documents

The documents in this collection are from the US Federal Courts. A large collection come from the federal government's project for &lt;a...

Boston Public Library

45,272 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.bpl.org%2F"&gt;&lt;img src="../download/bostonpubliclibrary/bpl-lg.gif"...

Phil Lesh and Friends

1,814 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Compact Disc collection

0 Items


This is an archive of works published on &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCompact_Disc"&gt;Compact Audio...

Allen County Public Library

82,063 Items


Allen County Public Library

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.acpl.lib.in.us%2F"&gt;&lt;img src="../download/allen_county/acpl.png"...

Comedy Films

312 Items


"All I need to make a comedy is a park, a policeman and a pretty girl." - Charlie Chaplin


8,729 Items


Welcome to FedFlix, &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fresource.org%2Fntis_agreement.html"&gt;Joint Venture NTIS-1832&lt;/a&gt; between the...

Disco Biscuits

1,343 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

String Cheese Incident

1,426 Items


Michael Kang - electric mandolin, acoustic mandolin, violin&lt;br&gt; Bill Nershi - six string acoustic guitar&lt;br&gt; Keith...

The Medical Heritage Library

63,029 Items


The Medical Heritage Library

&lt;p&gt; &lt;div align="center"&gt; &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.medicalheritage.org%2F"&gt;&lt;img...


3,005 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

University of Toronto - Gerstein Science Information Centre

26,483 Items


University of Toronto - Gerstein Science Information Centre

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.library.utoronto.ca%2Fgerstein%2F"&gt;&lt;img src="../download/gerstein/gerstein.JPG"...

Animation Shorts

1,034 Items


&lt;p&gt;This collection contains short format cartoons and animation (full length animated movies can be found in the &lt;a...

University of Ottawa

55,076 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.biblio.uottawa.ca%2Findex-e.php"&gt;&lt;img border="0"...

Daisy Books for the Print Disabled

261 Items


Daisy Books for the Print Disabled

&lt;p&gt;For our patrons that have a difficult time reading text, we are making our &lt;a...

New York Public Library

137,320 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.nypl.org%2F"&gt;&lt;img src="../download/newyorkpubliclibrary/nypl.JPG"...

Classic TV

3,250 Items


&lt;p&gt;Bringing you classic television shows submitted by Internet Archive users since July 9th, 2007.&lt;/p&gt;...

Smashing Pumpkins

1,048 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...


10,718 Items


&lt;A href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.mblwhoilibrary.org%2F"&gt;&lt;img src="../download/MBLWHOI/mblwhoi.JPG"...

Yonder Mountain String Band

1,560 Items


Yonder Mountain String Band

Yonder Mountain String Band is:&lt;br&gt; Jeff Austin - Mandolin, Vocals&lt;br&gt; Ben Kaufmann - Bass, Vocals&lt;br&gt; Dave...


59,910 Items


&lt;br/&gt;Download USGS DRG maps of the 50 states. These maps are best used with global positioning software or a map viewer....

Government Documents

55,915 Items


This collection contains digital versions of United States Government documents as well as other government documents. &lt;br&gt;


1,217 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Silent Films

720 Items


A collection of &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.archive.org%2Fdetails%2Ffeature_films"&gt;feature&lt;/a&gt; or &lt;a...

Sound Tribe Sector 9

647 Items


&lt;td width="600" valign="top"&gt; &lt;span style="font-size:200%;"&gt;&lt;b&gt;Sound Tribe...

Umphreys McGee

2,265 Items


&lt;td width="600" valign="top"&gt; &lt;span style="font-size:200%;"&gt;&lt;b&gt;Umphreys...

Internet Archive Books

16,336 Items


Books contributed by the Internet Archive.

University of Toronto - John M. Kelly Library

15,135 Items


University of Toronto - John M. Kelly Library

&lt;img src="http://www.archive.org/download/kellylibrary/kelly_pic.gif"&gt; &lt;p&gt;Books from the &lt;a...

Blues Traveler

1,133 Items


Limited Flag: LimRange + NoSBD&lt;p&gt; Blues Traveler is:&lt;br&gt; John Popper (Vocals and Harmonica)&lt;br&gt; Chan...

Keller Williams

875 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis.

Clinical Archives

531 Items


"CLINICAL ARCHIVES IS ABOUT EXPANDING THE DEFINITION OF MUSIC" &lt;br&gt; This is independent netlabel for eclectic and illogical...

NASA Images

198,513 Items


&lt;img src="../download/nasa/globe_west_540.jpg" height="270" width="270"/&gt;&lt;/center&gt;...


407 Items


&lt;span style="font-size:200%;"&gt;&lt;b&gt;Cracker&lt;/b&gt;&lt;/span&gt;&lt;br/&gt; Cracker, the...


540 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

JSTOR Early Journal Content

451,801 Items


JSTOR Early Journal Content

&lt;p&gt;The JSTOR Early Journal Content is a selection of journal materials published prior to 1923 in the United States and prior to 1870...

Max Creek

1,911 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Princeton Theological Seminary Library

35,733 Items


Princeton Theological Seminary Library

&lt;div id="pts-home"&gt; &lt;div style="overflow:hidden;"&gt; &lt;div&gt; &lt;div...


109,684 Items


&lt;p&gt;Blip.tv is an open video network that hosts and distributes web-based TV shows and videoblogs created by independent producers and...

Hot Buttered Rum

626 Items


On February 3rd, 2007 "Hot Buttered Rum String Band" renamed themselves to "Hot Buttered Rum". All recordings before this date...

Local H

377 Items


Limited Flag: ApproReq

The Breakfast

496 Items


Limited Flag: LimRange / PhishPol (none specified yet?)

Film Chest Vintage Cartoons

83 Items


Film Chest Vintage Cartoons

&lt;p&gt; Watch classic animated cartoons from the 1930's and 1940's! These cartoons are from the Film Chest collection, a leading source of...


427 Items


The five-piece band has creatively fused electronic dance music with instrumental post-rock for eight years. The result is an explosive live show...

University of North Carolina at Chapel Hill

38,626 Items


University of North Carolina at Chapel Hill

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.lib.unc.edu%2F"&gt;&lt;img src="../download/unclibraries/UNClibraries.jpg" border="0"...

Mosaic Middle East News

2,058 Items


&lt;p&gt; Selections from daily TV news programs produced by national broadcasters throughout the Middle East are featured here. Mosaic's...

FEDLINK - United States Federal Collection

117,114 Items


FEDLINK - United States Federal Collection

The Federal Library and Information Network (FEDLINK) is an organization of federal agencies working together to achieve optimum use of the resources...


118 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Perpetual Groove

728 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

The New York Botanical Garden

8,046 Items


The New York Botanical Garden

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Flibrary.nybg.org%2F"&gt;&lt;img src="../download/NY_Botanical_Garden/nybg.jpg"...

Historical Software Collection

64 Items


Historical Software Collection

This collection contains selected historically important software packages from the Internet Archive's &lt;a...

Camper Van Beethoven

324 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis.

Getty Research Institute

18,430 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.getty.edu%2F"&gt;&lt;img src="../download/getty/gettylogo.jpg"...


1,034 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis.


13,068 Items


in-browser lending collection

Bad Panda Records

107 Items


&lt;center&gt;&lt;a href=http://badpandarecords.wordpress.com&gt;Bad Panda&lt;/a&gt; is a free-download netlabel releasing a...

Million Book Project

10,784 Items


&lt;p&gt;An early collection of books from the Indian scanning centers of the Universal Library Project, sometimes called the Million Books...

Democracy Now!

5,343 Items


&lt;p&gt;Democracy Now! is a national, daily, independent, award-winning news program airing on over 450 stations in North America. The...

In Library Collection

2 Items


&lt;p&gt;Books available via lending to patrons in certain geographical areas. &lt;/p&gt; &lt;p&gt;Visit &lt;a...

New Monsoon

489 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

China Books

3,138 Items


Books scanned in Shenzhen and Beijing, China.

MIT OpenCourseWare

303 Items


&lt;p&gt;MIT OpenCourseWare (OCW), available at &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Focw.mit.edu"&gt;http://ocw.mit.edu&lt;/a&gt;,...

Ryan Adams

465 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis....

Link TV Archive

3,579 Items


&lt;br /&gt; Link TV is a non-profit US satellite television network broadcasting programs that engage, educate and activate viewers to...

Grace Potter and the Nocturnals

523 Items


Grace Potter and the Nocturnals

Limited Flag: CopyReq + LimShows

Aljam3a-Library &#x627;&#x644;&#x645;&#x643;&#x62A;&#x628;&#x629;...

13,251 Items


Aljam3a-Library &#x627;&#x644;&#x645;&#x643;&#x62A;&#x628;&#x629;...

Simply a library for Arabic books that comes in form of iPhone App, Android App, Desktop App. &lt;br /&gt;&lt;br /&gt;...

VJ Loops &amp; Performances

390 Items


VJ Loops &amp; Performances

&lt;p&gt; These VJ Loops were all contributed by Archive users. &lt;/p&gt; &lt;p&gt;If you would like to submit your own VJ...

Metropolitan Museum of Art - Gallery Images

140,703 Items


Metropolitan Museum of Art - Gallery Images

&lt;center&gt;&lt;img src="/download/metropolitanmuseumofart-gallery/met.png"&gt;&lt;/center&gt; &lt;br...

Gavin DeGraw

73 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Prelinger Library

3,812 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.home.earthlink.net%2F%7Ealysons%2Flibrary.html"&gt;&lt;img border="0"...

The Chin Grimes TV News Archive

72,626 Items


The Chin Grimes TV News Archive

The Chin Grimes TV News Archive is a personal collection of broadcast news, current affairs, commentary, political/public policy speeches, panel...

John Mayer

149 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...


848 Items


&lt;b&gt;&lt;font size="3"&gt;&lt;img src="http://f0.bcbits.com/z/31/84/3184900582-1.jpg"...

Children's Library

2,817 Items


&lt;table border="0" cellspacing="10" cellpadding="2"&gt; &lt;tr&gt; &lt;td colspan="2"...

Harvard University

262,814 Items


Books sponsored or contributed by Harvard University

Film Noir

91 Items


Expressionistic crime dramas of the 40s and 50s: tough cops and private eyes, femme fatales, mean city streets and deserted backroads, bags of loot...

NASA eClips Collection

243 Items


Animal Liberation Orchestra

311 Items


Animal Liberation Orchestra

&lt;td width="600" valign="top"&gt; &lt;span style="font-size:200%;"&gt;&lt;b&gt;Animal...

Open Educational Resources

1,309 Items


Open Educational Resources

&lt;br/&gt;Welcome to the Archive&#x2019;s library of Open Educational Resources and university lectures. This library contains hundreds...

Of A Revolution

647 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis.

Sports Videos

4,290 Items


From soccer to sailing, to rock climbing, cheerleading, and underwater hockey: You are invited to watch or download free sports videos contributed by...

The Computer Magazine Archives

10,967 Items


The Computer Magazine Archives

With the re-branding of computing power and machines as something welcome in the home and not just the workshop, a number of factors moved forth to...

Jack Johnson

147 Items


Photo by &lt;a...

Stock Footage

1,646 Items


&lt;p&gt;A collection of stock footage clips submitted by Internet Archive users. These clips are designed to be used in other...

Young Research Library Department of Special Collections

1,990 Items


Young Research Library Department of Special Collections

&lt;img border="0" src="http://www.archive.org/download/yrlsc/shadowbanner.gif"&gt;&lt;/a&gt;...

Comfort Stand

90 Items


&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.comfortstand.com"&gt;Comfort Stand Recordings&lt;/a&gt; is/was/still is a community-driven label...

Torn Flesh Records

1,031 Items


&lt;center&gt;&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.facebook.com%2FTornFleshRecordsNetlabel"&gt;&lt;img...

Television Programs

1,020 Items



591 Items


&lt;p&gt;The Machinima Archive is dedicated to the academic investigation and historical preservation of the emerging art form known as...

Videogame Previews

2,205 Items


&lt;p&gt; More than 2,200 custom-created previews, from two major sources, are featured here. This collection showcases footage of video game...

Free Music Charts

76 Items


Free Music Charts is an internet radio show, where only open (as in CC licensed) music is allowed to take part. The rules are quite...

Columbia University Libraries

21,184 Items


Columbia University Libraries

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.columbia.edu%2Fcu%2Flweb%2F"&gt;&lt;img src="../download/ColumbiaUniversityLibraries/columbia.jpg"...

Khan Academy

2,737 Items


The Khan Academy is a non-profit educational organization created in 2006, by Bangladeshi American educator Salman Khan. With the stated mission of...

Dusted Wax Kingdom

300 Items


Welcome to Dusted Wax Kingdom - a netlabel based in Varna (Bulgaria). We boost talented artists from all over the world, producing blunted downtempo...

Democracy Now!

3,513 Items


A national, daily, independent, award-winning news program, Democracy Now! airs on over 375 stations in North America. Pioneering the largest public...

The Magazine Rack

18,583 Items


The Magazine Rack is a collection of digitized magazines and monthly publications.

Boletin Oficial de la Republica Argentina

55,728 Items


Boletin Oficial de la Republica Argentina

El Bolet&#xED;n Oficial de la Rep&#xFA;blica Argentina es el diario oficial de la Rep&#xFA;blica Argentina, es decir, el medio de...


782,647 Items


&lt;p class="tagline"&gt;Open access to e-prints in Physics, Mathematics, Computer Science, Quantitative Biology, Quantitative...

PIMS - University of Toronto

9,185 Items


PIMS - University of Toronto

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.pims.ca%2F"&gt;&lt;img src="../download/pimslibrary/pims.jpg"...

The Community Media Archive

32,915 Items


The Community Media Archive

&lt;p&gt;The Community Media Archive gathers the diverse local programs created through community access - including hundreds of television...

Steve Kimock Band

500 Items


Limited Flag: ApproReq + BandCurate / NoSBD

Folkscanomy: A Library of Books

20,863 Items


Folkscanomy: A Library of Books

&lt;b&gt;Folksonomy&lt;/b&gt;: A system of classification derived from the practice and method of collaboratively creating and...

University of Connecticut Libraries

9,175 Items


University of Connecticut Libraries

Books digitized by the Internet Archive for the University of Connecticut.

North Carolina Digital Heritage Center

11,234 Items


North Carolina Digital Heritage Center

A collection of items from the North Carolina Digital Heritage Center Project.

International Music Score Library Project

26,465 Items


International Music Score Library Project

IMSLP stands for the International Music Score Library Project and was started in 2006. &lt;br /&gt; &lt;br /&gt;...

University of Florida George A. Smathers Libraries

24,358 Items


University of Florida George A. Smathers Libraries

The &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.uflib.ufl.edu%2F"&gt;University of Florida George A. Smathers Libraries&lt;/a&gt; sends selected...

Classic TV Commercials

1,134 Items


&lt;p&gt;Classic TV commercials and public service announcements (PSAs) uploaded by archive.org users. &lt;p&gt;If you'd like to add...

TOSEC: The Old School Emulation Center

190 Items


TOSEC: The Old School Emulation Center

&lt;img src="/download/tosec_dat_19-2012-12-28/tosec.jpg" align=right hspace=10&gt; The Old School Emulation Center (TOSEC) is a...

University of Illinois Urbana-Champaign

55,980 Items


University of Illinois Urbana-Champaign

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.library.uiuc.edu%2F"&gt;&lt;img...

NASA Technical Documents

25,854 Items


Technical documents from NASA

A/V Geeks

1,188 Items


&lt;b&gt;The A/V Geeks Film Archive&lt;/b&gt; is an ephemeral film collection curated by Skip Elsheimer. What started as a hobby more...

Tucows Software Library

32,441 Items


The Tucows Sofware Library is the largest freeware/shareware library on the Internet. It provides users with over 40,000 software titles that have...

Software Sites Collection

32,356 Items


Software Sites Collection

Software Sites are collections of software available on websites over the last few decades that were mirrored at the Archive and then left in a...

The New Deal

283 Items


&lt;td width="600" valign="top"&gt; &lt;span style="font-size:200%;"&gt;&lt;b&gt;The New...

Mr. Blotto

769 Items


Download free music. Concerts in the Live Music Archive are available for download and streaming in formats including flac, mp3, and ogg vorbis.

September 11 Television Archive

425 Items


September 11 Television Archive

&lt;p&gt;&lt;font size="3"&gt;&lt;b&gt;You can find a more complete version of this collection (3000 hours of...

Tea Leaf Green

1,059 Items


Limited Flag: LimShows

University of Alberta Libraries

77,517 Items


University of Alberta Libraries

&lt;table border="0" cellspacing="10" cellpadding="2"&gt; &lt;tr&gt; &lt;td&gt; &lt;div...

Blue Turtle Seduction

125 Items


&lt;td width="600" valign="top"&gt; &lt;span style="font-size:200%;"&gt;&lt;b&gt;Blue Turtle...

Drive-By Truckers

742 Items


&lt;p&gt;Limited Flag: LimShows&lt;/p&gt; "&lt;a...

University of New Hampshire Library

16,963 Items


University of New Hampshire Library

&lt;p&gt;Books from &lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fwww.library.unh.edu%2F"&gt;University of New Hampshire...


409 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

Splintered Sunlight

356 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...


46 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; &lt;span...

SFGTV: San Francisco Government Television

72,328 Items


SFGTV: San Francisco Government Television

&lt;center&gt;&lt;img src="/download/TV-SFGTV/SfgtvLogoCrop.jpg" alt="SFGTV" /&gt;&lt;/center&gt;...

Fat Maw Rooney

76 Items


&lt;table&gt;&lt;tr&gt; &lt;td width="600" valign="top"&gt; Download free music from Fat Maw Rooney....

Montana State Library Government Information

21,008 Items


Montana State Library Government Information

&lt;img src="http://www.archive.org/download/MontanaStateLibrary/msl_cl_rgb.jpg" border="1" &lt;br&gt;...

The Portuguese Web Archive

75 Items


The Portuguese Web Archive

&lt;a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Farchive.pt%2F"&gt;The Portuguese Web Archive&lt;/a&gt; (PWA) is the national Web archive of Portugal. Its...


64 Items


Limited Flag: LimUp

University of Pittsburgh Library System

5,156 Items


University of Pittsburgh Library System

&lt;img src="http://www.archive.org/download/university_pittsburgh/ULSLogoInternetArchive.jpg"&gt;&lt;/a&gt;...

Computer Chronicles

560 Items


&lt;p align="left" CLASS=destBody&gt;&lt;font size="2" face="Arial, Helvetica,...

Orbital Sciences Antares rocket explodes after liftoff

29 October 2014 - 7:00am

The High Definition Earth Viewing (HDEV) experiment aboard the ISS was activated April 30, 2014. It is mounted on the External Payload Facility of the European Space Agency’s Columbus module. This experiment includes several commercial HD video cameras aimed at the earth which are enclosed in a pressurized and temperature controlled housing. Video from these cameras is streamed 24/7, though there isn't always a discernable picture. Some quick notes:

Black Image = The view is switching between cameras or the space station is above the night side of the Earth. 
Gray Image = Switching between cameras, or communications with the ISS are not available.
No Audio = There are numerous, sometimes extended periods when the station cannot communicate with mission control, or when the crew and ground controllers simply don't need to talk. 

Windows 10 will come with a command-line package manager

29 October 2014 - 7:00am

Sorry, penguin lovers — if you thought that 2015, in the heinous wake of Windows 8, would finally be the year of desktop Linux, you were sadly mistaken. Microsoft is trying its best to make Windows 10 the dream OS for the billions of people around the world who use a desktop PC with a mouse and keyboard — and, as a result, this means Windows 10 will actually come with a package manager. Yes, in Windows 10 you can open up a command line shell and install VLC or Firefox or thousands of other packages by typing in a single command.

If you’ve ever ventured into the dark and mysterious land of Linutopia, where Ubutologists and Debianites reign, you will have noticed that one of the things that Linux users are most proud of is package management. While Windows and Mac users have to run graphical installers — you know, where you hit Next a few times and try to avoid installing bundled crapware — Linux users can just open up a command line and type sudo apt-get install vlc. I’m a Windows user through and through, but I have to admit that installing apps and keeping a system updated is much more pleasant in Linux.

With Windows 10, however, we are finally getting an official package manager: OneGet. In the current build of Windows 10 Technical Preview, you can open up PowerShell and use OneGet to install thousands of applications with commands such as Find-Package VLC and Install-Package Firefox. OneGet seems to implement all of the usual functions that you’d expect from a package manager. You can search for packages, add new sources/repos, uninstall packages, install packages, and so on. OneGet uses the same package format as Chocolatey, one of the most popular third-party package managers for Windows (and indeed, you can add the Chocolatey repo to OneGet if you so wish).

Windows 10 PowerShell, using OneGet to install a package

Read: How to get the Windows 10 Technical Preview

OneGet was originally rolled out as part of the Windows Management Framework 5.0 preview for Windows 8.1, and it’s being actively worked on to try and ship it as a standard tool in Windows 10. As far as we’re aware, it will only be available through PowerShell — a command-line utility that’s mostly used by power users and IT admins. If you don’t know your way around PowerShell (and indeed, it’s a much more complex beast than cmd or most Linux shells), you can still theoretically use OneGet through the standard cmd command line with @PowerShell. HowToGeek has some more details on OneGet and its implementation in Windows 10, if you’re interested.

The Store in Windows 10 is still pretty bad

What remains to be seen is just how far Microsoft will take OneGet. Will it be just be an obscure tool for nerdy admin types? The eventual plan is to expose a set of OneGet APIs, which means other apps will be able to tie into it — and who knows, that might just trigger some kind of revolution in Windows app management. OneGet would certainly be one way for Microsoft to offer desktop apps through the Windows Store (at the moment it can only install Metro apps). This time next year, maybe you’ll be able to open up PowerShell and type Install-Package Photoshop, or Update-Package Windows 10.

Last week, Windows 10 Technical Preview received its first update — and indeed, Microsoft plans to roll out a new, major update every few weeks. We will continue to closely track OneGet and Windows 10′s other desktop-oriented features as and when they appear in new builds.

Now read: The best hidden features, tips, and tricks in Windows 10

We Make Mistakes

29 October 2014 - 7:00am

We’ve just finished reviewing applications for the Winter 2015 batch and have sent out invitations for interviews. In this cycle we saw a +40% increase in the number of companies applying over the Summer 2014 batch. 

Reviewing this many companies is a humbling experience and one we take very seriously. Most of us who work for YC are alums and understand the gravity and emotion that can go into submissions. We know it’s tough to separate your own identity from the company you have founded so applying can be quite personal.

If you applied, you should not take our evaluation as either a final judgment or perfect assessment of your company. This applies to both the companies that did and did not get invited to interviews. We are sure we missed some great companies as a byproduct of operating at this scale. Don’t let funding take your eye off the goal: making something people want. Everything else, including going through Y Combinator, is there to support that goal but is not the goal itself.

We also wanted to take this opportunity to thank our alumni publicly. They are the invisible hand that helps our small organization with this significant task. Often YC founders themselves will tell you that the best thing about YC is to learn from a cohort of like minds with similar ambitions. YC would not work without the 1,400+ alumni founders who take their time to help us and each other.

Finally, many companies at this stage can seem small but we noticed that they are more ambitious than ever. We love that. It refutes the meme that early stage companies today are too myopic or working on incremental improvements. It’s an easy complaint to lob at founders who are in the field toiling away but one that seems to be off the mark.

YouTube Ready to Eliminate Ads [video]

28 October 2014 - 7:00pm
10/28/2014 9:50AM      Transcript

This transcript has been automatically generated and may not be 100% accurate.

... timing out will detect YouTube app has a big change the plan it's not gonna have a paid subscription plan ... three EST the deputy editor Brian Fitzgerald joins us ... to explain what's going on ... but in order ... to right um ... this is very interesting and YouTube has long had an aunt mobile aam note no pay dispute between ... the suffer the ads ... will enjoy he adds whatever it is ... now it's can be different what's really cool all wanted their Chief pronounces which is the ... comes from the advertising side not Tuesday chief of YouTube ... and what's happening here so ... so it's worth in telling telling listeners or readers that YouTube has is ... to dip their toe in a subscription model before ... adding the interesting thing here is that aam which is key is is saying ... we're going to explore several types of subscription models and one of them and be advertising for it ... and and that would be the change ... for my my preview for for YouTube is that it's a sub model one that doesn't involve as all on a ... completely different kind of you to than the one I think we've also gone up ... with cats playing with string and and that's in front of the scabs but the fact that in the content is growing up to a little bit content has grown up to bed and that is double what I will forever associate with MSA was the summit ... the city that Netflix is of course I'm considering that the having the and the answer in the back of the subscription some some programming what does that count it's the complete blurring of of them in a witch and PIN Tech which is what ... always tends to happen right is is the look of the other side defense News aggressive pretty green over there ... and everyone is just exploring new ways to get revenue ... and it really easy to say on one site advertising on the upside subscriptions and so ... the old These companies all these media companies ... and includes YouTube that are going to have their hands the most jobs and and that seems to make a lot of sense because the the end of the entire landscape that was basically sets in ... in stone for a lot of stock in the nineteen fifties and see the model that terrestrial TV mogul ... on what lasted right apartments and it's what belongs on Bendigo cable menu but the wet which has completely thrown everything up in the a ... lot to live because it has so many different ways for people to be able to access ... new video content and when we got proliferation just comes ... new ways of being a will pay for it ... you know why things can be interesting ... here we start to talk about ... pain for no ads is whether people will actually you know put their money where their mouth the we all see a YouTube link and click on it then as the freeroll annual God ... in our barricades not to knock up a lot to stop not willing to actually um why are people will start to pay especially when ... they're already paying for Netflix ... that might be paying for a loop ... on you stop paying for no as the new to ... CBS as a will will have our own ... app out there where you can pay for her back with content so ... you start to see ... all of this this one is to pile up on people ... who've been so angry about their cable bills being so high for so long but ... I'm wondering when that is constructed from me in the middle the most listened to those overseas data adds that would be more that any has redeveloped ... with a Twitter book a as well as I love

2:06 Up Next

Google's Proactive Health Platform 10/28/2014 2:35PM


Dallas Nurse Declared Ebola-Free 10/28/2014 4:19PM


Is the College Model Ripe for Disruption? 10/28/2014 3:17PM


President Obama on Ebola: New Monitoring and Guidance 10/28/2014 3:47PM


Brad Smith: Technology Sector Is More Vibrant 10/28/2014 2:20PM


Marc Andreessen on Women in Technology 10/28/2014 12:52PM


Kevin Mandia on Security Breaches 10/28/2014 3:30PM


How the Kansas City Royals Could Boost Republicans 10/28/2014 11:34AM


Opinion: Has the Clinton-Warren War Started? 10/28/2014 2:04PM


Facebook Users Who Drive You Crazy 10/28/2014 1:07PM


All-Time Creepiest Mascots and Spokespeople 10/28/2014 1:01PM


Is Online Education the Way of the Future? 10/28/2014 5:22PM

UCLA's Gene Block and Coursera's Richard C. Levin debate whether or not online education will eventually replace the on-campus experience.


Women in Tech and Other Highlights From WSJD Live 10/28/2014 4:34PM


Xiaomi's Challenge as It Goes Global 10/28/2014 4:24PM


What Challenges Does Google's Nanotechnology Face? 10/28/2014 4:12PM


Xiaomi's International TV Plans 10/28/2014 3:02PM
More →


The New Sabbatical: Shorter, Starting Earlier 10/28/2014 4:15PM

A handful of employers are trying out new sabbatical programs. But this crop of programs is shorter and occurs earlier in an employee’s tenure at a company. Rachel Feintzeig joins the News Hub. Photo: Getty.


Is Ebola Crisis a Homeland Security Issue? 10/28/2014 4:05PM


Ebola's Effect on U.S. Homeland Security 10/28/2014 4:00PM


Ebola "Will Be Defeated," Says President Obama 10/28/2014 3:58PM


Google's Project on Cancer Detection, and More 10/28/2014 3:48PM
More →


Tim Cook on Retailers That Refuse Apple Pay 10/28/2014 1:06AM

Apple's Tim Cook discusses his thoughts on retailers that refuse Apple Pay, at the WSJD Live conference in Laguna Beach, Calif.


Tim Cook on Partnering With Jack Ma 10/28/2014 1:19AM


Tim Cook on Apple's Role in Fitness 10/28/2014 1:08AM


WSJD Live Tech Conference: An Insider's Look 10/27/2014 5:05PM


Jack Ma on the Government in China 10/28/2014 1:09AM
More →


Hacking Trail Points to Moscow 10/28/2014 12:51PM

A report on a sophisticated campaign of hacking U.S. interests suggests the cyber attacks originated in Moscow. FireEye’s Laura Galante and WSJ's Tanya Rivero discuss. Photo: Getty


WSJD Live: Alibaba-Apple Partnership? 10/28/2014 1:12PM


YouTube Pondering Paid Subscriptions, and More 10/28/2014 11:34AM


Looking Ahead to the Fed's Rate Decision 10/28/2014 10:34AM


Tim Cook: Apple Pay Had Very Strong Debut 10/28/2014 9:45AM
More →


IBM Cloud: What can your cloud do with big data? 10/14/2014 1:32PM


IBM Cloud: Can your cloud help you compete? 10/16/2014 1:29PM


Specializing in third party logistics 9/2/2014 5:30PM


InKemia is bringing high tech value to businesses 9/9/2014 10:22AM
More →


From Yoga to Zumba, Campus Gyms Aim to Entice Students 10/28/2014 12:44PM

Officials on college campuses are turning to usage data and student feedback to shape fitness programs, hoping it will entice more students to develop healthy habits. Kirk Irwin/WSJ


Nearing 90, Former Child Prodigy Not Ready to Retire 10/28/2014 11:53AM


The Debate Over Testosterone Treatments 10/27/2014 12:08PM


World Series: Will Fast Pitches Help Royals Win? 10/27/2014 5:05PM


Manny Pacquiao Hits Hong Kong 10/27/2014 1:39PM
More →


Rock Stars Die Younger Than the Rest of Us 10/28/2014 4:18AM

Kurt Cobain and Amy Winehouse died at 27. Professor Dianna Kenney says the theory of the 27 Club doesn’t stack up, but rock stars do die younger. She speaks to WSJ’s Ramy Inocencio. Photo: AP


House of the Week: A Private Island? 10/27/2014 12:22PM


Moneyologist: How to Split the Dinner Check? 10/27/2014 12:21PM


Why Do Serial Killers Fascinate the Public? 10/27/2014 12:16PM


Summer-Haters Embrace the Best Time of Their Year 10/27/2014 12:11PM
More →

Smuggling Snowden Secrets

28 October 2014 - 7:00pm

Late on the evening of January 11, 2013, someone sent me an interesting email. It was encrypted, and sent from the sort of anonymous email service that smart people use when they want to hide their identity. Sitting at the kitchen table in the small cottage where I lived in Berkeley with my wife and two cats, I decrypted it.

The anonymous emailer wanted to know if I could help him communicate securely with Laura Poitras, the documentary filmmaker who had repeatedly cast a critical eye on American foreign policy.

From: anon108@■■■■■■■■■
To: Micah Lee
Date: Fri, 11 Jan 2013


I’m a friend. I need to get information securely to Laura Poitras and her alone, but I can’t find an email/gpg key for her.

Can you help?

I didn’t know it at the time, but I had just been contacted by Edward Snowden, the National Security Agency contractor who was then preparing a momentous leak of government data.

A month earlier, Snowden had anonymously emailed Glenn Greenwald, a Guardian journalist and chronicler of war-on-terror excesses, but Greenwald didn’t use encryption and didn’t have the time to get up to speed, so Snowden moved on. As is now well known, Snowden decided to contact Poitras because she used encryption. But he didn’t have her encryption key, as is necessary to send someone encrypted email, and the key wasn’t posted on the web. Snowden, extraordinarily knowledgeable about how internet traffic is monitored, didn’t want to send her an unencrypted email, even if just to ask for her key. So he needed to find someone he thought he could trust who both had her key and used encrypted email.

That was me.

And as it turned out, several months later I was drawn more deeply into the whole thing, when Snowden got back in touch and asked me to work with him to launch an online anti-surveillance petition.

Until now, I haven’t written about my modest role in the Snowden leak, but with the release of Poitras’s documentary on him, “Citizenfour,” I feel comfortable connecting the dots. I think it’s helpful to show how privacy technologists can work with sources and journalists to make it possible for leaks to happen in a secure way. Securing those types of interactions is part of my job now that I work with Greenwald and Poitras at The Intercept, but there are common techniques and general principals from my interactions with Snowden that could serve as lessons to people outside this organization.

When I got that first email, I was working as a staff technologist for the Electronic Frontier Foundation and as the chief technology officer of the Freedom of the Press Foundation. My encryption key was posted at both sites, so Snowden was able to find it easily, and the key was digitally signed by people who were well-known in the privacy world (pioneering blogger Cory Doctorow and free software champion Richard Stallman, for instance); this meant those people had digitally vouched, in a way that was incredibly difficult to forge, that the key really belonged to me and not to, say, some NSA trickster. In other words, Snowden didn’t need to worry about the key being a fake. Poitras was a founding board member of the FPF, so he assumed I would have her key, and he was right.

It wasn’t uncommon for me to receive the type of email Snowden sent — strangers send me encrypted emails all the time, requesting help. Some of those emails are from people who appear to have personal issues to work out, but the inquiry from Snowden, emailing under a pseudonym, struck me as serious. I quickly forwarded it in an encrypted email to Poitras. The encryption technology we used — the standard among email users concerned with privacy — is known by two acronyms: GPG, for GNU Privacy Guard, or PGP, for Pretty Good Privacy.

From: Micah Lee
To: Laura Poitras
Date: Sat, 12 Jan 2013

Hey Laura,

This person just send me this GPG encrypted email. Do you want to respond? If you want to, and you need any help with using crypto, I’m happy to help.

Like me, Poitras was accustomed to receiving anonymous inquiries, and she recognized that this one was credible. A few hours later, she sent me a reply.

From: Laura Poitras
To: Micah Lee
Date: Sat, 12 Jan 2013

Hey Micah,

Thanks for asking. Sure, you can tell this person I can be reached with GPG at: laurapoitras@gmail.com

I’ll reply with my public key.

I’m also on jabber/OTR at:

I hope all is good with you!


The frustrating and ironic thing about GPG is that even experts make mistakes with it. Even, as it turns out, Edward Snowden.

I now had Poitras’ permission to send Snowden her encryption key, but in his first email to me, Snowden had forgotten to attach his key, which meant I could not encrypt my response. I had to send him an unencrypted email asking for his key first. His oversight was of no security consequence—it didn’t compromise his identity in any way—but it goes to show how an encryption system that requires users to take specific and frequent actions almost guarantees mistakes will be made, even by the best users.

After receiving Snowden’s key, I sent him an encrypted email with Poitras’ key. This enabled him to send his first encrypted email to Poitras, in which he called himself Citizenfour. But I wasn’t out of the identity-confirmation picture yet.

Snowden and Poitras quickly set up a more secure channel for communication. Poitras created an anonymous email account, doing so with the Tor Browser that masks your identity on the web, and she created a new GPG key, just for communicating with Citizenfour. This was advisable because, if she were under surveillance by the NSA or any other intelligence agency, they might have compromised her known accounts, and she would prefer for there to be no trace of her true name in the correspondence with this secrecy-seeking stranger.

But the internet is a hall of mirrors. Even though Snowden and Poitras had set up new anonymous email accounts and traded GPG keys through a trusted chain of communication, it’s still possible that something could have gone wrong. Maybe one end of the communication (either Snowden or Poitras) could have had their computer hacked, with the attacker in a position to impersonate them. Or maybe they could be victim to a man-in-the-middle attack where, for example, the NSA tricks two parties who think they’re having an encrypted conversation directly with each other into secretly having two separate encrypted conversations with the attacker, who forwards their messages along.

To be extra sure that these things weren’t happening, Snowden wanted to verify through a separate channel that he had Laura’s legitimate key. He asked Poitras to get me to tweet the fingerprint of her new GPG key.

Just a tiny bit of background: encryption keys are technically just strings of random data that scramble and unscramble information. Because these keys are too long to memorize or conveniently post on bios or put on business cards, each one has a far shorter “fingerprint” that is unique to the key. These fingerprints are just 40 characters long. To verify the new key that Poitras had sent him, Snowden needed to receive her new fingerprint from me and then compare it to the one he was using.

If the fingerprint that I tweeted didn’t match the key that Poitras sent him, that would be evidence that NSA or some other actor may be attempting a man-in-the-middle attack. If the fingerprints matched, however, he could be confident that he had her real key and no one was attacking their communication.

On January 28, Laura sent me the following encrypted email—

From: 303@riseup.net
To: Micah Lee
Date: Mon, 28 Jan 2013

Hey Micah,
This is Laura Poitras.
Someone is trying to verify my fingerprint to this email. The person has proposed you tweet the fingerprint. Would you be able to tweet this to your acct:
1EBF 5F15 850C 540B 3142 F158 4BDD 496D 4C6C 5F25
Let me know if possible.

It might seem strange to use Twitter, a public platform, to convey crucial information, but in some circumstances it makes perfect sense. Doing a man-in-the-middle attack against encrypted email without getting caught is significantly simpler than performing an attack on a public platform that anyone in the world might notice. If NSA had hacked my Twitter account and posted the wrong fingerprint, there’s a good chance I, or one of my followers, would notice and start looking into it.

So on January 28, I tweeted Poitras’s new fingerprint:

With that, Snowden, using the handle Citizenfour, had a very secure channel for communicating with Poitras, using the email address 303@riseup.net. I assumed this would be the end of my work with him.

Encrypting Greenwald

Snowden signed off from my life, or so I thought, with a final request: He asked that I help Greenwald get encrypted. He said it was an important task, though he didn’t tell me why. He also told me that someday I would be proud of the role I was playing.

I tried to teach GPG to Greenwald but I had the same problem Snowden had encountered when he reached out in December, that Greenwald was busy and couldn’t focus on it. Several months later, however, I succeeded in getting Greenwald up to speed on using an encrypted chat system called Off-the-Record (OTR), which is much simpler than GPG. For the first time he was able to have encrypted communications on the internet.

Then, on May 9, I got an encrypted email from Poitras that was exciting and alarming.

From: Laura Poitras
To: Micah Lee
Date: Thu, 9 May 2013

I’m working on something with Glenn and I really need to get him on a secure (preferably Tails) system. He does not have the technical skills to set this up himself, and I’m trying to keep things compartmentalized, so I don’t want to email him about this topic directly on a non-secure channel.

Poitras didn’t tell me what was going on, and I didn’t ask. Not who, not what. The same with Greenwald. I didn’t ask. This was basic operational security. Whatever they were doing was sensitive, and I had no need to know. Whether you’re working in the analog or digital world, this is one of the simplest and most important security practices: share secrets only with people who have to know. The fewer people who know a secret, the lower the chances are that it will be compromised.

Tails, the secure system Poitras asked me to get for Greenwald, is serious business. It’s a hardened operating system designed for people who need to be anonymous, and not a lot of people use it. The acronym stands for The Amnesic Incognito Live System. Before Poitras asked me to teach it to Greenwald, I had never used it. Crucially, everything you do in Tails is anonymous. All internet activity is routed through Tor, so by default your privacy is protected. And you run Tails directly off of a DVD or a USB stick — it is not installed on your hard drive. Since Tails operates completely independently from your hard drive and usual operating system, it offers a hefty dose of protection from malware and from anyone who might inspect your computer to look at what you’ve been doing.

It’s also a free software project, just like Tor, GPG, and OTR. That means the code is open source and can be peer reviewed, a level of transparency that makes the software resistant to backdoors, covert access points buried deep in the code.

On May 13, after creating a customized version of Tails for Greenwald, I hopped on my bike and pedaled to the FedEx office on Shattuck Avenue in Berkeley, where I slipped the Tails thumb drive into a shipping package, filled out a customs form that asked about the contents (“Flash Drive Gift,” I wrote), and sent it to Greenwald in Brazil. He received the package two weeks later, it having been delayed in transit, for what I believed to be bureaucratic rather than nefarious reasons, and the blue thumb drive actually made a cameo appearance in “Citizenfour.” For a technologist, this was a dream come true.

Snowden’s Website

Near the end of May, I received an anonymous and encrypted email from an account called “verax,” which is Latin for “truth teller.” The writer told me that he was the same person I had been in touch with several months earlier. He had a new request.

Would I help him build a website that would launch a global petition against surveillance?

I still didn’t know his name, where he was located, or what else he was up to, though clearly whatever he had going on with Poitras and Greenwald was sensitive. Because of my respect for them, I believed that anything they were going to this much trouble to accomplish was going to be worthwhile, so I agreed to build the site. I started using Tails in all my work with the contact, because I sensed that I had to take the highest security precautions possible. As Poitras had done with him in January, I created a new anonymous email account and GPG key just for communicating with him. He was glad that I did.

From: verax@■■■■■■■■■
To: ■■■■■■■■■
Date: Sat, 1 Jun 2013

Got it. Good idea, btw. There are some issues with keys being used for fingerprinting as they move over the network.

He said he was writing an anti-surveillance manifesto that he wanted to post on the yet-to-be-named site, along with a petition that people could add their names to. The site would be unveiled once the journalists he was working with published their first stories. I had ample experience building privacy-respecting websites, including many online petitions for EFF. Among others, I built a petition against the draconian online copyright enforcement bill SOPA that sent more than a million emails to Congress. So this was familiar territory for me.

Working in Tails to remain anonymous while I developed the site, however, meant that this would be trickier than the web development I’d done in the past. I didn’t have access to the latest browsers I was used to, and I didn’t dare test the mobile version of the site on my smartphone. I also had concern that my coding style might betray my identity: my code for this project used similar commenting and naming conversions as other code I’d written in the past. Trying to develop software without your personal coding style is like trying to write an essay using someone else’s voice. I was also concerned that the visual designs I was creating could be compared to my work in the past.

Snowden was even more worried about detection, though I didn’t know it at the time. He expected to be quickly arrested and prevented from speaking for himself, and predicted that the government would use that silence to mischaracterize his intentions. To keep that from happening, Snowden decided to take a highly visible online stand against mass surveillance. Part of his plan included the petition website that he asked me to build.

On May 27, Snowden had his first encrypted conversation directly with Greenwald, who agreed to travel to Hong Kong with Poitras, funded by Guardian.

As my work on the site got underway, I had an encrypted chat with Poitras and mentioned what I was doing, though I didn’t give her many details; just as I didn’t need to know everything she was doing, she didn’t need to know everything I was doing. She warned me to be extremely careful, and added that a very big story was in the works. I promised to be careful.

I was in a strange position. I was working with Snowden (whose name, in late May, I still didn’t know) and I suspected he was a whistleblower working with Poitras, but I didn’t know what he was blowing the whistle on, I didn’t know a large volume of documents were involved, and I had no idea where he was located. I didn’t know, for that matter, that Greenwald and Poitras would soon be heading to Hong Kong to meet him there. My ask-no-questions cluelessness was best for all concerned.

Days later, I was having an encrypted chat with Poitras, from our anonymous accounts, and she sounded excited. “You’ll never guess where we are right now,” I remember her writing. She didn’t tell me where she was, of course, because I didn’t need to know.

Snowden and I exchanged encrypted emails to discuss the site mockup and the site’s functionality, and he let me know a bit of what was going on. “Just wanted to provide an update on the work out here,” he emailed me on June 3. “Had an extremely productive meeting with two journalists today you may know, and will encounter a third tomorrow [Ewen MacAskill, a Guardian reporter who joined Greenwald and Poitras at the last moment]. After discussion, may hold off on the declaration for a few more days to give them time to work first.”

He told me his name, so that I could attach his signature to the end of the manifesto. This was about a week before the rest of the world would learn who he was. Using Tor, I searched the internet for Edward Snowden, but I couldn’t find anything. I checked LinkedIn, I checked Facebook, I think I even checked Twitter, and I found nothing. Who was this guy?

I learned more from the manifesto he sent me. It chilled my spine. He wrote about ubiquitous surveillance by not just the NSA but the intelligence agencies in the “Five Eyes” alliance: Britain, Canada, Australia, New Zealand and the U.S. He wrote about privacy and the lack of accountability, and what this means to democracy around the world. I still didn’t know exactly what he was leaking, but I could tell it would be big.

It turned out that he wasn’t familiar with the subtleties of using Twitter in petition campaigns. Due to my work at EFF, I knew that one of the things that can make a campaign go viral is offering a pre-written tweet to people who sign your petition and allowing them to send that tweet from their own account with just a couple of clicks. People often post these tweets, and that’s almost more helpful than their signatures since it vastly increases the campaign’s visibility. I explained this to Snowden, and also explained that it was really important to have a good hashtag for the campaign. He got it immediately, thanked me for pointing this out, and suggested the following Twitter template:

“This tweet is being monitored. Join me in breaking the back of the internet spy machine: https://www.supportonlinerights.com #HiNSA #HiGCHQ”

Snowden decided that the site should be called supportonlinerights.com, and we got to work registering it and finding a hosting company. But we ran into trouble paying for the registration and hosting. Snowden was using his real name and email address (edsnowden@lavabit.com) and his own credit cards — he was not yet an international fugitive — but he was also using Tor, and this caused problems. Tor protects your identity by routing your web activity through a number of nodes, so that the site you are in touch with does not know your IP address or where you connect to the Internet from. But this creates a problem when you want to pay a bill, because the use of Tor can trigger fraud warnings with corporate payment departments, since Tor links your traffic to IP addresses that might be flagged as sources of abuse.

The company through which Snowden was registering his domain name and hosting his site, Dreamhost, initially rejected his credit cards. This led to a funny situation. Snowden, in his Hong Kong hotel room, wasn’t just discussing government secrets with Greenwald, Poitras and MacAskill. He was also chatting online with customer support. Trying to troubleshoot these problems, I checked the complaint logs he had opened and noticed that he explained he was using Tor because he was traveling overseas and didn’t trust the local ISPs. Eventually he prevailed and his credit cards were accepted. Here is the original registration record in the internet’s “WHOIS” system:

I was a bit nervous at the time, and my wife was very nervous, because the government does not look kindly on whistleblowers and the people who work with them. For security reasons, we were in a bubble. I hadn’t told any of my co-workers at EFF that I was building a website for a whistleblower. So there weren’t a lot of people to turn to for advice or comfort. Nonetheless, I was quite excited, especially after Greenwald’s first story was published on June 5, revealing a secret NSA program to collect massive amounts of domestic phone data. I finally knew what Snowden was leaking.

“Big news today, huh?” I emailed him. “How are you doing?”

He responded quickly.

From: verax@■■■■■■■■■
To: ■■■■■■■■■
Date: Thu, 6 Jun 2013

Oh, that old thing? That could have come from anywhere..

Timing is everything on this, and we aren’t close to finished. It’s encouraging to see prominent civil rights organizations already calling for change, and I’m hopeful that maybe this time, things will be different.

Come Monday, people will have something to be angry about. I think that will be the day. Please feel free to criticize the draft as much as you’d like: it needs to be something people are willing to give words to their own feelings.

The next few days brought a blitz of headline-grabbing stories about NSA surveillance from Greenwald, Poitras, and MacAskill as well as the The Washington Post’s Barton Gellman, who received documents from Snowden even though he hadn’t made the risky trip to Hong Kong. On June 9, there was another thunderbolt: Greenwald, MacAskill, and Poitras broke the news that Edward Snowden was their source, releasing a 12-minute interview with him in which he explained his motivations.

At this point I was terrified. What if he got arrested and extradited to the U.S.? What if he were forced into solitary confinement for long stretches, as had happened to Chelsea Manning? What if he was tortured or killed?

I also worried about properly shepherding the project with which he had entrusted me. What was the contingency plan for the petition website? If he was arrested, should I unilaterally launch supportonlinerights.com?

“I hope you’re safe and doing well,” I emailed Snowden. “In case anything happened to you, what would you like me to do with the website?”

The site was ready to go. At the time, I was using the Declaration of Independence as a placeholder for the manifesto; for security reasons, I didn’t want to load the manifesto until the launch. Here’s what it looked like:

On the same day the interview was posted, Gellman published the “Verax” handle while Snowden was still using it. This caused me and my wife great concern. When Snowden reached out in late May asking me to build the petition website, he initially emailed my public email address from his Verax address. I had tried hard to have no traceable connection to Snowden, but now the FBI and NSA knew his handle and were, I believed, in a position to search their massive surveillance databases to find his full email address and perhaps the email addresses he had communicated with, including mine. While I knew that I hadn’t broken any laws, I became worried that I would receive a knock on the door. I could deal with that — the EFF is, after all, filled with lawyers — but my wife was quite scared.

I was unable to concentrate on anything else as I waited to hear from Snowden. Due to Gellman’s story, I wasn’t sure whether he was still using his “Verax” address. (Gellman later told me he that he didn’t — and doesn’t — think he put anyone at risk, and that he carefully weighed the decision to publish the “verax” handle.)

On June 13, after he had parted ways with Greenwald and Poitras and gone underground in Hong Kong, he finally emailed me.

From: verax@■■■■■■■■■
To: ■■■■■■■■■
Date: Thu, 13 Jun 2013

I’m still here. As you may have heard, I’m on the run. Tons of surveillance, media, and less savory teams crawling all over this place…

I have a new draft for the site, but I keep revising it. Hold off on any action for now. I’m thinking something major may happen on Saturday and give us a venue to bring this to the fore.

Thank you again for all of your help and support. I’m sorry this has become so dangerous for everyone involved, but I suppose this is precisely what needed to be illustrated about our government. Let’s hope people reign it back in.

We never launched the website. When it became clear that Snowden wasn’t immediately getting arrested or prevented from communicating, and that the U.S. government wasn’t forcibly denying the public an accurate understanding of what he did and what his motivations were, he decided the website was no longer necessary. He never wanted the story to be about himself anyway, preferring instead that the public debate stay focused on NSA spying.

Teaching Snowden’s Lessons

After the dust settled, I sat down to write a simple tutorial for using the open source tools that allowed me, Poitras, Greenwald, and Snowden to communicate securely, and I ended up with a 30-page whitepaper called Encryption Works: How to Protect Your Privacy in the Age of NSA Surveillance. I took the name from Snowden’s now-famous quote: “Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it.”

The post-Snowden world is a different place. While the NSA and its allied spy agencies still have very little accountability, and while their leaders can still lie to Congress without consequence, they’re no longer operating in the dark. The internet is enjoying a renaissance of security research to try to fix the major technical holes spy agencies have been exploiting for over a decade, and companies are demanding the right to protect the privacy of their users and to challenge gag orders. Lawsuits against NSA are finally moving through the courts, when before they were stalled.

In January 2014 Edward Snowden became the newest board member of Freedom of the Press Foundation, joining Pentagon Papers whistleblower Daniel Ellsberg, as well as Poitras, Greenwald, myself, and others.

Snowden was right. I am proud of the role that I played in shining light on the global espionage apparatus.

Intercept senior writer Peter Maass and assistant research editor Alleen Brown contributed to this report.

React v0.12

28 October 2014 - 7:00pm

We're happy to announce the availability of React v0.12! After over a week of baking as the release candidate, we uncovered and fixed a few small issues. Thanks to all of you who upgraded and gave us feedback!

We have talked a lot about some of the bigger changes in this release. We introduced new terminology and changed APIs to clean up and simplify some of the concepts of React. We also made several changes to JSX and deprecated a few functions. We won't go into depth about these changes again but we encourage you to read up on these changes in the linked posts. We'll summarize these changes and discuss some of the other changes and how they may impact you below. As always, a full changelog is also included below.

The release is available for download:

We've also published version 0.12.0 of the react and react-tools packages on npm and the react package on bower.

New Terminology & Updated APIs #

v0.12 is bringing about some new terminology. We introduced this 2 weeks ago and we've also documented it in a new section of the documentation. As a part of this, we also corrected many of our top-level APIs to align with the terminology. Component has been removed from all of our React.render* methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with render methods in your component classes, we decided to keep the top-level functions short and sweet. React.renderComponent is now React.render.

We also corrected some other misnomers. React.isValidComponent actually determines if the argument is a ReactElement, so it has been renamed to React.isValidElement. In the same vein, React.PropTypes.component is now React.PropTypes.element and React.PropTypes.renderable is now React.PropTypes.node.

The old methods will still work but will warn upon first use. They will be removed in v0.13.

JSX Changes #

We talked more in depth about these before, so here are the highlights.

  • No more /** @jsx React.DOM */!
  • We no longer transform to a straight function call. <Component/> now becomes React.createElement(Component)
  • DOM components don't make use of React.DOM, instead we pass the tag name directly. <div/> becomes React.createElement('div')
  • We introduced spread attributes as a quick way to transfer props.
DevTools Improvements, No More __internals #

For months we've gotten complaints about the React DevTools message. It shouldn't have logged the up-sell message when you were already using the DevTools. Unfortunately this was because the way we implemented these tools resulted in the DevTools knowing about React, but not the reverse. We finally gave this some attention and enabled React to know if the DevTools are installed. We released an update to the devtools several weeks ago making this possible. Extensions in Chrome should auto-update so you probably already have the update installed!

As a result of this update, we no longer need to expose several internal modules to the world. If you were taking advantage of this implementation detail, your code will break. React.__internals is no more.

License Change - BSD #

We updated the license on React to the BSD 3-Clause license with an explicit patent grant. Previously we used the Apache 2 license. These licenses are very similar and our extra patent grant is equivalent to the grant provided in the Apache license. You can still use React with the confidence that we have granted the use of any patents covering it. This brings us in line with the same licensing we use across the majority of our open source projects at Facebook.

You can read the full text of the LICENSE and PATENTS files on GitHub.

Changelog # React Core # Breaking Changes #
  • key and ref moved off props object, now accessible on the element directly
  • React is now BSD licensed with accompanying Patents grant
  • Default prop resolution has moved to Element creation time instead of mount time, making them effectively static
  • React.__internals is removed - it was exposed for DevTools which no longer needs access
  • Composite Component functions can no longer be called directly - they must be wrapped with React.createFactory first. This is handled for you when using JSX.
New Features #
  • Spread operator ({...}) introduced to deprecate this.transferPropsTo
  • Added support for more HTML attributes: acceptCharset, classID, manifest
Deprecations #
  • React.renderComponent --> React.render
  • React.renderComponentToString --> React.renderToString
  • React.renderComponentToStaticMarkup --> React.renderToStaticMarkup
  • React.isValidComponent --> React.isValidElement
  • React.PropTypes.component --> React.PropTypes.element
  • React.PropTypes.renderable --> React.PropTypes.node
  • DEPRECATED React.isValidClass
  • DEPRECATED instance.transferPropsTo
  • DEPRECATED Returning false from event handlers to preventDefault
  • DEPRECATED Convenience Constructor usage as function, instead wrap with React.createFactory
  • DEPRECATED use of key={null} to assign implicit keys
Bug Fixes #
  • Better handling of events and updates in nested results, fixing value restoration in "layered" controlled components
  • Correctly treat event.getModifierState as case sensitive
  • Improved normalization of event.charCode
  • Better error stacks when involving autobound methods
  • Removed DevTools message when the DevTools are installed
  • Correctly detect required language features across browsers
  • Fixed support for some HTML attributes:
    • list updates correctly now
    • scrollLeft, scrollTop removed, these should not be specified as props
  • Improved error messages
React With Addons # New Features #
  • React.addons.batchedUpdates added to API for hooking into update cycle
Breaking Changes #
  • React.addons.update uses assign instead of copyProperties which does hasOwnProperty checks. Properties on prototypes will no longer be updated correctly.
Bug Fixes #
  • Fixed some issues with CSS Transitions
JSX # Breaking Changes #
  • Enforced convention: lower case tag names are always treated as HTML tags, upper case tag names are always treated as composite components
  • JSX no longer transforms to simple function calls
New Features #
  • @jsx React.DOM no longer required
  • spread ({...}) operator introduced to allow easier use of props
Bug Fixes #
  • JSXTransformer: Make sourcemaps an option when using APIs directly (eg, for react-rails)

Terminals Are Weird

28 October 2014 - 7:00pm

The keyboards of today inherit their "Alt" key from the IBM PC keyboard, where it provided a feature now known as "Alt codes". By holding Alt and typing a decimal number, you could directly enter the corresponding 8-bit character code, even if it there was no key for it on your keyboard.

The IBM PC keyboard lacked another key which was present on Unix keyboards: Meta. Meta's original behavior was to set the 8th bit, the value of which was left unspecified by 7-bit character specifications like ASCII. Every character thus had a Meta equivalent, and detecting whether Meta was held while entering the character could be done just by checking the value of the 8th bit.

When Unices were ported to the PC, Alt was repurposed to serve as Meta. (Emacs users are already familiar with this story.) Unfortunately, by this point, networking was quite popular, and many networking programs (such as the Internet) were not 8-bit clean. They would put arbitrary data in the 8th bit, since they were never required not to. Thus the original behavior of Meta unconditionally setting the 8th bit, and Meta-aware applications checking the 8th bit to see if Meta was held, would cause problems.

Thus, the following emulation method was chosen: When Alt+char is pressed, send "ESC" before sending 'char'. ESC, of course, was already used for escape codes. Up to this point, ESC usually wouldn't appear in user input. There would be no point, because user input was delivered to the application running in the terminal, rather than being printed on the terminal screen as would be necessary for the escape codes to have the appropriate effect. As a result, ESC could be reused to mean something different when it was present in user input. Now if it occurred in user input, it would mean "The character that follows was entered with Meta held down".

Of course, some applications had already followed the same logic and were responding to ESC and the Escape key in a different way. But they wouldn't be running at the same time as ported Unix applications, and they didn't make use of Meta/Alt, so the difference in behavior wasn't a problem.

For example, ESC is used by vi/vim for mode switching. Try Alt+i while in insert mode in vi/vim. It sends Escape, then i, switching you out of insert mode and then right back in. This is why there are no Meta/Alt keybindings in vim.

So, you can't robustly have separate keybindings for Escape and Alt+char, since they are the same thing. Sometimes you really want separate bindings, though. In Emacs evil-mode, for example, it is useful to simultaneously use Escape for vim emulation, and use traditional emacs keybindings that make use of Meta/Alt. In this case, the keybindings are implemented by a timeout in the application every time you press Escape. If you press another key fast enough after Escape, the application assumes what you actually pressed was Alt+char, and interprets it appropriately.

This fails if you have a slow input connection, which you have if you are using the application over a slow network, often through ssh and screen/tmux. This is generally fixed by increasing the Escape/Alt timeout in the specific application. mosh doesn't have this problem, because it detects Alt+char vs. Escape locally, and makes sure to send Escape+char together through the network when it recognizes the former.

Key points:

  • Alt+char and Alt+Shift+char are distinct, because they send Escape, then char or Shift+char.
  • Whether Alt+char is succesfully picked up by your terminal application is dependent on the quality of your connection.
  • In applications that don't listen for Escape on its own, you can send Alt+char by pressing Escape, then char