G$earch

Supercharge Siri To Control Third-Party Apps With GoogolPlex

Posted by Harshad

Supercharge Siri To Control Third-Party Apps With GoogolPlex


Supercharge Siri To Control Third-Party Apps With GoogolPlex

Posted: 21 Apr 2014 06:01 AM PDT

Introduced as a feature in iPhone 4S back in 2011, Siri has allowed iOS users to control their apps via voice commands. However, this does not extend to third-party apps, unless you jailbreak your iOS device.

The good news is a hack called GoogolPlex, designed by 4 freshmen from the University of Pennsylvania for the PennApps Spring 2014 hackathon, is about to change all that.

Siri Logo

By using a man-in-the-middle exploit, GoogolPlex directs your requests to Siri to their proxy server, where it is then analyzed to work with a wider range of commands, more than what Apple allows. More good news, this hack does not require a jailbreak, can easily be installed in a minute, and can be customized to your needs with javascript.

Setting Up GoogolPlex

To set up GoogolPlex, go to Settings > Wi-Fi. On the network you are currently on, press the i symbol next to it.

iOS Wi-Fi Menu

Scroll down until you reach HTTP PROXY. Select Auto and enter "http://totally.betterthansiri.com" in the URL field.

HTTP PROXY

Once configured, activate it by giving Siri a command that starts with "GoogolPlex". For example, "GoogolPlex play Michael Jackson".

This will activate GoogolPlex and since this is the first time you are using it, you will be prompted by iOS on whether you trust this server or not. Tap Continue. You will then be asked to login or register an account.

GoogolPlex First Time

Signing up is real easy and you can even use it to create custom commands later on.

GoogolPlex Register

Once you have created an account, you will be asked to log into your account to start using GoogolPlex. Done? Time to start giving commands using GoogolPlex.

GoogolPlex Login

Features

GoogolPlex frees users to use Siri with third-party apps, allowing them to create custom commands of their own, or obtain scripts that other people have created, all from the web app.

Commands are invoked by saying "GoogolPlex [Say command here]" when Siri is activated.

GoogolPlex Commands

As a start, GoogolPlex will provide you with some default commands for you to test out. For example, there is a default command to play Michael Jackson songs from Spotify by saying "GoogolPlex Play Michael Jackson". GoogolPlex will instruct Siri to open Spotify and play Michael Jackson songs.

GoogolPlex Demo

GoogolPlex also allows the user to interface with other hardware such as Nest Learning Thermostats and Tesla Motors. After giving it your credentials, you can configure Siri to control the hardware – for instance, locking and unlocking your car – using only your voice.

Creating Custom Commands

One of the more interesting and powerful features of GoogolPlex is its ability to let you create custom commands. These custom commands are created using the web app and are in JavaScript. You can configure the trigger needed for your custom command, and specify exactly what the response will be (or even import JavaScript libraries into the app, should the need arise).

To write your own command:

1. Login to your account and click on Add a New Siri Command on the web app.

2. Name your custom command, type in the phase that will trigger the command in Siri, and create the script needed for it to function. Below is a user-generated command to pull a random Wikipedia article using the command "GoogolPlex give me a random article".

GoogolPlex Create Command

3. Press Save Siri Command. your custom command can now be used on your iOS device. If you aren’t happy with your command, you can edit it later or delete it.

4. If you think others will be able to benefit from the command, you can share it with your friends or submit it to the developers to have it featured on their Featured Commands page.

GoogolPlex Custom Command Share

Featured Commands

The Featured Commands section is where you can browse through the commands made by other users. If you are not comfortable creating your own commands, you may be able to find that command in this section.

Just install the command for immediate use. You can even take a look at the source code of the command to learn how it works.

GoogolPlex Featured Commands

Conclusion

GoogolPlex is an incredibly useful hack for Siri that greatly expands its functionality to cover third-party apps. Apple has yet to respond to this hack (some hacks in the past weren’t so lucky) but for now, this is easily the best way to expand Siri without a jailbreak.








Is Less Always More? Getting To The Bottom Of Minimalism

Posted: 21 Apr 2014 03:01 AM PDT

We’ve been told time and time again that simple design is better than complex design. Everyone from Seth Godin to Steve Jobs has expressed their feelings on the matter, and the consensus seems to be that true simplicity and minimalism are the way to go.

Remove everything that doesn’t absolutely need to be there, and you will inevitably arrive at the perfect design. But is that always true? We’re going to test this theory of less is more, and get to the bottom of why it’s so universally accepted.

Remove What Doesn’t Work?

It’s definitely true that removing elements of a design that aren’t fitting in with the end goal is the best, most obvious way to simplify a design. But what does that mean, exactly? Does it mean you should just keep taking things out until there’s only the bare minimum left?

How do you know when to stop removing design elements?

Richard Seymour of Semourpowell argues that design is more than simply a mechanical game of addition and subtraction. "You shouldn’t be putting more into something than it needs," Seymour explains in the Design Insights video series. "But the fact is, the need may be an emotional need."

What Seymour is getting at is that, sometimes, what doesn’t seem to "work" from a pure design perspective may actually be vital from a psychological perspective.

Simple vs. Easy

Take, for example, your favorite web browser. I’m going to go out on a limb here and assume that, for the majority of you, that will be either Microsoft Internet Explorer or Mozilla Firefox. Those are the two most widely used browsers in the world, but are they the most efficient from a design point of view?

Well, no. Google’s Chrome browser, I’d argue, is probably the most streamlined in terms of design when it comes to mainstream browsers. But it’s not the most popular browser, even though everybody who uses Google knows about it. There are certain features built into the IE and Firefox software that users are convinced they need and refuse to go without.

Therefore, they are necessary. Emotionally necessary.

What Do They Need?

Paying attention to your users’ emotional needs is one of the most critical jobs you have as a designer. You need to be able to judge when a design should be reduced down to the barest elements without angering the vast majority of the people who are using it. Emotionally, they may need to have more options, even if it’s not true. They may simply want the comfort of knowing that they have multiple ways of arriving at a solution.

Think of Adobe Photoshop. There are at least 10 different ways to do just about everything in that program, and the majority of its users wouldn’t have it any other way. Think about what happens when Adobe makes just the slightest adjustment to one of its functions or tools. If you guessed "maniacal howls of protest", then you’d be right.

Even if the change is for the better, there will always be a vocal group of users who will violently protest it, purely for emotional reasons.

The Functionality Of Users’ Needs

Do people need an absolute, bare bones interface? Do they need something that’s so simple and elegant that it brings them to tears of joy every time they look at it? Or do they need something that does the job it needs to do – something that works?

You the designer may be viewing your design from an aesthetic perspective, but don’t forget that (most of the time) your users are looking at it from a purely functional perspective. They are looking to use your design, not discuss its artistic merits.

This is a very difficult lesson for even the most experienced designers to learn. How many times have you seen an award winning ad campaign, mobile app, or book cover design and been completely perplexed as to how it solves any kind of design problem?

Sometimes, you may feel as though the design world rewards beauty over functionality, but the real proof of a design’s success lies with the people it’s supposed to be helping. The examples of gorgeously designed, award-winning failures in design history are numerous enough to fill entire volumes.

What Do You Think?

Do you think that simplicity and minimalism should be the end all, be all of a designer’s creative vision? Are there other ways to approach design that truly value function over form, while still being considered "good design"?








Managing Multiple Drafts Easily in Jekyll

Posted: 20 Apr 2014 10:01 PM PDT

Despite of only being a static website, we can utilize a plugin in Jekyll too. Let’s continue our discussion on creating drafts from the previous post. As you can see before – in the previous post – we created the drafts and put them within a special folder called _drafts first.

Then, as we are ready to publish it, we move them to the _posts folder with the proper naming format.

It sounds easy right? it should be no problem if you’d only manage 1 or 2 post drafts. But, when you have 5-10 post drafts, changing each file name, and specifying the correct date by hand can be a pain. Let’s take a look how we can simplify the workflow with a Jekyll plugin.

Getting Started

Before we go any further, let’s create a new folder named _plugins; this folder is required as Jekyll will search and execute plugins from within the folder. We also need to create a new file named publisher.rb in it; technically, you can freely name that file with any name you like.

We will be using a Jekyll plugin created by Jeffrey Sambells. This plugin will take care of the hassle when publishing a post from a draft in Jekyll. It will rename the file properly, along with the date. And it will also specify the date within the post Front Matter section.

The following is the source code of the plugin, available from this Gist page. Copy this code below and paste it to the publisher.rb file that we have just created.

 module Jekyll class PostPublisher < Generator safe false def replace(filepath, regexp, *args, &block) content = File.read(filepath).gsub(regexp, *args, &block) File.open(filepath, 'wb') { |file| file.write(content) } end def generate(site) @files = Dir["_publish/*"] @files.each_with_index { |f,i| now = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") replace(f, /^date: unpublished/mi) { |match| "date: \"" + now + "\"" } now = Date.today.strftime("%Y-%m-%d") File.rename(f, "_posts/#{now}-#{File.basename(f)}") } end end end 

If your Jekyll server is currently running, restart it for the plugin to work.

Using the Plugin

To use the plugin, we need to create a new folder named _publish. We will move our post drafts to this folder, once we are ready to publish it. However, before doing so, set the date in the post draft’s front matter to unpublished, like so

 --- layout: post title: "This is My Second Post" date: unpublished --- 

Now, move the draft to the _publish folder.

jekyll-plugin/

As mentioned, Jekyll will automatically move the folder to _posts as well as set the post date, then publish the post for you.

Final Thought

We have seen that Jekyll is extensible with a plugin. In this post, for instance, we used one to simplify the process of publishing a draft. You can find more Jekyll plugins in this page: Available Plugins.

Now that we have learned how to setup Jekyll, and publish a post draft. In the next post, we will show you how to publish Jekyll blog to an online server via FTP. Stay tuned!








0 comments:

Post a Comment