Look through the key statistics analysis before diving in deeper into our report:
Parameter | Current result | Assessment |
---|---|---|
Meta title | Try Fuzzy: A Try Syntax Alternative | As meta title is a ranking factor, it's quite important to stick to search engine recommended length of aroun 50-60 characters. This website's meta title is 35 characters long. |
Description | It's no secret that I'm not a fan of try syntax, it's a topic I've blogged about on [several][0] [occasions][1] before. Today, I'm pleased to announce that there's a real alternative now landed on mozilla-central. It works on all platforms with mercurial and git. For those who just like to dive in: ```bash $ mach mercurial-setup --update # only if using hg $ mach try fuzzy ``` This will prompt you to install [fzf][2]. After bootstrapping is finished, you'll enter an interface populated with a list of all possible taskcluster tasks. Start typing and the list will be filtered down using a fuzzy matching algorithm. I won't go into details on how to use this tool in this blog post, for that see: ```bash $ mach try fuzzy --help # or $ man fzf ``` For who prefer to look before you leap, I've recorded a demo: <video width="100%" height="100%" controls> <source src="/static/vid/blog/2017/mach-fuzzy.mp4" type="video/mp4"> </video> Like the existing `mach try` command, this should work with mercurial via the `push-to-try` extension or git via `git-cinnabar`. If you encounter any problems or bad UX, please file a bug under Testing :: General. ## Try Task Config The following section is all about the implementation details, so if you're curious or want to write your own tools for selecting tasks on try, read on! This new try selector is not based on try syntax. Instead it's using a brand new scheduling mechanism called [try task config][3]. Instead of encoding scheduling information in the commit message, `mach try fuzzy` encodes it in a JSON file at the root of the tree called `try_task_config.json`. Very simply (for now), the decision task knows to look for that file on try. If found, it will read the JSON object and schedule every task label it finds. There are also hooks to prevent this file from accidentally being landed on non-try branches. What this means is that anything that can generate a list (or dict) of task labels can be a try selector. This new JSON format is much easier for tools to write, and for taskgraph to read. ### Creating a Try Selector There are currently two ways to schedule tasks on try (syntax and fuzzy). But I envision 4-5 different methods in the future. For example, we might implement a `TestResolver` based try selector which given a path can determine all affected jobs. Or there could be one that uses globbing/regex to filter down the task list which would be useful for saving "presets". Or there could be one that uses a curses UI like the `hg trychooser` extension. To manage all this, each try selector is implemented as an `@SubCommand` of `mach try`. The regular syntax selector, is implemented under `mach try syntax` now (though `mach try` without any subcommand will dispatch to syntax to maintain backwards compatibility). All this lives in a newly created [tryselect][4] module. If you have want to create a new try selector, you'll need two things: 1. A list of task labels as input. 2. The ability to write those labels to `try_task_config.json` and push it to try. Luckily tryselect provides both those things. The first, can be obtained using the [tasks.py][5] module. It basically does the equivalent of running `mach taskgraph target`, but will also automatically cache the resulting task list so future invocations run much quicker. The second can be achieved using the [vcs.py][6] module. This uses the same approach that the old syntax selector has been using all along. It will commit `try_task_config.json` temporarily and then remove all traces of the commit (and of `try_task_config.json`). So to recap, creating a new try selector involves: 1. Add an `@SubCommand` to the [mach\_commands.py][7], which dispatches to a file under the [selectors][8] directory. 2. Generate a list of tasks using [tasks.py][5]. 3. Somehow filter down that list (this part is up to you) 4. Push the filtered list using [vcs.py][6] You can inspect the [fuzzy][9] implementation to see how all this ties together. ### Future Considerations Right now, the `try_task_config.json` method only allows specifying a list of task labels. This is good enough to say *what* is running, but not *how* it should run. In the future, we could expand this to be a dict where task labels make up the keys. The values would be extra task metadata that the taskgraph module would know how to apply to the relevant tasks. With this scheme, we could do all sorts of crazy things like set prefs/env/arguments directly from a try selector specialized to deal with those things. There are no current plans to implement any of this, but it would definitely be a cool ability to have! [0]: https://ahal.ca/blog/2015/try-syntax/ [1]: https://ahal.ca/blog/2017/fuzzy-try-chooser/ [2]: https://github.com/junegunn/fzf [3]: http://gecko.readthedocs.io/en/latest/taskcluster/taskcluster/how-tos.html#schedule-a-task-on-try [4]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect [5]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect/tasks.py [6]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect/vcs.py [7]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect/mach_commands.py [8]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect/selectors [9]: http://dxr.mozilla.org/mozilla-central/source/tools/tryselect/selectors/fuzzy.py | This meta description is 5458 characters in length. Google suggests up to 320 characters at the very most to make sure the whole meta description is visible in search results page. |
<meta> keywords | ateam, fzf, mozilla, try | Strangely enough, meta keywords still seem to be used. We would not go down that road unless very carefully - meta keywords have not been known as a positive ranking factor for a while now. |
Site speed | Around 1.1257 seconds | The website load speed is rather good. |
Alexa global rank | 5628003, as last checked | Based on Alexa Global, we can assume the website is not very popular. Mind you, Alexa's worth is questionable at best. |
Links on homepage | Around 113 links | This is a well-judged amount of links for a homepage. |
Backlinks amount | Approximately 10 | The number of backlinks seems awfully low. If possible, the webmaster should work towards building more through quality content and public awareness. |
HTML size | 24.4KB | A very good result, this. Remember, search engines such as Google place a lot of their website ratings on its speed. |
Website host server overview | Server status: online. Server IP address for this website is 66.175.210.201. | We apologize, but for some reason we were unable to gather enough data to provide a detailed insight at this time. |
If the basic information we presented you with above is not enough, get ready to dive in much deeper!
Now that the numbers are taken care of, we can go deeper and try to analyse the website from a user's perspective. More specifically, let's see if we can identify the target audience as well as a few related websites and categories.
Parameter | Current result | Assessment |
---|---|---|
Alternative websites | zonca.github.io mattjmorrison.com codekills.net androidtutorials60.weebly.com ianlewis.org |
These websites fall into the same categories as ahal.ca, more or less. By extension, they compete with the analysed website for the same target audience. |
Trying to acquire very accurate visitor data is immensely difficult and can only be done when given direct access to the server. However, there are ways to get approximate numbers.
The numbers themselves probably say enough, but we'll add some insight where possible.
Parameter | Current result | Assessment |
---|---|---|
Approximate time on site | 2:09 | Pretty good for an average time spent, wouldn't you say? |
ALEXA rating is based on the number of visitors a given page receives. The higher the visitor count, the higher the rating. Currently, ALEXA has over 4 million websites indexed. If you sense cynicism in our words, you're not mistaken - we think Alexa rating is overrated, to put it mildly. A website's worth (and contextual popularity) is more than the sum of the views. So take the rank with a grain of salt.
Servers are physical storage devices that contain all the files and databases associated with a specific website, sometimes more than one. At times, a server makes up several virtual devices - separate servers used for shared hosting (tends to be cheaper). Entering website address into the address bar of your browser starts the request process during which your browser contacts the server and asks for specific files and database entries in order to display the requested website.
What follows is certainly very geeky, but informative for the knowing. Dig in:
Header detail |
---|
HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Wed, 22 Nov 2017 06:04:26 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie Strict-Transport-Security: max-age=15768000; includeSubDomains; preload; X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block X-Robots-Tag: none |
Now that you are hopefully done with ahal.ca, we invite you to read more of our in-depth reports. Try entering a new domain address in the search form at the top of this page, or on the homepage. Alternatively, refer to this list for more website overviews:
We have found so many alternative TLD extensions for ahal.ca. Here is the full list with 580 entries:
The following list of most frequent domain address mistypes associated with ahal.ca contains at least 1157 entries: