Solve for All Demo Transcript

This is the transcript of the demo video, which is 20 minutes long. There is also a shorter version available.



[Disable thumbnails and embedded video, clear plugins,

remove Dating Engine, Conservative News Engine, set JDK inline docs to use JDK 7,

make browser thinner, start on blank page, clear form history]


Hi, my name is Jeff Tsay. I'd like to introduce you to a search engine I've been working on, called Solve for All. Solve for All is optimized to give you more choices, while respecting your privacy. It's got some unique features which I'll show you in a demo.


But before that, let me explain a few ways Solve for All is different from other search engines. First of all, it gives you more results from your favorite sites. Solve for All is integrated with a feed reader, and you get results from your subscribed feeds when you search. You can also add plugins that produce blocks of content and links to your favorite sites.


Next, Solve for All allows you to create and use other user's Engines. You can think of an Engine as a mini-search engine for a specific domain, like deals, programming, or gaming. Since each Engine is focused on a particular domain and hand-crafted by users, Engines can give you better results than a general web search.


For those of you concerned about your privacy, good news: Solve for All doesn't collect your search history unless you opt-in. Unless you explicitly give Solve for All permission, it doesn't share your personal data or search history with anyone, even in an quote-unquote anonymized” form – which is often a privacy disaster. Solve for All also deletes its activity logs once they are 6 days old. That means even if we are forced to hand over data by the government or if we get hacked, no activity more than 6 days old would be available.


Of course, when search engines share your data, it's usually with advertisers that track you. They're building a detailed profile of you that includes your location, what sites you visit, and what ads your click. The majority of ads suck and Solve for All doesn't pollute your search results with them. (For the sake of full disclosure, I should mention that there are text ads in our image search results, since they're provided by Yahoo. I'm going to get rid of them by the end of next month.)


Finally, for all you website owners and hackers out there, Solve for All is designed to be extendable by the community. You can write plugins in Javascript, make API calls, upload searchable data – and your plugins and data become live immediately, without requiring approval or any integration steps. Almost all of the plugins I'm going to show you today are open source and can be updated just by uploading files to Solve for All. For site owners, developing a plugin is great way to keep your users engaged with your site. For hackers, it's pretty nifty to have your plugin produce beautiful, unique content that is included in your search results, and if you choose to share, in other users' search results too.


If there's enough interest, I'm also thinking of making the project open source – so let me know if you're interested in contributing. One reason I'm building Solve for All is to create an open alternative to the black box search engines owned by mega-corps, and I hope you'll join me.


OK, let's take a tour of Solve for All.


2.1 I'm going to start on a blank page in Firefox (Chrome works as well), and go to solveforall.com.


2.2 Next, I'm going to login . You can login with a username and password that you create, or external accounts like Twitter, GitHub, Google, Facebook, or LinkedIn. I'm going to use my Twitter account.


3.1.1 The first search I'll try is “cougar”, [just type “coug”] notice the autocomplete.


3.1.2. On the left side we have search results from the public web that you expect. These aren't personalized to you, so you aren't being filter bubbled.


3.1.3 On the right side, we've got results from Wikipedia, Crunchbase, News, Feeds, and Videos.

3.1.4 The blocks of content from Wikipedia and Crunchbase are called inline answers, and the're generated by plugins I've either chosen or inherited from the default settings.


3.1.5 See these double arrows? That means you can expand the answer like this.

3.1.5.1 In the case of Wikipedia, I can also select Full Site, and look at the page without leaving the search results page.

3.1.5.2 I can follow links in the Full Site like normal, then

3.1.5.3 I can hit this up arrow to go back to the original page,

3.1.5.4 or hit the double arrow again to restore the answer to its original place.


The News, Feeds, and Video results are in a container that you can scroll right to see more.

Now this From your Feeds container has search results from the Feeds that I read. In this case, apparently Cougar is a company that makes computer hardware, and these are results from dealnews.com which I subscribe to.


3.1.6. In case I don't find what I want, I can always check other search engines by clicking these quick links. I've configured my account to always show quick links to DuckDuckGo and Google. I'm going to try DuckDuckGo because I value my privacy. [Click DDG quick link] Not bad.


3.1.7.1 Now, Solve for All defaults to the most private settings, but if I'm willing to give up some privacy I can enhance the look and behavior of my answer page. So let me open the search options panel and check “Enhance links with thumbnails” and “Open videos in embedded player”.


3.1.7.2 I'm going to reload for the settings to become effective.

3.1.8 Now I get thumbnails, and

3.1.9 if I go to videos, I can play one without leaving the page. (Select Cougar Talk, play and then pause). I love cats but, wow, that's annoying. I could also make the video full screen.


3.2 You may be wondering, how does Solve for All decide when to show the inline answers, such as the Wikipedia and Crunchbase results on this page? Well, the answers are produced by plugins called Answer Generators. You can activate Answer Generators in 3 different ways:


3.2.1 The first way is by content recognition. That means Solve for All is looking in your query for a matching pattern.

3.2.1.1 Let me type an address (906 Cardiff Drive, Austin, TX).

3.2.1.1.1 Now I see Google Maps as the top result,

3.2.1.1.2 and I also get the estimated property value from Zillow. What happened is that Solve for All recognized that I entered an address, and I have the Google Maps and Zillow Answer Generators activate whenever an address is found.


3.2.1.2 Another recognizer is for math expressions, so I'm going to try 355/113. MathJS computes the result which suspiciously close to pi. (enter pi) I can keep trying more expressions, like sqrt(3)/2. I also get this quick link to Wolfram Alpha because Solve for All detected a math expression.


3.2.1.3 Now let me search for a Java class name

[Enter “inputstream”] OK we have the Javadoc for Inputstream here, with the methods, and maybe I don't need to leave this page. If I need more details, I can click this link and I get taken to the full Javadoc. Unfortunately, I've upgraded to Java 8 so I don't want to be sent to the Javadoc for Java 7. [Close doc] What I'll do is modify a setting for this Answer Generator by clicking on the hamburger icon, then Settings. Then I'm going to choose the Setting tab and I see the current JDK version is 7. Let's change it to 8, then save. Once it's saved, I'll reload my query, and if I click the link for InputStream, I should get the Java 8 version of the documentation. Generally, any Answer Generator can have settings that customize answers to your preferences.


There's already a lot of plugins available for programming languages, including Javascript, Python, and Ruby, and I'm hoping others will add more.


3.2.2 The second way to activate plugins is with keywords. First I'll type “yelp san diego tacos”. So I get a list of restaurants in San Diego with good tacos (scroll the list). The “yelp” keyword in my query activated the Yelp Answer Generator.


3.2.3. As another example of keyword activation, I can activate a Twitter search by typing typing “twitter snowden”. That shows me tweets by Snowden and about Snowden.


3.3 Finally, I can activate Answer Generators by using activation codes. They're inspired by DuckDuckGo's bangs, so here's a shout out to them. To use them, I just include a question mark, plus the activation code at either the beginning or end of a query.

3.3.1 Let's say we want to geocode the address we searched for last time. I'll start entering the same query, (choose the item in the history,) and add a space, a question mark, then “osmgc”,

which is the activation code for the OpenStreetMap geocoder and … we get GPS coordinates.


3.3.2 Let's try another activation code. I'm going to use the URL encoder Answer Generator, (type ?urlenc love=hell), which has the activation code “urlenc”, and we get the URL encoded result.


3.3.3 Activation codes can also produce links that are automatically opened for you. If I want to quickly search Stack Overflow, I can type “?so python random string”. Looks like Firefox blocked my plugin, so I'm have to enable popups. And try again. OK, so it opened. So StackOverflow opens I get a bunch of results about generating random strings in python.


I can also open multiple sites by including multiple activation codes. Let's say I want to search Reddit, IGN, and Giphy for Uncharted 4 (enter ?ign ?reddit ?giphy uncharted 4).


3. Related to using multiple plugins at once, let's talk about Engines again. As I mentioned before, Engines are like mini-search engines for a specific subject area. When you search with an Engine, you get results from a curated set of Answer Generators and Feeds for that subject.


3.1 Let's try out some Engines. I've got some Engines activated by default, but I can also activate an Engine with the

greater than sign, then the activation code for the Engine. Let's say I'm looking for a background image for my website that I can use royalty-free. I want to use the Free Clip Art Engine, which has the activation code “freeicon”. So to use the Engine, I type [type “>fr”] >freeicon pattern”, notice the autocomplete. OK, I get some results from some feeds as well as links to the search pages of free clip art providers. Let me check Clipart.

How about unicorns”, because my site is going blow up right after this video drops. [Type “>freeicon unicorn, click on GoGraph]


3.2 Another useful Engine is URLtest. Let's try “>urltest https://www.google.com” I get a bunch of links that give me information about google.com.

(Open QualSSL Labs) Looks like Google gets a B for SSL, probably because they're supporting browsers running on abacuses.

(Open PageSpeed Insights). Let me check the speed with Google's PageSpeed tool. Hmm, not looking so good on mobile… at least they're honest. I can also check Google's security headers and whether they're blocked in China.

Let's check the security headers they use (Open securityheaders.io): hmm, I think E is worse than D, right?


3.3 If you don't know the activation code for an Engine, you can also activate Engines with the search options dropdown.

(Open Search Options). Let's say I want to find deals on laptops. I'll start looking for the engine I want by typing in the filter box.

(Start typing “de”, wait for autocomplete) OK, I'm going to choose the Deals Engine, and start using it.

[Type “laptop”] The Deals Engine contains Feeds from some deal sites, and links to the search pages of deal sites, and finally the Amazon Answer Generator so I have a point of comparison. The Slickdeals link here is nice because I can preview the page, but I can check out the other sites too (click Ben's Bargains). I can keep using the Engine, by replacing “laptop” with something else. Let's try “robot vacuum”.


3.4 [Open Search Options] Normally when you select an Engine, only that Engine is used. But you can include results from your default Engines by unchecking this box (uncheck Use selected plugins only, then resubmit query).

So now I get the results from using the Deals Engine, along with the results I would have seen by doing a normal search.


3.6 OK, let's go back to searching normally. I'm going to clear my selected plugins [hit Clear Selected Plugins], and recheck “Use selected plugins only”.] Let's do a search for “immigration”.

I've created a liberal news Engine, which I'll show you in a moment. Because I've made this Engine active by default, I get mostly liberal sources in my Feed results, in this case from NPR, Huffington Post, and Slate.


4. At this point you might be asking, how do I choose my default Engines and how do I create my own? There's a customization section in Solve for All (Open customize menu, choose Installed Engines) in which you can do really detailed customization, but an easier and more interesting way of doing this is to use the Feed Reader. Let's check it out by clicking on

Reader” in the top bar.


4.1 (Click on Reader) This is the Feed Reader. In the middle pane, I've got a list of new articles from all of the Feeds that I've selected.


4.2 In the left pane, I see these Folders that contain individual Feeds.


The main concept here is that these Feed Folders are actually Engines that are also used for searching. Let's take a look at one. (Click on Bleeding Heart News). Bleeding Heart News contains Feeds from a few liberal sources – NPR, Rollingstone, Slate, and Huffington Post.


4.3 I can read articles from all those sources when selecting the Engine. I can also drill down to individual Feeds. I'm going see what's going on in Hacker News, which is in my Misc Engine (Open Misc, the click on Hacker News).


4.4 For each article in the Reader, there's a few actions available to me. I can go to the comments for it [click on comments for any Hacker News article], share the article [click on Share, then look the options], or I can add more plugins from the same site, which I'll skip in the interest of time.


4.5 You can search your Feeds from within the Reader at different levels. I can search the Hacker News feed by typing the filter box (enter “react”). I can search within Engines (go to Bleeding Heart news, enter “racism”), or search all your Feeds by going to All Feeds (Enter “europe”).


4.6 Now I'm going to create a new Engine about Dating. I'll click on this orange folder with a green plus and name it.

Now I want to add a feed (Click Add Feeds …) I'm interested in cougars, so let me find some Feed about them (Type up to “coug”) Cougar Dating and Cougar Dating Advice sound awesome, so let me add them. Now they're in my Reader.


It's also possible to add Feeds from a domain or URL, but I'll skip that in the interest of time.


Now I have two Feeds in the Engine and I can read both Feeds together. If I collect enough interesting Feeds, I can share this Engine (hit share button). That way other users can get the benefit of my knowledge, plus my superior taste in women.


4.7 It's also possible to add Feeds from a domain or URL. I'm going to add the adbusters.org Feed this way. (Go to Misc Engine, Add Feeds, enter adbusters.org, add it.)


4.8 If you use an existing RSS reader already, you can import your Feeds in the Settings section of the Reader.


4.9 Now let's add a community-created Engine, by clicking the orange folder with a magnifying glass in it. I'm going to look for an Engine to balance my liberal Engine, so let me search for Conservative … (type “cons”) OK, Conservative News, sounds good, now let me add it. (Hit Next, then Add.) Now I can read news from a curated set of conservative Feeds even though I'm not familiar with them myself. Looks like Hot Air, Red State, and National Review are where conservatives get their news.


4.9 The last thing I'm going to show you in the Reader might be helpful if you're reading Feeds in a foreign language or want to lookup information while you're reading. If I make my browser a little wider, I see a sidebar on the right. Now if I select some terms in the main pane, the right side will show information about what I selected. (Select Donald Trump, “vote”).


I can also lookup Chinese words when I read my Taiwan News Engine. (Go to Taiwan News, select a couple words).


Finally I can lookup terms directly in this search box. Let me check my Chipotle stock [Enter “cmg”].


5.0 Now that I've added some Engines and Feeds to the Reader, let's see how that changes some of my search results.


5.1 First I'm going search for “cougar” again. Now I see different results in the Feeds container, about the cougars that interest me.


5.2 If I search again for “immigration”, I get results from Redstate and Hotair, in addition to Slate and NPR. That's because I added the Conservative News Engine to my default Engines.


5.3 If I want to search with only the Conservative News Engine, I can activate the Engine with an activation code, “>conserve climate change”. Or I can look at all the recent articles in the Conservative News Engine by leaving out the query: “>conserve”.


5.4 Here's another way to add plugins to your Engines. Let me use the Ruby Engine to search for Hash. [Go to RubyFlow result] Now if I think RubyFlow is a good source of information, I

I can add more plugins from the site by clicking this hamburger icon, then selecting More from ruby.com. I'm going to add it to my Misc Engine and it will now appear in the Reader.


5.5 Finally you can also use activation codes to search individual Feeds. For Feeds, I use a forward slash, followed by the activation code. Let's say I want to look for articles from Designer News about Wordpress. Since the activation code for the Designer News feed is “dn”, I can type “/dn wordpress” to see the results. If I like one of the results, I can add plugins from the site. Say I want more results from IGN. I click the hamburger in the result, and choose “More from Databricks”. I see that there are two available. I'm going to add the Databricks Feed to my Computing Engine. Now I can read it in the Reader, or search it when I use my Computing Engine, like this: “>compute spark”.


If I just want to quickly check the most recent articles on Designer News, I can omit the query and type “/dn”. Or “/hn” for Hacker News. Or “/rfunny” for the Funny subreddit. And there are many others.


OK, that's it for the demo. I hope you've found something useful for you. Even if you didn't, please give Solve for All a try. I really need your feedback, so I can make this better. Also if you're a developer, please check out the developer docs to create your own plugins. It's really easy and I'm here to help you if you get stuck. I'm looking forward to seeing what awesome stuff you come up with! My hope is that Solve for All will become a truly amazing search engine once there are many useful Engines and plugins built by lots of smart people, but I need you help to make that a reality. Have fun, and hope to hear from you soon!