Chrome, HTML5, JavaScript, webdev

Chrome Extension For Enterprise Internal Usage

Chrome ExtensionsAt the beginning of the year, I’ve worked with a big organization that wanted to avoid the automatic suggestions Chrome is making in the omnibox (=the top field in Chrome, where you type searches and see the url).

Their main requirement was the need to allow employees to type a word and get the internal site that they are use to see. For example, the user will type ‘sale’ and Chrome will redirect them to the internal portal of sales. If you won’t modify Chrome it will run a google search on ‘sale’ and the results will be something like:

Screen Shot 2013-03-11 at 5.02.05 PM

The good news is that with this little extension you will be able to control the redirect of the users to the right internal location. Let’s jump into code.

This is the code of our manifest file that describe the extension


{
"name": "Omnibox customization example",
"description" : "To use, type 'get' plus a search term into the Omnibox.",
"version": "1.1",
"background": {
"scripts": ["background.js"]
},
"omnibox": { "keyword" : "get" },
"manifest_version": 2
}

view raw

manifest.json

hosted with ❤ by GitHub

Important to notice is that we setting the keyword ‘get’ in order to activate this extension. You can choose something shorter if you like. Another aspect is the “manifest_version”: 2 which making sure we are compatible with the latest spec.

This is the code of our background page


// each time the user updates the text in the omnibox this event
// is fired and we will use it to suggest search terms for
// our internal users.
chrome.omnibox.onInputChanged.addListener(
function(text, suggest) {
suggest([
{content: "CRM" , description: " fetch the internal CRM"},
{content: "ERP" , description: " fetch the internal ERP"},
{content: "sales", description: " fetch the lastest sales report"}
]);
});
// This event is fired with the user accepts the input in the omnibox.
chrome.omnibox.onInputEntered.addListener(
function(text) {
if (text.indexOf("/") < 1) {
text += "/";
}
if (text.indexOf("http") < 0) {
text = "http://our-internal-portal/&quot; + text;
}
alert('We are taking you to: "' + text + '"');
navigate(text);
});
function navigate(url) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.update(tab.id, {url: url});
});
}

view raw

background.js

hosted with ❤ by GitHub

Here we will listen to the events of omnibox.onInputChanged and omnibox.onInputEntered in order to execute our logic.

Another point you might want to consider is to go to:

chrome://settings/ -> Advanced ->  and then to disable these options:

  • Use a web service to help resolve navigation errors
  • Use a prediction service to help complete searches and URLs typed in the address bar
  • Predict network actions to improve page load performance

It doesn’t matter if you are working in a startup of few people or a big organization with 2.2M employees (e.g. Walmart). In both cases, you probably have internal network and  internal systems that your users will love to access with few keywords like: CRM, ERP, Sale, Marketing, QA etc’.

Happy coding & Happy Passover.

Standard
Chrome, HTML5, JavaScript, mobile

Mobile Web Apps

mobile devicesLast week I had the pleasure to give this talk in Multi Screen-X event we had in Campus TLV. Mobile web apps are built using web technologies: HTML5, Javascript and CSS. The main advantage is that you write your application once (e.g. one source code) and deploy it on every platform: Android, Chromebook, Chromebox, Chrome and ya… even iPhone and iPad. Why it’s important today?
Well… as we know, the web is a huge platform and the one common application in any platform is the browser. One look at this set of devices (which is just the tip of the  iceberg) will tell the story:

Screen Shot 2013-03-10 at 7.30.37 PM

On mobile devices the browsers’ current state, in terms of HTML5 support is (even) better then on desktops. You can see it per API in CanIUse.com or mobilehtml5.org Continue reading

Standard
Business, Chrome, HTML5, JavaScript, webdev

DevConTLV Summary

DevConTLVLast week, I had the pleasure to present at DevConTLV for the 3rd time. It a great conferance that bring to Tel Aviv some rock-stars from companies like: Github, CouchDB, Amazon and many others. The location (Ozen Bar) is a cool place where you can hear live music during the nights and drink good coffee during the mornings. So it is a natural location to such an event. Ahh… and yep, the opening of the day was done with a live rock band! (just like JSConf). Continue reading

Standard
Chrome, HTML5, JavaScript, webdev

Web Components Talk At HTML5-IL Meetup

Chrome love HTML5Last week I had the pleasure to take part in the first HTML5-IL meetup. If you are a front-end developer that live in Israel you should try and come to this group events. Lots of great developers, designers and others that share the same passion for the web. Great stuff. Unfortunately  I didn’t have more then 30min for this new, hot, complicated topic. So I hope to have more time to cover some of the aspects during the next meetup. From the four main aspects we touched only on the first two: Continue reading

Standard
Chrome, HTML5, JavaScript, webdev

HTML5 APIs At Google Developer Group Haifa (Hebrew)

html5-cakeIt was the first meeting of GDG Haifa at the technion. I gave the first talk about HTML5 (new) APIs that front-end developers should leverage. It was a good kick-off event and it seems that this group will produce many more quality events. You can check the demos and the slide at my project site.
Enjoy.

Continue reading

Standard
Chrome, HTML5, JavaScript, webdev

Web Components On Google Developers Live Israel (Part 1)

Google Developers Live Israel

Today, in our weekly Google Developers Live Israel show we spoke about HTML5 and web component. It was a macro level overview on this new edge of front-end development. This new project is composed of a group of technologies that should help us (web developers) create moderan web apps using HTML, CSS and JS. They do this by allowing toolkit makers to encapsulate their widgets and UI elements as easily reusable components.

We covered the main players:

  • Templates – We can think on it as a new HTML element. It allow us to inert chunks of clonable DOM that can be activated for later use (e.g MDV). You can think of it as objects you creating out of your class definition. This new ‘object’ can contain markup (=CSS) and script (=JS) so it’s much more powerful from the ‘just’ CSS that we have today. We can use it as a decorator to give new style and functionality to our custom (new) HTML element.
  • Custom elements – which can be looked as our toolbelt when we are coming to build a new web app and we wish to reuse ‘wheels’ and not reinvent them. We showed how to create new HTML elements by expanding HTML’s existing vocabulary.
  • Shadow DOM – It’s like the regular DOM you know (and love) but it’s down in the ‘shadows’ hidden from our eyes. It’s main goal is to give us encapsulations. It’s the glue that let us insert and work with our components. Think of a ‘tab’ component that you don’t need to ‘know’ about it’s style, functionality etc’. It will work for you and you can’t break it from your JS code because you forgot to use a namespace for your app logic.
  • Mutation Observers – and how to watch for changes in the DOM in the most efficient way. Continue reading
Standard
Chrome

How To Prevent Your Chromebook From Going To Sleep

CrOS no sleep for youThere are some cases where you wish your chromeOS, Chromebook (or Chromebox) will not to enter into sleep mode. A quick example is when you wish to use it in a conference to present a cool web experiment and you don’t want it to vanish after few minutes. Here are two quick ways to achieve it. Both are a bit of a hack… but it’s not a complicated process.

The hacker way

  1. Login with the admin user.
  2. Open a terminal by hiting CTRL+ALT+T
  3. Type the following
    1. shell (to drop into a standard bash shell)
    2. sudo stop powerm – to disable sleep when lid is closed. You could go with the longer version of: sudo initctl stop powerm but there is no reason to type more…
    3. sudo stop powerd – to disable all other power management features.
  4. Now logout from the menu – But do not restart! Why? because these settings won’t survive it.

The easy way

Install this Chrome extension – Caffeine after your clone/fork it from Github. It is an experimental extension for Google ChromeBooks that overrides the default power settings.
It is using this API:

chrome.experimental.power.requestKeepAwake()

which is still under experiment so you will need to enable it before the installation.

How to install:

  1. Go to about:flags on your Chromebook, enable “Experimental Extension APIs” and then restart your Chromebook.
  2. Go to extensions, toggle on Developer Mode, and click load unpacked extension.
  3. Choose the folder containing this source.
  4. Toggle / unToggle the menu icon to keep Chrome awake. Is it easy or what?

Happy new year!

[Update Sep 2014] – You can now have Keep Aware extension from the Chrome Web Store. This is the easiest way and it got two option: full system awake (sun is up) or display will go to sleep but network and the rest will continue to work (moon is up).

Standard
HTML5, JavaScript, life

Frontend Development Sources

Screen Shot 2012-12-18 at 10.34.00 AM

Here are a few new/cool sources I’ve bumped into during last week events (and meetings). It is always a great fun to talk with developers and learn on new tools that they are using in order to do their work. If you have something interesting, please don’t be a stranger and let me know…

HTML5

Standard
Chrome, HTML5, JavaScript, webdev

A Hangout On HTML5 APIs And CSS3 (New) Layouts

TALLINN Map

Last night, I gave this talk to Google Developer Group Tallinn about the new APIs that we have today in HTML5 and CSS3. It was (another) great hangout where you can ‘touch’ people that are quite far from your location and speak with them about mutual interest.

Some of the topics that I covered during the talk where: Continue reading

Standard
Chrome, HTML5, JavaScript, webdev

HTML5 New APIs In ILTechTalks (Hebrew)

Last week, I’ve went to live person HQ to give a talk in ILTechTalks on HTML5 and how you can use some of its new APIs in order to build you next web app. Today, web apps like: gmail, maps, google docs etc’ are consider to be modern web apps. They are rich, interactive applications that users spend long hours with them. There are few features that distinguish modern (or great) web apps from sites: Continue reading

Standard