Improving blog page load time
Page load time matters. Users are impatient and even Google now uses it as metric in their search results ranking. The default Wyam blog themes are a good starting point but what small changes can we make to improve page load times?
When I created the blog I chose to use the CleanBlog theme (preview). This, along with a few others, is provided out of the box by Wyam. They provide an excellent starting point to hit the ground running and a clean base to begin modifying.
Where to start?
Most blogs have the same set of initial priorities, ranging from the overall design to getting some eyes on posts. However, we all have a different order for these priorities. For me the first aspect is page load time, I like making things fast. I find it satisfying to take a hot spot in a critical path and finding ways to improve it. Often an impact can be made by simplifying the existing code, refactoring it to reduce the work done and hopefully making it clearer to read in the process.
A good place to start with the speed of web pages is PageSpeed Insights by Google which analyzes the content and then generates suggestions to make that page faster. As performance is now one of the key metrics Google uses for site ranking in their search results, it's worthwhile having a look to see what gets suggested. The scores can fluctuate by a couple of points between runs but I found that several runs gave an average of 73 for the home page. The key takeaway was the time required for render-blocking resources which looked like this:
| URL | Size | Potential Savings |
|---|---|---|
| …css/bootstrap.min.css(wyam.io) | 20 KB | 1,080 ms |
| …css/highlight.css(wyam.io) | 1 KB | 480 ms |
| …css/clean-blog.css(wyam.io) | 2 KB | 480 ms |
| …css/master.css(wyam.io) | 1 KB | 480 ms |
| …css/font-awesome.min.css(wyam.io) | 7 KB | 780 ms |
| /css?family=Lora:400,700,400italic,700italic(fonts.googleapis.com) | 1 KB | 780 ms |
| /css?family=…(fonts.googleapis.com) | 2 KB | 780 ms |
| …css/override.css(wyam.io) | 0 KB | 480 ms |
| …js/jquery.min.js(wyam.io) | 30 KB | 1,080 ms |
| …js/bootstrap.min.js(wyam.io) | 10 KB | 480 ms |
| …js/highlight.pack.js(wyam.io) | 25 KB | 930 ms |
| …js/clean-blog.js(wyam.io) | 1 KB | 180 ms |
| …js/d3.v3.min.js(wyam.io) | 53 KB | 1,230 ms |
| …js/trianglify.min.js(wyam.io) | 5 KB | 330 ms |
| …js/Please-compressed.js(wyam.io) | 3 KB | 180 ms |
| …js/background-check.min.js(wyam.io) | 4 KB | 180 ms |
That's a lot of resources for a home page with not much happening. Let's break down what's going on with all of this:
- Highlight is for code syntax highlighting
- Bootstrap, clean-blog, master and override are the CSS for the blog in general
- Font Awesome for the RSS icon
- Font files from google fonts used by the theme
- jquery.min.js, bootstrap.min.js, highlight.pack.js, clean-blog.js for general theme functions
- Background-check for switching text colour depending on the colour in the background on the header
- D3, Trianglify and Please-compressed for generating the image in the header
Yup, the image in the header is generated by JavaScript and it's render-blocking. This one's an easy win, we can remove the bottom 4 JavaScript files and replace them with a single webp image which isn't render blocking. Sure it's not quite as cool as generating a triangular mesh that's different per request but it's good enough for my purposes.
Next, I took a look at the font files. We're loading both Lora and Open-Sans in a variety of weights and italics. For my simple blog, I don't need all of these. For now, I removed all external fonts and I'll revisit the fonts I want on my blog in the future when I look at tweaking the design of the blog itself. In a similar vein, I removed the font-awesome file. It was been used for a single icon, the RSS icon. I replaced this with a piece of inline SVG to keep the benefit of using a font without the size of the entire file.
The final step in this process was to look at the CSS been used by the site. First up was Bootstrap, a lot of the CSS included by default wasn't been used so I used their online bundle builder to grab a version of the CSS with only bits I wanted in it. Note that this theme uses Bootstrap 3 and not the newer Bootstrap 4. I took a look at Highlight next. As it was so small I decided to remove the network hit and simple inline it in the page itself. I then did the same with the master.css given how small it was (less than 1KB). Note here that I'm currently minimizing the CSS before adding it inline.
Result
So after these relatively simple and quick tweaks what do we have to show for it?
Well running the site via PageSpeed Insights again gives us 100 for both mobile and desktop scores. When we look at the impact it's had in the Chrome network tab we can see the following:
| Requests | Transferred | Resources | Finish | DOMContentLoaded | Load | |
|---|---|---|---|---|---|---|
| Before | 25 | 342KB | 756KB | 1.44s | 1.06s | 1.28s |
| After | 9 | 246KB | 389KB | 386ms | 244ms | 344ms |
Even though the resource size was already reasonably low before we started, by making these changes we've cut our timings by almost 75%. Best of all the impact the changes have had on the design of the site is almost imperceptible (at least if we discount the header image) and the overall site is now simpler. Not too shabby for some relatively small changes.


The Job Designer application enables you to create and submit Hadoop MapReduce jobs to the Hadoop cluster. You can include variables with your jobs to enable you and other users to enter values for the variables when they run your job. The Job Designer supports MapReduce, streaming, and Java jobs. For more information about Hadoop MapReduce, see the Hadoop Tutorial.
Note:
|
Job Designer is one of the applications that is installed as part of Hue.
To start Job Designer, click the Job Designer icon ( ) in the navigation bar at the top of the Hue web page. The Job Designs page opens in the browser.
The Job Designer sample job designs can help you learn how to use Job Designer. To install the sample job designs, click Install Samples in the Job Designs window and then click Yes. The sample job designs are displayed in the Job Designs window. Job Designer removes the Install Samples button after the samples are installed so you can only install the samples once.
A job design specifies several meta-level properties of a MapReduce job, including the job design name, description, the MapReduce executable scripts or classes, and any parameters for those scripts or classes. You can create three types of job designs: MapReduce, streaming, and Java.
You can filter the job designs that appear in the list by owner, name, type, and description.
To filter the Job Designs list:
All job design settings except Name and Description support the use of variables of the form $variable_name. When you run the job, a dialog box will appear to enable you to specify the values of the variables.
All job design types support the settings listed in the following table.
| Setting | Description |
|---|---|
| Name | Identifies the job and its collection of properties and parameters. |
| Description | A description of the job. The description is displayed in the dialog box that appears if you specify variables for the job. |
| Job Properties | Job properties. To set a property value, click Add Property.
|
| Files | Files to pass to the job. Equivalent to the Hadoop -files option. |
| Archives | Archives to pass to the job. Equivalent to the Hadoop -archives option. |
A MapReduce job design consists of MapReduce functions written in Java. You can create a MapReduce job design from existing mapper and reducer classes without having to write a main Java class. You must specify the mapper and reducer classes as well as other MapReduce properties in the Job Properties setting.
To create a MapReduce job design:
| Setting | Description |
|---|---|
| Jar path | The fully-qualified path to a JAR file containing the classes that implement the Mapper and Reducer functions. |
Hadoop streaming jobs enable you to create MapReduce functions in any non-Java language that reads standard Unix input and writes standard Unix output. For more information about Hadoop streaming jobs, see Hadoop Streaming.
To create a streaming job design:
| Setting | Description |
|---|---|
| Mapper | The path to the mapper script or class. If the mapper file is not on the machines on the cluster, use the Files option to pass it as a part of job submission. Equivalent to the Hadoop -mapper option. |
| Reducer | The path to the reducer script or class. If the reducer file is not on the machines on the cluster, use the Files option to pass it as a part of job submission. Equivalent to the Hadoop -reducer option. |
A Java job design consists of a main class written in Java.
To create a Java job design:
| Setting | Description |
|---|---|
| Jar path | The fully-qualified path to a JAR file containing the main class. |
| Main class | The main class to invoke the program. |
| Args | The arguments to pass to the main class. |
| Java opts | The options to pass to the JVM. |
To submit a job design:
After the job is complete, the Job Designer displays the results of the job. For information about displaying job results, see Displaying Job Results.
If you want to edit and use a job but you don't own it, you can make a copy of it and then edit and use the copied job.
To copy a job design:
To edit a job design:
To delete a job design:
To display the Job Submission History:
In the Job Designs window, click the History tab. The jobs are displayed in the Job Submissions History listed by Oozie job ID.
To display Job Details:
In the Job Submission History window, double-click a Oozie Job ID. The results of the job display:


ArmorPaint is a stand-alone software designed for physically-based texture painting. Drag & drop your 3D models and start painting. Receive instant visual feedback in the viewport as you paint.
Work fast with the convenience of nodes. Paint with fully procedural materials. Build fill layers with material nodes. Use brush nodes to create patterns and procedural brushes.
ArmorPaint is designed from scratch to run completely on the GPU. This results in a smooth 4K painting experience on a medium-power integrated hardware. Up to 16K texture painting is seamless using a high-end graphics card.
Ray-traced baking, painting effects and viewport rendering features running on Direct3D12, Vulkan and Metal are ready for testing. ArmorPaint is powered by an in-house 3D rendering engine to achieve the best painting experience.
Integrate ArmorPaint into existing 3D software using the live-link plugins. Blender, Unreal Engine and Unity plugin previews are available for download.
Bake texture maps for high-poly models instantly on your GPU. Experimental ray-tracing builds featuring hardware accelerated ray-traced baking with Direct3D12, Vulkan and Metal are available for download.
Paint models in a viewport with true light simulation. Experimental ray-tracing builds featuring path-traced viewport rendering with Direct3D12, Vulkan and Metal are available for download.
Enhance any part of the software through plugins with super powers. Integrate new node systems or build custom material nodes.


Strip comments from JSON. Lets you use comments in your JSON files!
This is now possible:
{
// rainbows
"unicorn": /* ❤ */ "cake"
}
It will remove single-line comments //
and multi-line comments /**/
.
Also available as a gulp/grunt/broccoli plugin.
There's also json-comments
, but it's only for Node.js, inefficient, bloated as it also minifies, and comes with a require
hook, which is :(
$ npm install --save strip-json-comments
$ bower install --save strip-json-comments
$ component install sindresorhus/strip-json-comments
var json = '{/*rainbows*/"unicorn":"cake"}';
JSON.parse(stripJsonComments(json));
//=> {unicorn: 'cake'}
Type: string
Accepts a string with JSON and returns a string without comments.
$ npm install --global strip-json-comments
$ strip-json-comments --help
strip-json-comments input-file > output-file
# or
strip-json-comments < input-file > output-file
MIT © Sindre Sorhus


As an aspiring programmer doing the Epicodus Ruby on Rails Bootcamp my learning includes doing lots of hands-on projects, this page is going to take a look at what these projects are, include additional information about them and link to the Github repositories they are stored in.
Here is a list of the 5 most recent projects I have done so far:
Fast Cars Website
Fastest Production cars 2017, uses Bootstrap, image sizing changing based on view ports to be mobile friendly also, uses HTML, CSS. Link to this website's repository
Picture of me. My background is working in the IT industry for various small, medium and F500 companies as a business analyst. What coders did for projects was so amazing I had to go and learn how to do it! My current hobbies include hiking, travel, and learning to code.
Wikipedia Remake
Challenge was to remake the Wikipedia site, this is how far it got, still has issue with nested containers, uses HTML, CSS.
Link to this website's repositoryAlaska
Site made to advertise trips using bootstrap to be mobile friendly, uses HTML, CSS. Link to this website's repository
Basic site to learn how to makeand use container and selectors, uses HTML, CSS. Link to this website's repository, uses HTML, CSS
A basic first site to learn initial coding lesson, uses HTML. Link to this website's repository


This is a sample login html fragment that should be overridden by the loginContent.html file in the supplied configuration package. DEV


Boots finally brings back 3 for 2 sale - and this time you get an extra 10% off
The annual sale, which includes gift sets from brands such as Ted Baker, Yankee Candle, Soap and Glory and more, allows you to pick up the cheapest item for free
by Emma Munbodh, https://www.facebook.com/EmmaMunbodhBeauty chain Boots sent shoppers into meltdown last month after shaking up its famous three for two promotion in the run up to Christmas.
In an unexpected twist, the retailer scrapped the tradition - in exchange for a new 25% off deal which it promised would offer equal savings.
However, after widespread backlash over the chain's decision to axe the popular deal, Boots returned, reassuring shoppers that it would be back - and the day has finally arrived.
The annual sale, which includes gift sets from brands such as Ted Baker, Yankee Candle, Soap and Glory and more, allows you to pick up the cheapest item for free in stores and online throughout the festive season.
And it's now returned - with shoppers also able to get an extra 10% off when they spend £50 or more online.
A spokesperson for Boots said: "Every year we aim to offer better savings for our customers throughout the festive period.
"We aim to improve our savings throughout the festive period every year.
"Our customers tell us how much they value 3 for 2 when they have lots of gifts to buy, however, we know not all of our customers want or need to buy 3 gifts, so, this year we’re introducing new and different ways to help all our customers get great value at Boots, whatever their budget.
"Customers can expect to see either 3 for 2 or save 25% discount offers go live on amazing giftsets in the run up to Christmas, and don’t forget our unmissable Big Deals which are available until stocks last.
Shoppers can browse the three for two sale online, here.
To redeem the extra 10% off, use code FNF19 at the online checkout - the code is valid until November 27.
And remember to check your current accounts for any cashback offers on top.
Santander has been known to offer up to 10% off when you activate the 'retailer offers' tab online or via its banking app, while TopCashback is currently offering 2.2% back on your entire online shop.


13.30. Release 0.210
General Changes
- Fix planning failure when aliasing columns of tables containing hidden columns (#11385).
- Fix correctness issue when
GROUP BY DISTINCT
terms contain references to the same column using different syntactic forms (#11120). - Fix failures when querying
information_schema
tables using capitalized names. - Improve performance when converting between
ROW
types. - Remove user CPU time tracking as introduces non-trivial overhead.
- Select join distribution type automatically for queries involving outer joins.
Hive Connector Changes
- Fix a security bug introduced in 0.209 when using
hive.security=file
, which would allow any user to create, drop, or rename schemas. - Prevent ORC writer from writing stripes larger than the max configured size when converting a highly dictionary compressed column to direct encoding.
- Support creating Avro tables with a custom schema using the
avro_schema_url
table property. - Support backward compatible Avro schema evolution.
- Support cross-realm Kerberos authentication for HDFS and Hive Metastore.
JDBC Driver Changes
- Deallocate prepared statement when
PreparedStatement
is closed. Previously,Connection
became unusable after many prepared statements were created. - Remove
getUserTimeMillis()
fromQueryStats
andStageStats
.
SPI Changes
SystemAccessControl.checkCanSetUser()
now takes anOptional<Principal>
rather than a nullablePrincipal
.- Rename
connectorId
tocatalogName
inConnectorFactory
,QueryInputMetadata
, andQueryOutputMetadata
. - Pass
ConnectorTransactionHandle
toConnectorAccessControl.checkCanSetCatalogSessionProperty()
. - Remove
getUserTime()
fromSplitStatistics
(referenced inSplitCompletedEvent
).
Note
These are backwards incompatible changes with the previous SPI. If you have written a plugin, you will need to update your code before deploying this release.


SA's Klaasen beaten in ATP Finals doubles final
London - Pierre-Hugues Herbert and Nicolas Mahut won the ATP Finals doubles title on Sunday - a year after coming within a point of lifting the trophy.
The French seventh seeds beat fifth seeds Raven Klaasen of South Africa and New Zealand's Michael Venus 6-3, 6-4 at London's O2 Arena.
They notched their ninth straight victory to lift the trophy after 70 minutes, saving all four break points they faced.
Mahut and Herbert have won all 18 sets they have contested since arriving at the Paris Masters last month.
The career Grand Slam winners are the first team to lift the trophy at the O2 without dropping a set since Jean-Julien Rojer and Horia Tecau in 2015.
The ATP Finals crown is their 15th tour-level trophy as a team, adding to 2019 titles at the Australian Open and Paris Masters.
With their Australian Open trophy in January, Herbert and Mahut became only the eighth men's doubles team to complete the career Grand Slam.
Results on the eighth and final day of the ATP Finals at London's O2 Arena on Sunday (x denotes seeding):
Final
Doubles
Pierre-Hugues Herbert/Nicolas Mahut (FRA/FRA x7) bt Raven Klaasen/Michael Venus (RSA/NZL x5) 6-3, 6-4


Tutorial Project. Release 13
The Goal
The demonstration of practices of the Vip-based programming:
- the
ways of the communication of the main applicaion with the parts of
the application, which are placed to the DLL (Dynamically Linked Library).
- the practice of the rising and handling the
exceptions.
The Code
The Release 13 contains the set of strongly dependent projects - the project of the
main applicaion and projects of three DLLs, where DLL has the
special project to buiuld it.
The set of projects contains:
- The Project ModelsDLL.vipprj (generates the DLL), where models of the computer
strategies of the game Computer0, Computer1, Computer2 are placed.
- The Project Computer3DLL.vipprj (generates the DLL), where the model of the strategy Computer3 is placed.
- The Project HumanInterfaceDLL.vipprj (generates the DLL), where classes realated to
the HumanInterface are placed. This DLL is called using the library, which used while
the main applicaion building.
-
Project Polyline13_ObjWindows.vipprj - the project of the main executable applicaion.
The Functionality
- The new strategy model Computer3 appeared
- The behavior of applications of the Release 13 is the same as the behavior of
applications of the Release 11, 12.
Build notes
Please, see first your version speciality
| Project file name | Can build PE | Can run PE |
|---|
| Polyline13\Programs\ObjectWin\Polyline13_ObjWindows.vipprj | - | + |
| Polyline13\Programs\ModelsDLL\ModelsDLL.vipprj | - | |
| Polyline13\Programs\HumanInterfaceDLL\HumanInterfaceDLL.vipprj | - | |
| Polyline13\Programs\Computer3Dll\Computer3Dll.vipprj | - | |
|
Open and build projects:
- Programs\Computer3Dll\Computer3Dll.vipprj
- Programs\HumanInterfaceDll\HumanInterfaceDLL.vipprj
- Programs\ModelsDll\ModelsDll.vipprj.
The warning while the compilation points to the incorrect declaration.
It is done to demonstrate the reaction on the exception in the DLL.
- Programs\ObjectWin\Polyline13_ObjWindows.vipprj
To build projects of the Polyline12 release the IDE variable SpbSolutions must be set to the SpbVipTools directory.
Run notes
- The application corresponding to the project Programs\ObjectWin\Polyline13_ObjWindows.vipprj must be invoked;
- The language of the application may be defined in the command line by the language indentifier:
- en - English
- ru - Russian
- When running the program from the IDE, the parameter of the language must be placed to the field Project Settings\Run Options\Run Arguments, available from menu Project\Settings...


Name
E-Mail ID
Date of Birth
Roll Number
Password
Re-enter Password
SIGN UP
Already have an account?
Log In


|
e-Satsang |
|
|
|
|
|
e-Satsang Transmission Schedule |
|
May 2017 - June 2017 |
|
|
|
1. Timings are subject to change, and
changes if any, will be notified in the
Table below. Please therefore keep
checking this web site for updated
information. |
|
2. Please note the station practice schedule
given at the end of this page. |
|
3. All e-Satsang Teams must be ready to
receive transmission at least 15 minutes
before the Station Connect Time indicated in
the Table below. |
| 4. No
station is permitted to connect for any
transmission unless five initiated Satsangis
are present at the time of connection and
during the entire duration of any
transmission. |
|
5. With
effect from 26.12.2010, stations attending
Bhandara at Dayalbagh are permitted to
receive e-Satsang Transmission on ARTI/BHANDARA
provided there is at least one e-SATSANG
Team Member of the Branch to manage the
Password and operate the systems, AND there
are at least five initiated Satsangis
present for the transmission (see Point 4
above). The Arti/Bhandara Transmission will
not take place to stations that have been
permitted only Weekly e-Satsang.
|
|
Date |
Occasion |
Details |
Cascade |
Start
Time |
Station
Connect
Time |
|
21/5 |
Weekly
eSatsang |
Morning
Satsang |
Weekly |
4:15 am |
4:00 am |
|
28/5 |
Weekly
eSatsang |
Morning
Satsang
Transmission
from
Shimla |
Weekly |
4:30 am |
4:15 am |
|
04/6 |
Weekly
eSatsang |
Morning
Satsang |
Weekly |
5:00 am |
4:45 am |
|
11/6 |
Weekly
eSatsang |
Morning
Satsang
Transmission
from
Gaya |
Weekly |
4:30 am |
4:15 am |
|
18/6 |
Weekly
eSatsang |
Morning
Satsang
Transmission
from
MTVPuram |
Weekly |
4:30 am |
4:15 am |
|
25/6 |
Weekly
eSatsang |
Morning
Satsang |
Weekly |
5:00 am |
4:45 am |
|
02/7 |
Weekly
eSatsang |
Morning
Satsang |
Weekly |
5:00 am |
4:45 am |
Any changes due to Satsang Tour will be notified
immediately on the website.
Station Practice Schedule
|
Date |
Time |
Cascade |
Conducted from |
|
|
|
|
|
IT IS ESSENTIAL FOR ALL STATIONS TO PARTICIPATE
IN THE PRACTICE SESSIONS, and
FULLY CHECK ALL COMPUTER HARDWARE/SOFTWARE
(INCLUDING ANTI-VIRUS UPDATES), AUDIO, AND POWER
SYSTEMS FULLY IN ADVANCE OF THESE PRACTICE
SESSIONS.
|
|
Copyright Radhasoami Satsang Sabha, 2005. All Rights Reserved.
|
|
Dayalbagh, Agra INDIA |
|
|
|


Pittsburgh Technical College
Check Request Form
Start Bootstrap
Featured
Fundraiser
Meeting Trackers
Check Request
(current)
Rules and Clubs
Student Organization - Check Request Form
Request for Payment to
Amount to be Paid
Reason for Request
Reason for request
Individual Requesting Check
Organization to be Charged
Indicate What Date This Check is Needed
2nd Signature for Approval
Today's Date
Comments
Comments
Request Approved By
Date
Check #
Date Issued
Date Mailed/Picked Up


Examples of Work
Writing Samples
- Wyoming Student Writer Reflects on 9/11, Patriotism & Death Threats Over an OpEd - College Media Matters
- Media Futurist to Journalism Students: ‘Winning Internet Isn’t Rocket Science, It’s DATA Science’ - College Media Matters
- Students Share 9/11 Memories: ‘My Dad Told Us Bad People Crashed Planes Into Twin Towers’ - College Media Matters
- Students offer advice to their 16-year-old-selves - USA TODAY College
- Students Predict College Life in the Next 100 Years - USA TODAY College
- Path to Justice - The Hawk Newspaper
- The Bear Necessity - The Hawk Newspaper


{%extends "base.html" %} {%block title%}Speaker Profile{%endblock%} {%block content%}
You can edit the contents of your speaker profile here. Please note that any changes made here will affect your pages on all conferences you are a speaker.
{% if form.errors %}Note! This form contains errors and has not been saved!
{% endif %} {%if not speaker %}Please create your speaker profile using the form above. Once this is done, you will be presented with a list of open call for papers.
{%endif%} {%if callforpapers%}The following conferences currently have open call for papers:
You have submitted talks to the following conferences:


Professional Service
He has been externaly/internally invited to conduct reviews for the following conferences and journals.
-Conferences
-Journals
Co-supervised
He has been fortunate to collaborate with these excellent students.
-Current students
-Alumni
Teaching
Teaching assistant(TA) for following courses.
Back To Home
|


atom_chars/2
atom_chars/2 – convert between atoms and the list of characters representing the atom
atom_codes/2 – convert between atoms and the list of character codes representing the atom
FORMS
atom_chars(Atom,CharList)
atom_codes(Atom,CodeList)
DESCRIPTION
atom_chars(Atom,CharList) is true if and only if CharList is a character list whose elements correspond to the characters of the atom Atom.
atom_codes(Atom,CodeList) is true if and only if CodeList is a character code list whose elements correspond to the character codes of
the atom Atom.
EXAMPLES
?- atom_chars('the cat in',L).
L = [t,h,e,' ',c,a,t,' ',i,n]
yes.
?- atom_chars(A,[t,h,e,' ',h,a,t,'\n']).
A = 'the hat\n'
yes.
?- atom_codes(A,[65,66,67]).
A = 'ABC'
yes.
?- atom_codes(holiday, L).
L = "holiday"
yes.
ERRORS
Atom and CharList are variables (atom_chars/2)
––––> instantiation_error.
Atom and CodeList are variables (atom_codes/2)
––––> instantiation_error.
Atom is neither a variable nor an atom
––––> type_error(atom,Atom).
CharList is neither a variable nor a list nor a partial list
––––> type_error(list,CharList).
CodeList is neither a variable nor a list nor a partial list
––––> type_error(list,CodeList).
CharList is a list but there is a sublist L of CharList whose first element is neither a variable nor a character
––––> domain_error(character_list,L).
CodeList is a list but there is a sublist L of CodeList whose first element is neither a variable nor a character
––––> domain_error(character_code_list, L).
SEE ALSO
number_chars/2, number_codes/2, term_chars/2, term_codes/2.


data class PlaylistSnapshot
Contains the snapshot id, returned from API responses
snapshotId
- The playlist state identifier
(common, js, jvm)
<init> |
Contains the snapshot id, returned from API responses <init>(snapshotId: String) |
(common, js, jvm)
snapshotId |
The playlist state identifier val snapshotId: String |


Pluralsight Guides
There may be an instance where you would want to display HTML inside a React Component. The HTML could be from an external source or a file that you want to display to the user.
By default, React does not permit you to inject HTML in a component, for various reasons including cross-site scripting. However, for some cases like a CMS or WYSIWYG editor, you have to deal with raw HTML. In this guide, you will learn how you can embed raw HTML inside a component.
If you try to render an HTML string inside a component directly, React will automatically sanitize it and render it as a plain string.
1
2
3
jsx
The above code will not render the string “John Doe" in a heading. Instead, the complete string, including the H1 tags, will be displayed to the user, thanks to React.
To render the string as HTML, you need to use the dangerouslySetInnerHTML
prop.
1
2
3
jsx
The dangerouslySetInnerHTML
prop was built to present and inject DOM formatted content into the frontend. The use of this prop is considered a bad practice, especially when dealing with user inputs. You should consider any user input as unsafe and sanitize it before injecting it into the frontend.
The dangerouslySetInnerHTML
prop must be an object with a key __html
and value of an HTML string. Misusing the dangerouslySetInnerHTML
prop might open up your app to cross-site scripting attacks. Hence, before using this prop, you need to ensure that the HTML string is sanitized properly and coming from a reliable source. You should avoid passing any user-accepted input into the dangerouslySetInnerHTML
prop.
Cross-Site Scripting (XSS) attacks allow a malicious user or hacker to inject unsafe HTML code into a website for other end users. This allows the hacker to access personal data like cookies, local storage, etc.
If XSS is a primary concern, you can use an external library like DOMPurify to sanitize the HTML string before injecting it into the DOM using the dangerouslySetInnerHTML
prop.
To install the DOMPurify library, run the following command.
You can see the example usage below.
1
2
3
4
5
6
7
jsx
You can also configure DOMPurify
to allow only specific tags and attributes.
1
2
3
4
5
6
jsx
Security is the primary concern when dealing with HTML content from the user. You cannot trust any input from users, even admin users who are maintaining or writing content for the app. Hence you should always sanitize the HTML content using DOMPurify
or any other library before injecting it into the DOM. Keep in mind that sanitizing large HTML strings on the client side might degrade the app performance; fortunately, DOMPurify
can also be used on a NodeJS server, and therefore you should consider sanitizing the content in the backend.


Math.max()
or Math.min()
call, instead of doing it manually.
Example:
public int min(int a, int b) {
return b < a ? b : a;
}
After the quick-fix is applied:
public int min(int a, int b) {
return Math.min(a, b);
}
Use the Disable for float and double option to disable this inspection for double
and float
types.
This is useful because the quick-fix may slightly change the semantics for float
/
double
types when handling NaN
. Nevertheless, in most cases this will actually fix
a subtle bug where NaN
is not taken into account.
New in 2019.2


That GameCube style Smash Ultimate controller will be re-released in 2020
'Late January 2020'
by Chris CarterOfficial Switch GameCube remotes can go for upward of $80.
You know the drill.  It's been a while since we've seen the resurgence of the GameCube Super Smash Bros. Edition controller, but thanks to a listing update on the official Nintendo UK Store, there's now hope.
The listing notes that "new stock will be due to dispatch" in late January 2020, a year and a month after the original release of the hardware. Note that the price is £24.99, which is roughly $32 US. Worldwide restocks might be imminent!
Not a moment too soon: I play exclusively with these, and own four from my time with the Wii U edition of Smash, as well as a few for Switch.
Nintendo GameCube Controller - Super Smash Bros. Edition [Nintendo UK] Thanks Jim!


--- layout: default title: About Esteban Herrera ---
I was born in Puebla, Mexico. I've been developing software for over ten years, mostly in Java. Here are a few things about me:
I was born in 1981. Sometimes I feel old.
The first programming language I learned was Visual Basic 5.0. We're talking about 1997. Next was C. Then Java. Then PHP. Then C#. And then Objective-C.
I have two wonderful kids. Santiago, born in 2010, and Diego, born in 2014.
I'm old school. I prefer to talk to people in person. I'm not really into social media. I'm only a little active in Twitter and Github. I have Quora and Goodread accounts but I don't use them very much.
I have more than six IT certifications. Mostly about Java. The most difficult was PMI's PMP.
I don't like to drive.  I prefer to walk or public transportation (like subway).
I have a lot of favorites movies. Two that come to my mind right now are Contact and Scent of a Woman.
More to come...
You can contact me via Twitter or email.
This site is based on Jekyll. The design is based on Rich Grundy's personal site.
Social media icons by Tina Mailhot-Roberge at vervex.ca.


Testing font awesome button patterns
Published: April 25, 2020
Button with icon w/role=img and aria-label
Button with icon and visible text
Download
Button with icon with aria-hidden=true and visible text
Download
Button with icon w/role=img and aria-label and visible text
File name
Button with icon with
aria-hidden=true
and visible text
File name
Button using flexbox with icon with
aria-hidden=true
and visible text
File name
Button using flexbox with icon with
aria-hidden=true
and 2 lines of visible text
Download
File name


Clear in at Gustavia at the Port Captain's office. Immigration is also dealt with here.
When going from the French side of St. Martin to St. Barts, no outgoing clearance is necessary (the St. Martin clearance software doesn't even have an entry for St. Barts as a destination) or possible. Boats must clear in to St. Barts as normal, but this is more a way for them to control boat traffic.
When leaving St. Barts an outgoing clearance is always necessary, even when departing for St. Martin.
Last updated August 2015.
A visitors must have a passport valid for 3 at least months on arrival.
St Barthelemy is part of France and the European Union, and immigration requirements are now the same.
For the exact details applicable to St Barts, see the French Embassy website
If a visa is required, note that the visa application must specify "France + St Barthelemy " or "DFA" (French Departments in the Americas).
Because of the duty-free status of St Barts, visa regulations are less strictly enforced than on Guadeloupe or Martinique.
Last updated August 2015.
Items for personal use are admitted without tax if not in excessive quantity.
For other items, including firearms, French regulations apply.
Last updated August 2015.
ZIKA VIRUS ALERT: (September 2016) There have been recent safety alerts from the US State Department, UK Foreign Office, and Center for Disease Control (CDC) regarding travel to parts of Central and South America, Africa, southern Asia, the Caribbean, and the South Pacific islands. Saint Barts is an area of interest. There is growing concern about the rapid spread of the ZIKA Virus and the impact of the virus on pregnant women and babies. ZIKA is transmitted by mosquitos in tropical and sub-tropical climates, and there is currently no cure or vaccine. This situation is evolving rapidly, so please refer to the CDC’s dedicated website if you are intending to cruise in one of the effected areas.
Port dues are payable in the main harbour of Gustavia and they are collected by a roving harbour patrol. The daily fees depend on length and location, being lowest if anchoring in the outer harbour, higher in the inner harbour and if coming stern-to the quay. One is charged per night of stay depending on the length of boat.
Anchoring is not permitted in Baie St Jean. Water-skiing or jet-skiing is prohibited within 350 metres of any beach. No water sports, fishing or diving are allowed inside Gustavia harbour. The use of barbecues is prohibited on boats docked at the quay.
The speed limit in the harbour is 3kn (including tenders).
Cats and dogs may be admitted temporarily with a certificate of good health issued not more than 5 days prior to arrival on the island, and proof of an anti-rabies vaccination given at least 30 days (but not more than 12 months) prior to arrival. Documents must be issued by a licensed veterinarian. Dogs are now required to be micro-chipped for entry.
Note: You may find that officials do not ask to see any documentation for your pet. However cruisers who have visited the French Islands with pets advise the following:
Make sure your dog's vaccinations and rabies documentation are current, get an International Health Certificate from your local vet prior to traveling, have an international microchip and keep invoices for products such as flea/tick/heartworm treatments. It is quite possible the officials in the French Islands will not question you or care about your pet. However, if they do, you can have a local vet provide the documentation required if something is missing from your records.
Last updated May 2016.


- Unique - Variable in class vl.team07.com.virtuallibrary.SignUp
-
- UniqueUsername() - Method in class vl.team07.com.virtuallibrary.SignUpTest
-
- uniqueUsername(String) - Method in interface vl.team07.com.virtuallibrary.UserDataChecker
-
Unique username boolean.
- UniqueUsername(String) - Method in class vl.team07.com.virtuallibrary.Userlist
-
- updateBookStatusesToBorrowed(Book, String) - Method in class vl.team07.com.virtuallibrary.DatabaseHandler
-
- updateItem(Barcode) - Method in class vl.team07.com.virtuallibrary.Scanner.BarcodeGraphic
-
Updates the barcode instance from the detection of the most recent frame.
- updatePickUpLocation(double, double, Book) - Method in class vl.team07.com.virtuallibrary.DatabaseHandler
-
This method takes in the latitude and longitude selected by the book owner when he has
accepted the request of a book
- uploadImageToFirebase(Bitmap, Book) - Method in class vl.team07.com.virtuallibrary.DatabaseHandler
-
This method takes the image uploaded while adding a book to the Firebase storage.
- uploadUserImageToFirebase(Bitmap, User) - Method in class vl.team07.com.virtuallibrary.DatabaseHandler
-
Storing the user profile image in Firebase storage
- useAppContext() - Method in class vl.team07.com.virtuallibrary.ExampleInstrumentedTest
-
- UseFlash - Static variable in class vl.team07.com.virtuallibrary.BarcodeCaptureActivity
-
- user - Variable in class vl.team07.com.virtuallibrary.BookTest
-
- user - Variable in class vl.team07.com.virtuallibrary.BookValidatorTest
-
- user - Variable in class vl.team07.com.virtuallibrary.SearchTest
-
- User - Class in vl.team07.com.virtuallibrary
-
Created by MTX on 2019-02-24.
- User() - Constructor for class vl.team07.com.virtuallibrary.User
-
- User(String, String, String, String) - Constructor for class vl.team07.com.virtuallibrary.User
-
- User(String, String, String, String, int, String, int, String) - Constructor for class vl.team07.com.virtuallibrary.User
-
- user - Variable in class vl.team07.com.virtuallibrary.UserTest
-
- UserCallBack - Interface in vl.team07.com.virtuallibrary
-
Created by MTX on 2019-04-02.
- UserDataChecker - Interface in vl.team07.com.virtuallibrary
-
The interface User data checker.
- userEmail - Variable in class vl.team07.com.virtuallibrary.LogIn
-
- UserEmailTextView - Variable in class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter.UserHolder
-
- UserHolder(View) - Constructor for class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter.UserHolder
-
- UserImage - Variable in class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter.UserHolder
-
- Userlist - Class in vl.team07.com.virtuallibrary
-
- Userlist() - Constructor for class vl.team07.com.virtuallibrary.Userlist
-
- username - Variable in class vl.team07.com.virtuallibrary.BookInfoTest
-
- Username - Variable in class vl.team07.com.virtuallibrary.CurrentUser
-
The Username of the User.
- username - Variable in class vl.team07.com.virtuallibrary.LogIn
-
- username - Variable in class vl.team07.com.virtuallibrary.SignUp
-
- UserName - Variable in class vl.team07.com.virtuallibrary.User
-
- username - Variable in class vl.team07.com.virtuallibrary.UserTest
-
- usernameText - Variable in class vl.team07.com.virtuallibrary.EditUserDetailsFragment
-
- usernameText - Variable in class vl.team07.com.virtuallibrary.UserProfileFragment
-
- UsernameTextView - Variable in class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter.UserHolder
-
- UserProfileFragment - Class in vl.team07.com.virtuallibrary
-
- UserProfileFragment() - Constructor for class vl.team07.com.virtuallibrary.UserProfileFragment
-
- UserRecyclerViewAdapter - Class in vl.team07.com.virtuallibrary
-
- UserRecyclerViewAdapter(Context, ArrayList<User>) - Constructor for class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter
-
- UserRecyclerViewAdapter.UserHolder - Class in vl.team07.com.virtuallibrary
-
- users - Variable in class vl.team07.com.virtuallibrary.BookValidatorTest
-
- users - Variable in class vl.team07.com.virtuallibrary.UserRecyclerViewAdapter
-
- UserTest - Class in vl.team07.com.virtuallibrary
-
- UserTest() - Constructor for class vl.team07.com.virtuallibrary.UserTest
-
- UserValidator - Class in vl.team07.com.virtuallibrary
-
Created by MTX on 2019-02-24.
- UserValidator(User) - Constructor for class vl.team07.com.virtuallibrary.UserValidator
-
- UserValidator() - Constructor for class vl.team07.com.virtuallibrary.UserValidator
-


Buttons come in four different types and three different sizes. Usually a button
element should be used, although an a
, an input[type=button]
, an input[type=reset]
or an input[type=submit]
could be used.
The simplest is just a plain button:
Other types are cancel, primary and highlight:
You can define the size of the button too:
It's also easy to add an icon to a button, either at the front, the end, or both (which doesn't look good, so don't do it).
You can join this all together to make a monster button:
You can combine buttons together in a btn-group
. This will join the buttons together seamlessly.


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 4
This whole chicken is marinated in spices before being roasted to a juicy, succulent dish served with spicy potatoes.
Each serving provides 569kcal, 73g protein, 47g carbohydrate (of which 2g sugars), 9 fat (of which 2g saturates), 5g fibre and 1.3g salt.
Preheat the oven to 200C/400F/Gas 6.
Place all the marinade ingredients into a blender and process to a paste.
Using a sharp knife, make two deep, diagonal cuts into each breast of the chicken, going all the way down to the bone. Make two equally deep slashes in the thighs and two in the drumsticks as well.
Place the chicken, breast side up, on a roasting tray lined with enough foil to cover the bird completely.
Pour the marinade paste over the chicken, rubbing it well into all the cuts. Set aside for 30 minutes.
 Wrap up the chicken in the foil so it is completely covered, with the tightly closed seam at the top.
Bake in the middle of the hot oven for one hour.
Unwrap, without letting the juices run out, and cook, uncovered, for 15 minutes, basting two or three times with the juices.
Check the chicken is cooked by inserting a skewer into the thickest part of the thigh, between the leg and the body. If the juices run clear with no trace of pink, it is cooked. Continue to cook for a little longer if needed.
Preheat the oven to 180C/350F/Gas 4.
Meanwhile, for the roasted masala potatoes, pour the oil into a large bowl. Add the potatoes and sprinkle in the salt and pepper. Ensure the potatoes are well coated, then transfer to a baking tray in a single layer.
Place in the middle of the oven and roast for 20 mins.
Spoon the coriander, cumin, turmeric and chilli powder on to a plate and mix well.
Remove the potatoes from the oven. Using tongs, roll the potatoes in the spice mix, making sure all sides are covered.
Return them to the oven for a further 20 minutes, or until lightly browned and tender all the way through when pierced with a knife.
Set the chicken in a warm place to rest for 10-15 minutes, then carve and serve with the roasted masala potatoes.


Change Log
- Added "Your Email" field to Send to a Friend form
- Removed requirement for Required & Desired Qualifications
- Added support for new-lines in Send to a Friend email message
- Show "Start Date" instead of the creation date for jobs (so it can be adjusted arbitrarily)
- Option to show "Close Date" in Job Listing and Job Detail
- Control date formatting for public dates via localization resources
- Added more granular permissions for modules
- Fixed an issue where users with Edit Content permission in DotNetNuke Professional couldn't view application documents
- Fixed a bug where the current job could get forgotten on the Details module
- Hide job details module when there's no job for which to display details
- Fixed bug on search result highlight showing html tag.
- More details can be found on the Engage: Employment Change Log


Order confirmation
Order ID: x1h4cl
Status: Queued for Processing
Date & Time: 5/10/2018 4:30 p.m.
Order Successful


In a few minutes Ihvon returned. “You can go ahead, Mistress al’Vere” was all he said before he and Tomas both vanished into the brush again without so much as the rustle of a leaf.
“They are very good,” Gaul muttered, still staring around suspiciously.
“A child could hide in this,” Chiad told him, slapping a redberry branch. But she watched the undergrowth as closely as Gaul did.
None of the Aiel appeared eager to go on. Not reluctant, precisely, and certainly not afraid, but definitely not eager. One day Perrin hoped to figure out what it was Aiel did feel toward Aes Sedai. One day. He was not particularly enthusiastic himself, today.
“Let’s go meet these Aes Sedai of yours,” he told Mistress al’Vere gruffly.
The old sickhouse was even more ramshackle than he remembered, a sprawling single story that leaned drunkenly, half the rooms open to the sky, a forty-foot sourgum tree poking up from one. The forest closed in on every side.  The front door was cleared, though. He smelled horses, and a faint aroma of beans and ham, but oddly, no woodsmoke.
Tying their animals to low branches, they followed Mistress al’Vere inside, where vine-shrouded windows admitted only a dim light. The front room was large and bare of furnishings, with dirt in the corners and a few cobwebs that had escaped an obviously hasty cleaning. Four blanket rolls were laid out on the floor, with saddles and saddlebags and neatly tied bundles against the wall, and a small kettle on the stone hearth gave off the cooking smells despite the lack of any fire. A smaller kettle seemed to be water for tea, almost at the boil. Two Aes Sedai awaited them. Marin al’Vere curtsied hastily and launched into an anxious cascade of introductions and explanations.
Perrin leaned his chin against his bow. He recognized the Aes Sedai. Verin Mathwin, plump and square-faced, gray streaking her brown hair despite her smooth-cheeked Aes Sedai agelessness, was Brown Ajah, and like all Browns seemingly lost half the time in the search for knowledge, whether old and lost or new. But sometimes her dark eyes belied that vague dreamy expression, as now, looking past Marin at him sharp as tacks. She was one of two Aes Sedai besides Moiraine he was certain knew about Rand, and he suspected she knew more about himself than she let on. Her eyes took on that slight vagueness again as she listened to Marin, but for an instant they had weighed him on scales, factored him into her own plans. He would have to be very careful around her.
The other, a dark, slender woman in a deep green silk riding dress that contrasted sharply with Verin’s plain brown, inkstained at the cuffs, he had never met, and only seen once.  Those eyes sought him, too, while she listened to Marin. Something Egwene had said came back to him. Some Aes Sedai who shouldn’t know about Rand show too much interest in him. Elaida, for instance, and Alanna Mosvani. I don’t think I trust either of them. Perhaps it would be best to be guided by Egwene until he found out differently,
His ears perked up when Marin said, still apprehensive, “You were asking about him, Verin Sedai. Perrin, I mean. All three boys, but Perrin among them. It seemed the easiest way to keep him from getting himself killed was to bring him to you. There just wasn’t any time to ask first. Do say you under—”
“It is quite all right, Mistress al’Vere,” Verin interrupted in a soothing tone. “You did exactly the correct thing. Perrin is in the right hands, now. Also I will enjoy the chance to learn more about the Aiel, and it is always a pleasure to talk with an Ogier. I will pick your brain, Loial. I have found some fascinating things in Ogier books.”
Loial gave her a pleased smile; anything to do with books seemed to please him. Gaul, on the other hand, exchanged guarded looks with Bain and Chiad.
“It is all right as long as you do not do it again,” Alanna said firmly. “Unless . . . You are alone?” she asked Perrin in a voice that required an answer, and right now. “Did the other two return as well?”
“Why are you here?” he demanded right back.
“Perrin!” Mistress al’Vere said sharply. “Mind your manners!  “Perrin and I are old friends now. I understand him.” Her dark eyes glittered at him for a moment.
“We will take care of him.” Alanna’s cool words seemed open to interpretation.
Verin smiled and patted Marin’s shoulder. “You had better go on back to the village. We don’t want anyone wondering why you are walking in the woods.”
Mistress al’Vere nodded. Pausing by Perrin, she put a hand on his arm. “You know you have my sympathy,” she said gently. “Just remember that getting yourself killed won’t help anything.. Do what the Aes Sedai tell you. “He mumbled something noncommittal, but it seemed to satisfy her.
When Mistress al’Vere had gone, Verin said, “You have our sympathy as well, Perrin. If there was anything we could have done, we would have.”
He did not want to think of his family now. “You still haven’t answered my question.”
“Perrin!” Faile managed to copy Mistress al’Vere’s tone almost exactly, but he paid it no mind.
“Why are you here? It seems awfully coincidental.  ”
“Not coincidental at all,” Verin replied. “Ah, the tea water is ready.” The water subsided from a boil as she began to bustle about, tossing a handful of leaves into the kettle, directing Faile to find metal cups in one of the bundles against the wall.  “Year by year,” Verin continued, “we find fewer and fewer girls who can be taught to channel. Sheriam believes we may have spent the last three thousand years culling the ability out of humankind by gentling every man who can channel we find. The proof of it, she says, is how very few men we do find. Why, even a hundred years ago the records say there were two or three a year, and five hundred years—”
Alanna harrumphed. “What else can we do, Verin? Let them go insane? Follow the Whites’ mad plan?”
“I think not,” Verin replied calmly. “Even if we could find women willing to bear children by gentled men, there is no guarantee the children would be able to channel, or would be girls. I did suggest that if they wanted to increase the stock, Aes Sedai should be the ones to have the children; themselves, in fact, since they put it forward in the first place. Alviarin was not amused.”
“She would not be,” Alanna laughed. The sudden flash of delight, breaking her fiery, dark-eyed stare, was startling. “I wish I could have seen her face.”
“Her expression was . . . interesting,” the Brown sister said musingly. “Calm yourself, Perrin. I will give you the rest of your answer. Tea?”
Trying to wipe the glare from his face, somehow he found himself seated on the floor, his bow beside him and a metal cup full of strong tea in his hand. Everyone sat in a circle in the middle of the room. Alanna took up the explanation of their presence, perhaps to forestall the other Aes Sedai’s tendency to ramble.
“Here in the Two Rivers, where I suspect no Aes Sedai had visited in a thousand years, Moiraine found two women who could not only be taught to channel, but who had the ability born in them, and heard of another who had died because she could not teach herself.”
“Not to mention three ta’veren,” Verin murmured into her tea.
“Do you have any idea,” Alanna went on, “how many towns and villages we usually must visit to find three girls with the ability inborn? The only wonder is that it took us so long to come hunting more. The old blood is very strong here in the Two Rivers. We were only in Watch Hill a week before the Children appeared, and were very careful not to reveal who we were to any but the Women’s Circle there, yet even so we found four girls who can be trained, and one child I think has the ability inborn.”
“It was difficult to be sure,” Verin added. “She is only twelve. None have anywhere near the potential of Egwene or Nynaeve, but the number is still nothing less than remarkable. There might be another two or three just around Watch Hill. We have had no chance to examine girls here, or farther south. Taren Ferry was a disappointment, I must say. Too much interchange of bloodlines with the outside, I suppose. ”
Perrin had to admit it made sense. But it did not answer all his questions, or settle all his doubts. He shifted, stretching out his leg. The spear wound in his thigh hurt. “I don’t understand why you are hiding here. Whitecloaks arresting innocent people, and here you sit. Trollocs running all over the Two Rivers, apparently, and here you sit.”
Loial muttered under his breath, a muted rumble. Perrin caught “angering Aes Sedai” and “hornet’s nest,” but he continued to hammer at them. “Why aren’t you doing something? You’re Aes Sedai! Burn me, why aren’t you doing something?”
“Perrin!” Faile hissed before turning an apologetic smile to Verin and Alanna. “Please forgive him. Moiraine Sedai spoiled him. She has an easy manner, I suppose, and she let him get away with things. Please don’t be angry with him. He will do better.” She shot him a sharp look, indicating she meant that for his ears as much as theirs, or more.  She had no right interfering in this.
“An easy manner?” Verin said, blinking. “Moiraine? I never noticed.”
Alanna waved Faile to silence. “You certainly do not understand,” the Aes Sedai told Perrin in a tight voice. “You do not understand the restrictions under which we labor. The Three Oaths are not merely words. I brought two Warders with me to this place.” The Greens were the only Ajah to bond more than a single Warder apiece; a few, he had heard, even had three or four. “The Children caught Owein crossing an open field. I felt every arrow that struck him until he died.  Had I been there, I could have defended him, and myself, with the Power. But I cannot use it for revenge. The Oaths do not permit it. The Children are very nearly as vile as men can be, short of Darkfriends, but they are not Darkfriends, and for that reason they are safe from the Power except in self-defense. Stretch that as far as we can, it will only stretch so far.”
“As for Trollocs,” Verin added, “we have done for a number of them, and two Myrddraal, but there are limits. Halfmen can sense channeling, after a fashion. If we manage to draw a hundred Trollocs down on ourselves, there is very little we can do except run.”
Perrin scratched at his beard. He should have expected this, should have known. He had seen Moiraine face Trollocs, and he had some idea of what she could do and what not. He realized he had been thinking of how Rand had killed all the Trollocs in the Stone, only Rand was stronger than either of these Aes Sedai, probably stronger than both together. Well, whether they helped him or not, he still meant to finish every Trolloc in the Two Rivers. After he rescued Mat’s family, and the Luhhans. If he thought about it carefully enough, he had to find a way. His thigh ached miserably.
“You are injured.” Setting her cup on the floor, Alanna came across to kneel beside him and take his head in her hands. A tingle ran through him. “Yes. I see. You did not do this to yourself shaving, it appears. ”
“It was the Trollocs, Aes Sedai,” Bain said. “When we came out of the Ways in the mountains.” Chiad touched her arm, and she stopped.
“I locked the Waygate, “Loial added quickly. “No one will use it until it is opened from this side. ”
“I thought that must be how they were coming,” Verin murmured, half to herself. “Moiraine did say they were using the Ways. Sooner or later that is going to present us with a real problem.”
Perrin wondered what she thought that was.
“The Ways,” Alanna said, still holding his head. “Ta’veren! Young heroes!” She made the words sound approving and close to a curse, both together.
“I am not a hero,” he told her stolidly. “The Ways were the fastest way to get here. That’s all.”
The Green sister went on as if he had not spoken. “I will never understand why the Amyrlin Seat let you three go your way. Elaida has been having fits over you three, and she is not the only one, just the most vehement. With the seals weakening and the Last Battle coming, the last thing we need is three ta’veren running about loose. I would have tied a string to each of you, even bonded you.” He tried to pull back, but she tightened her grip and smiled. “I am not so lost to custom yet as to bond a man against his will. Not quite yet.” He was not sure how far from it she was; the smile did not reach her eyes. She fingered the half-healed cut on his cheek. “This has gone too long since it was done. Even Healing will leave a scar now.”
“I don’t need to be pretty,” he muttered—just well enough to do what he had to—and Faile laughed aloud.
“Who told you that?” Faile said. Surprisingly, she shared a smile with Alanna.
Perrin frowned, wondering if they were making fun of him, but before he could say anything, the Healing hit him, like being turned to ice. All he could do was gasp. The few moments before Alanna released him seemed endless.
When he had his breath again, the Green sister had Bain’s flame-haired head between her hands, Verin was seeing to Gaul, and Chiad was testing her left arm, swinging it back and forth with a satisfied expression.
Faile took Alanna’s place beside Perrin and stroked a finger across his cheek, along the scar beneath his eye. “Beauty mark,” she said, smiling slightly.
“A what?”
“Oh, just something Domani women do. It was just an idle comment.”
Despite her smile, or maybe because of it, he scowled suspiciously. She was making fun of him, only he did not understand how, exactly.
Ihvon slipped into the room, whispered in Alanna’s ear, and vanished outside again at her whisper. He hardly made a sound even on the wooden floor. A few moments later the scrape of boots on the steps announced new arrivals.
Perrin sprang to his feet as Tam al’Thor and Abell Cauthon appeared in the doorway, bows in hand, with the rumpled clothes and gray-flecked two-day beards of men who had been sleeping rough. They had been hunting; four rabbits hung at Tam’s belt, three at Abell’s. It was obvious they were expecting the Aes Sedai, and visitors, too, but they stared in amazement at Loial, more than half again as tall as either of them, with his tufted ears and broad snout of a nose. A flicker of recognition crossed Tam’s bluff, lined face at sight of the Aiel.
Tam’s gaze only rested thoughtfully on them for a moment, though, before coming to rest on Perrin with a start almost as big as for Loial. He was a sturdy, deep-chested man despite hair that was nearly all gray, the sort it would take an earthquake to knock off his feet and more than that to fluster. “Perrin, lad!” he exclaimed. “Is Rand with you?”
“What about Mat?” Abell added eagerly. He had the look of an older, graying Mat, but with more serious eyes. A man not thickened much by age, with an agile step.
“They are well,” Perrin told them. “In Tear.” He caught Verin’s glance from the corner of his eye; she knew very well what Tear meant for Rand. Alanna hardly seemed to be paying attention at all. “They would have come with me, but we didn’t know how bad things are.” That was true on both counts, he was sure.  Rand . . . Well, the last I saw of Rand, he was wearing a fancy coat and had a pretty golden-haired girl on his arm.”
“That sounds like my Mat,” Abell chuckled.
“Maybe it’s as well they didn’t come,” Tam said more slowly, “what with the Trollocs. And the Whitecloaks . . . ” He shrugged. “You know the Trollocs returned?” Perrin nodded. “Was that Aes Sedai right? Moiraine. Were they after you three lads, that Winternight? Did you ever find out why?”
The Brown sister gave Perrin a warning look. Alanna appeared absorbed in rummaging through her saddlebags, but he thought she was listening now. Neither was what made him hesitate, though. There was just no way to come out and tell Tam that his son could channel, that Rand was the Dragon Reborn. How could he tell a man something like that? Instead, he said, “You will have to ask Moiraine. Aes Sedai don’t tell you any more than they have to.”
“I have noticed,” Tam said dryly.
Both Aes Sedai were definitely listening, and making no secret of it now. Alanna arched an icy eyebrow at Tam, and Abell shifted his feet as if he thought Tam was pushing his luck, but it would take more than a stare to upset Tam.
“Can we talk outside?” Perrin asked the two men. “I want a breath of air.” He wanted to talk without Aes Sedai eavesdropping and watching, but he could hardly say so.
Tam and Abell were agreeable, and perhaps as eager to escape Verin and Alanna’s scrutiny as he, but first there was the matter of the rabbits, all of which they handed over to Alanna.
“We meant to keep two for ourselves,” Abell said, “but it seems you have more mouths to feed.”
“There is no need for this.” The Green sister sounded as though she had said as much often before.
“We like to pay for what we get.” Tam told her, sounding the same. “The Aes Sedai were kind enough to do a little Healing for us,” he added to Perrin, “and we want to stock up credit in case we need it again.”
Perrin nodded. He could understand not wanting to take a gift from Aes Sedai. “An Aes Sedai’s gift always has a hook in it,” the old saying went. Well, he knew the truth of that. But it did not really matter whether you took the gift or paid for it; Aes Sedai managed to set the hook anyway. Verin was watching him with a tiny smile, as if she knew what he was thinking.
As the three men started out, carrying their bows, Faile rose to follow. Perrin shook his head at her, and amazingly she sat back down. He wondered if she was ill.
After pausing so Tam and Abell could admire Stepper and Swallow, they strolled off a way under the trees. The sun slanted westward, lengthening shadows. The older men made a few jokes about his beard, but they never mentioned his eyes. Strangely, the omission did not bother him.
Responding to Abell’s query as to whether “that thing” was any good for straining soup, he rubbed his beard and said mildly, “Faile likes it.”
“Oh-ho,” Tam chuckled. “That’s the girl, is it? A spirited look to her, lad. She’ll have you lying awake nights trying to tell up from down.”
“Only one way to handle that sort,” Abell said, nodding. “Let her think she’s running things. That way, when it’s important, and you say different, by the time she gets over the shock of it, you’ll have matters arranged as you want, and it will be too late for her to badger you about changing it.”
That seemed to Perrin a great deal like what Mistress al’Vere had told Faile about handling men. He wondered if Abell and Marin had ever compared notes. Not likely. Perhaps it was worth trying with Faile. Only, she seemed to have her own way in any case.
He glanced over his shoulder. The sickhouse was almost hidden by the trees. They had to be safe from the Aes Sedai’s ears. He listened carefully, drew a deep breath. A woodpecker drummed somewhere in the distance. There were squirrels in the leafy branches overhead, and a fox had passed this way not long ago with its kill, a rabbit. Aside from the three of them, there was no man scent, nothing to indicate a hidden Warder listening. Perhaps he was being too cautious, but good reasons or no, he could not get past the coincidence of both Aes Sedai being women he had met before, one a woman Egwene did not trust, the other a woman he was not sure he trusted.
“Do you stay here?” he asked. “With Verin and Alanna?”
“Hardly,” Abell replied. “How could a man sleep with Aes Sedai under the same roof? What there is of it.”
“We thought this would be a good place to hide,” Tam said, “but they were here before us. I think those Warders might have killed both of us if Marin and some others of the Women’s Circle hadn’t been here then, too.”
Abell grimaced. “I think it was the Aes Sedai finding out who we were that stopped it. Who our sons were, I mean. They show too much interest in you boys to suit me.” He hesitated, fingering his bow. “That Alanna let slip that you’re ta’veren. All three of you. I’ve heard Aes Sedai can’t lie.”
“I haven’t seen any signs of it in me,” Perrin said wryly. “Or Mat.”
Tam glanced at him when he did not mention Rand—he was going to have to learn to lie better, trying to keep his own secrets and everybody else’s, too—but what the older man said was, “Maybe you just don’t know what to look for. How is it you come to be traveling with an Ogier and three Aiel?”
“The last peddler I saw said there were Aiel this side of the Spine of the World,” Abell put in, “but I didn’t believe him. Said he’d heard there were Aiel in Murandy, of all places, or maybe Altara. He wasn’t too certain of exactly where, but a long way from the Waste.”
“None of that has anything to do with ta’veren,” Perrin said. “Loial is a friend, and he came to help me. Gaul is a friend, too, I suppose. Bain and Chiad came with Faile, not me. It’s all sort of complicated, but it just happened. Nothing to do with ta’veren.”
“Well, whatever the reason,”’ Abell said, “the Aes Sedai are interested in you lads. Tam and I traveled all the way to Tar Valon last year, to the White Tower, trying to find out where you were. We could hardly unearth one to admit she knew your names, but it was plain they were hiding something. The Keeper of the Chronicles had us on a boat heading downriver, our pockets stuffed with gold and our heads full of vague assurances, almost before we could make our bows. I don’t like the idea the Tower may be using Mat some way.”
Perrin wished he could tell Mat’s father nothing like that was going on, but he was not sure he was up to that big a lie with a straight face. Moiraine was not watching Mat because she liked his grin; Mat was tangled as deeply with the Tower as he himself, maybe deeper. The three of them were all tied tight, and the Tower held the strings.
A silence descended on them, until at last Tam said quietly, “Lad, about your family. I’ve sad news.”
“I know,” Perrin said quickly, and the hush fell again, with each staring at his own boots. Quiet was what was needed. A few moments to pull back from painful emotions and the embarrassment of having them plain on your face.
Wings fluttered, and Perrin looked up to see a large raven alighting in an oak fifty paces away, beady black eyes sharp on the three men. His hand darted for his quiver, but even as he drew fletchings to cheek, two arrows knocked, the raven from its perch. Tam and Abell were already nocking anew, eyes scanning the trees and sky for more of the black birds. There was nothing.
Tam’s shot had taken the raven in the head, which was no surprise and no accident. Perrin had not lied when he told Faile these two men were better than he with the bow. No one in the Two Rivers could match Tam’s shooting.
“Filthy things,” Abell muttered, putting a foot on the bird to pull his arrow free. Cleaning the arrow point in the dirt, he returned it to his quiver. “They’re everywhere nowadays.”
“The Aes Sedai told us about them,” Tam said, “spying for the Fades, and we spread the word. The Women’s Circle did, too. Nobody paid much mind until they started attacking sheep, though, pecking out eyes, killing some. The clip will be bad enough this year without that. Not that it matters much, I suppose. Between Whitecloaks and Trollocs, I doubt we’ll see any merchants after our wool this year.”
“Some fool has gone crazy over it,” Abell added. “Maybe more than one.  Rabbits, deer, foxes, even a bear. Killed and left to rot. Most not even skinned. It’s a man, or men, not Trollocs; I found boot prints.  A shame and a waste.”
Slayer. Slayer here, and not just in the wolf dream. Slayer and Trollocs. The man in the dream had seemed familiar.  There would be plenty of time for Trollocs later. A lifetime, if need be. “I promised Mat I’d look after Bode and Eldrin, Master Cauthon. How hard will it he to get them, and the others, free?”
“Hard,” Abell sighed, his face sagging. Suddenly he looked his age and more. “Powerful hard. I got close enough to see Natti after they took her, walking outside the tent where they’re holding everybody. I could see her with a couple of hundred Whitecloaks between us. I got a little careless, and one of them put an arrow through me. If Tam hadn’t hauled me back here to the Aes Sedai . . . ”
“It’s a good-sized camp,” Tam said, “right under Watch Hill. Seven or eight hundred men. Patrols, day and night, with the heaviest concentration from Watch Hill down to Emond’s Field. If they spread out more, it would make things easier for us, but except for a hundred men or so at Taren Ferry, they’ve just about given the rest of the Two Rivers over to the Trollocs. It’s bad down around Deven Ride, I hear. Another farm burned almost every night. The same between Watch Hill and the River Taren. Bringing Natti and the others out will be hard, and after, we’ll have to hope the Aes Sedai will let them stay here. That pair aren’t too pleased at anyone knowing where they are.”
“Surely someone will hide them,” Perrin protested.  They don’t really believe you’re Darkfriends?” Even as he said it, he was remembering Cenn Buie.
“No, not that,” Tam said, “except for a few fools. Plenty of folk will give us a meal, or a night in the barn, sometimes even a bed, but you have to understand they’re uneasy about helping people the Whitecloaks are chasing. It’s nothing to blame them for. Things are stone hard, and most men are trying to look after their own families the best they can, Asking someone to take in Natti and the girls, Haral and Alsbet . . . Well, it might be asking too much.”
“I thought better of Two Rivers folk than that,” Perrin muttered.
Abell managed a weak smile. “Most people feel caught between two millstones, Perrin. They’re just hoping they aren’t ground to flour between Whitecloaks and Trollocs.”
“They should stop hoping and do something.” For a moment Perrin felt abashed. He had not been living here; he had no idea what it was like. But he was still right. As long as the people hid behind the Children of the Light, they would have to put up with whatever the Children wanted to do, whether taking books or arresting women and girls. “Tomorrow I’ll take a look at this Whitecloak camp. There has to be some way to free them. And once they are, we can turn our attention to Trollocs. A Warder once told me Trollocs call the Aiel Waste ‘the Dying Ground.’ I mean to make them give that name to the Two Rivers.”
“Perrin,” Tam began, then stopped, looking troubled.
Perrin knew his eyes caught the light, there in the shadows under the oak. His face felt carved from rock.
Tam sighed. “First we’ll see about Natti and the others. Then we can decide what to do about the Trollocs. ”
“Don’t let it eat you inside, boy,” Abell said softly. “Hate can grow till it burns everything else out of you.”
“Nothing is eating me,” Perrin told them in a level voice. “I just mean to do what needs doing.” He ran a thumb along the edge of his axe. What needed doing.
Dain Bornhald held himself straight in his saddle as the hundred he had taken on patrol approached Watch Hill. Fewer than a hundred, now. Eleven saddles had cloak-wrapped bodies tied across them, and twenty-three more men nursed wounds. The Trollocs had laid a neat ambush; it might have succeeded against soldiers less well trained, less tough than the Children. What troubled him was that this was his third patrol to be attacked in force. Not a chance encounter, not happening on Trollocs killing and burning, but meeting a planned attack. And only patrols he led personally. The Trollocs tried to avoid the others. The fact presented worrisome questions, and the answers he came up with gave no solutions.
The sun was dropping. A few lights already appeared in the village that covered the hill from top to bottom with thatched roofs. The only tile roof stood at the crest, on the White Boar, the inn. Another evening he might have gone up there for a cup of wine, despite the nervous silence that closed in at the sight of a white cloak with a golden sunburst. He seldom drank, but he sometimes enjoyed being around people outside the Children; after a time they would forget his presence to some extent, and begin to laugh and talk among themselves again. On another evening. Tonight he wanted to be alone to think.
There was activity among the hundred or so colorful wagons gathered less than half a mile from the foot of the hill, men and women in even brighter hues than their wagons, examining horses and harness, loading things that had been lying about the camp for weeks. It seemed the Traveling People meant to live up to their name, probably at first light.
“Farran!” The thick-bodied hundredman heeled his horse closer, and Bornhald nodded toward the Tuatha’an caravan. “Inform the Seeker that if he wishes to move his people, they will move south.” His maps said there was no crossing of the Taren except at Taren Ferry, but he had begun learning how old they were as soon as he crossed the river. No one was leaving the Two Rivers to perhaps seal his command into a trap as long as he could stop it. “And Farran? There is no need to use boots or fists, yes? Words will suffice. This Raen has ears.”
“By your command, Lord Bornhald.” The hundredman sounded only a little disappointed. Touching gauntleted fist to heart, he wheeled away toward the Tuatha’an encampment. He would not like it, but he would obey. Despise the Traveling People as he might, he was a good soldier.
The sight of his own camp brought a moment of pride to Bornhald, the long neat rows of wedge-roofed white tents, the picket lines for the horses precisely arrayed. Even here in this Light-forsaken corner of the world, the Children maintained themselves, never allowing discipline to slack. It was Light-forsaken. The Trollocs proved that. If they burned farms, it only meant some folk here were pure. Some. The rest bowed, and said “Yes, my Lord,” “as you wish, my Lord,” and stubbornly went their own way as soon as his back was turned. Besides which, they were hiding an Aes Sedai. The second day south of the Taren they had killed a Warder; the man’s color-shifting cloak had been sufficient proof. Bornhald hated Aes Sedai, meddling with the One Power as if Breaking the World once was not enough. They would do it again if they were not stopped. His momentary good mood faded like spring snow.
His eye sought out the tent where the prisoners were kept, except for a brief exercise period each day, one at a time. None would try running when it meant leaving the others behind. Not that running would get them more that a dozen paces—a guard stood at either end of the tent, and a dozen paces in any direction took in another twenty Children—but he wanted as little trouble as possible. Trouble sparked trouble. If rough treatment was needed with the prisoners, it might raise resentment in the village to a point where something had to be done about it.  He—and others, Farran especially—wanted to put the prisoners to the question. Bornhald was not a Questioner, and he did not like to use their methods. Nor did he mean to let Farran anywhere near those girls, even if they were Darkfriends, as Ordeith claimed.
Darkfriends or no Darkfriends, he realized more and more that all he really wanted was one Darkfriend. More than the Trollocs, more than Aes Sedai, he wanted Perrin Aybara. He could hardly credit Byar’s tales of the man running with wolves, but Byar was clear enough that Aybara had led Bornhald’s father into a Darkfriend trap, led Geofram Bornhald to his death on Toman Head at the hands of the Seanchan Darkfriends and their Aes Sedai allies. Perhaps, if neither of the Luhhans talked soon, he might let Byar have his way with the blacksmith. Either the man would crack, or his wife would, watching. One of them would give him the means to find Perrin Aybara.
When he dismounted in front of his tent, Byar was there to meet him, stiff and gaunt as a scarecrow. Bornhald glanced distastefully toward a much smaller collection of tents apart from the rest. The wind was from that direction, and he could smell the other camp. They did not keep their picket lines clean, or themselves. “Ordeith is back, it seems, yes?”
“Yes, my Lord Bornhald.” Byar stopped, and Bornhald looked at him questioningly. “They report a skirmish with Trollocs to the south. Two dead. Six wounded, they claim.”
“And who are the dead?” Bornhald asked quietly.
“Child Joelin and Child Gomanes, my Lord Bornhald.” Byar’s hollow-cheeked expression never changed.
Bornhald drew off his steel-backed gauntlets slowly. The two he had sent off to accompany Ordeith, to see what he did on his forays south. Carefully, he did not raise his voice. “My compliments to Master Ordeith, Byar, and—No! No compliments. Tell him, in these words, that I will have his scrawny bones before me now. Tell him, Byar, and bring him if you must arrest him and those filthy wretches who disgrace the Children. Go.”
Bornhald held his anger until he was inside his tent, flap lowered, then swept maps and writing case from his camp table with a snarl. Ordeith must think him an imbecile. Twice he had sent men with the fellow, and twice they had been the only deaths in “a skirmish with Trollocs” that left no wounded to show among the rest. Always to the south. The man was obsessed with Emond’s Field. Well, he himself might have had his camp there, if not for . . . No point to it now. He had the Luhhans here. They would give him Perrin Aybara, one way or another. Watch Hill was a much better site if he had to move to Taren Ferry quickly. Military considerations before personal.
For the thousandth time he wondered why the Lord Captain Commander had sent him here. The people seemed no different from those he had seen a hundred other places. Except that only the Taren Ferry folk showed any enthusiasm for rooting out their own Darkfriends. The rest stared with a sullen stubbornness when the Dragon’s Fang was scrawled on a door. A village always knew who its own undesirables were; they were always ready to cleanse themselves, with a little encouragement, and any Darkfriends were certain to be swept up with the others the people wanted gone. But not here. The black scrawl of a sharp fang on a door might as well be new whitewash for all of its real effect. And the Trollocs. Had Pedron Niall known the Trollocs would come when he wrote those orders? How could he have? But if not, why had he sent enough of the Children to put down a small rebellion? And why under the Light had the Lord Captain Commander burdened him with a murderous madman?
The tent flap swept aside, and Ordeith swaggered in. His fine gray coat was embroidered with silver, but stained heavily. His scrawny neck was dirty, too, jutting out of his collar and giving him the look of a turtle. “A good evening to you, my Lord Bornhald. A gracious good evening, and splendid.” The Lugard accent was heavy today.
“What happened to Child Joelin and Child Gomanes, Ordeith?”
“Such a terrible thing, my Lord. When we came on the Trollocs, Child Gomanes bravely—” Bornhald struck him across the face with his gauntlets. Staggering, the bony man put a hand to his split lip, examined the red on his fingers. The smile on his face no longer mocked. It looked viperish. “Are you forgetting who signed my commission now, lordling?
Ordeith snarled, crouching like some wild thing, spittle bubbling. Slowly he shook himself, slowly straightened. “We must work together.” The Lugarder accent was gone, replaced by a grander, more commanding tone. Bornhald preferred the taunting Lugarder voice to the slightly oily, barely veiled contempt in this one. “The Shadow lies all around us here. Not simply Trollocs and Myrddraal. They are the least of it. Three were spawned here, Darkfriends meant to shake the world, their breeding guided by the Dark One for a thousand years or more. Rand al’Thor. Mat Cauthon. Perrin Aybara. You know their names. In this place, forces are loosed that will harrow the world. Creatures of the Shadow walk the night, tainting men’s hearts, corrupting men’s dreams. Scourge this land. Scourge it, and they will come. Rand al’Thor. Mat Cauthon. Perrin Aybara.” He almost caressed the last name.
Bornhald drew ragged breath. He was not sure how Ordeith had discovered what he wanted here; one day the man had simply revealed his knowledge. “I covered over what you did at the Aybara farm—”
“Scourge them.” There was a hint of madness in that grand voice, and sweat on Ordeith’s brow. “Flay them, and the three will come.”
Bornhald raised his voice. “Covered it over because I had to.” There had been no choice. If the truth came out, he would have more than sullen stares to contend with. The last thing he needed was open rebellion on top of Trollocs. “But I will not condone the murder of Children. Do you hear me?  Ordeith leaned forward intently. “You saw the Gray Men.”
Bornhald hesitated. Fifty of the Children around him, in the middle of Watch Hill, and no one had noticed the pair with their daggers. He had looked right at them and not seen. Until Ordeith killed the pair. The scrawny little fellow had gained considerable standing with the men for that. Later Bornhald had buried the daggers deep. Those blades had looked to be steel, but a touch seared like molten metal. The first earth thrown on them in the pit had hissed and steamed. “You believe they were after you?”
“Oh, yes, my Lord Bornhald. After me. Whatever it takes to stop me. The Shadow itself wants to stop me.”
“That still says nothing of murdered—”
“I must do what I do in secret.” It was a whisper, almost a hiss. “The Shadow can enter men’s minds to find me out, enter men’s thoughts and dreams.  It can happen.”
“You are . . . mad.”
“Give me a free hand, and I will give you Perrin Aybara. That is what Pedron Niall’s orders require. A free hand for me, and I will place Perrin Aybara in yours.”
Bornhald was silent for a long time. “I do not want to look at you,” he said finally. “Get out.”
When Ordeith was gone, Bornhald shivered. What was the Lord Captain Commander up to with this man? But if it put Aybara in his grasp . . . Tossing his gauntlets down, he began digging through his belongings. Somewhere he had a flask of brandy.
The man who called himself Ordeith, even sometimes thought of himself as Ordeith, slunk through the tents of the Children of the Light, watching the white-cloaked men with a wary eye.  Especially not Bornhald; that one might have to be disposed of, if he became too troublesome. Byar would be much more easily handled. But not yet. There were other matters more important. Some of the soldiers nodded respectfully as he passed. He showed them his teeth in what they took for a friendly smile. Tools, and fools.
His eyes skittered hungrily across the tent holding the prisoners. They could wait. For a while yet. A little while longer. They were only tidbits anyway. Bait. He should have restrained himself at the Aybara farm, but Con Aybara had laughed in his face, and Joslyn had called him a filthy-minded little fool for naming her son Darkfriend. Well, they had learned, screaming, burning. In spite of himself he giggled under his breath. Tidbits.
He could feel one of those he hated out there somewhere, south, toward Emond’s Field. Which one? It did not matter. Rand al’Thor was the only really important one. He would have known if it was al’Thor. Rumor had not drawn him yet, but it would. Ordeith shivered with desire. It had to be so. More tales must be gotten past Bornhald’s guards at Taren Ferry, more reports of the scouring of the Two Rivers, to drift to Rand al’Thor’s ears and sear his brain. First al’Thor, then the Tower, for what they had taken from him. He would have all that was his by right.
Everything had been ticking along like a fine clock, even with Bornhald impeding, until this new one appeared with his Gray Men. Ordeith scrubbed bony fingers through greasy hair. Why could not his dreams at least be his own? He was a puppet no longer, danced about by Myrddraal and Forsaken, by the Dark One himself. He pulled the strings now. They could not stop him, could not kill him.
“Nothing can kill me,” he muttered, scowling. “Not me. I have survived since the Trolloc Wars.” Well, a part of him had. He laughed shrilly, hearing madness in the cackle; knowing it, not caring.
A young Whitecloak officer frowned at him. This time there was nothing of a smile in Ordeith’s bared teeth, and the fuzzy-cheeked lad recoiled. Ordeith hurried on in a slinking shuffle.
Flies buzzed about his own tents, and sullen, suspicious eyes flinched away from his. The white cloaks were soiled here. But the swords were sharp, and obedience instant and unquestioning. Bornhald thought these men were still his. Pedron Niall believed it, too, believed Ordeith his tame creature. Fools.
Twitching aside his tent flap, Ordeith went in to examine his prisoner, stretched out between two pegs thick enough to hold a wagon team. Good steel chain quivered as he checked it, but he had calculated how much was needed, then doubled it. As well he had. One loop less, and those stout steel links would have broken.
With a sigh, he seated himself on the edge of his bed. The lamps were already lit, more than a dozen, leaving no shadow anywhere. The tent was as bright inside as noonday. “Have you thought over my proposal? Accept, and you walk free. Refuse . . . I know how to hurt your sort. I can make you scream through endless dying. Forever dying, forever screaming.”
The chains hummed at a jerk; the stakes driven deep into the ground creaked. “Very well.” The Myrddraal’s voice was dried snakeskin crumbling. “I accept. Release me.”
Ordeith smiled.  It would learn. They all would. “First, the matter of . . . shall we say, agreements and accord?” As he talked, the Myrddraal began to sweat.


Let’s set up our environment
%matplotlib inline
import matplotlib.pylab as plt
import numpy as np
import time
import seaborn as sns
import pandas as pd
sns.set_style('darkgrid')
sns.set_context('talk')
sns.set_palette("Set2", 30)
Now let’s import our functions from datamicroscopes
from microscopes.common.rng import rng
from microscopes.common.recarray.dataview import numpy_dataview
from microscopes.models import niw as normal_inverse_wishart
from microscopes.mixture.definition import model_definition
from microscopes.mixture import model, runner, query
from microscopes.common.query import zmatrix_heuristic_block_ordering, zmatrix_reorder
From here, we’ll generate four isotropic 2D gaussian clusters in each quadrant, varying the scale parameter
nsamples_per_cluster = 100
means = np.array([[1, 1], [1, -1], [-1, -1], [-1, 1]], dtype=np.float)
scales = np.array([0.08, 0.09, 0.1, 0.2])
Y_clusters = [
np.random.multivariate_normal(
mean=mu,
cov=var * np.eye(2),
size=nsamples_per_cluster)
for mu, var in zip(means, scales)]
df = pd.DataFrame()
for i, Yc in enumerate(Y_clusters):
cl = pd.DataFrame(Yc, columns = ['x','y'])
cl['cluster'] = i
df = df.append(cl)
Y = np.vstack(Y_clusters)
Y = np.random.permutation(Y)
df.head()
| x | y | cluster | |
|---|---|---|---|
| 0 | 1.557005 | 1.266202 | 0 |
| 1 | 1.465262 | 0.842641 | 0 |
| 2 | 0.619352 | 1.309368 | 0 |
| 3 | 1.130965 | 0.700129 | 0 |
| 4 | 1.447409 | 1.112726 | 0 |
Let’s have a look at the generated data
sns.lmplot('x', 'y', hue="cluster", data=df, fit_reg=False)
plt.title('Simulated Gaussians: 4 Clusters')
<matplotlib.text.Text at 0x112cf7290>
Now let’s learn this clustering non-parametrically!
There are 5 steps necessary to set up your model:
nchains = 8
# The random state object
prng = rng()
# Define a DP-GMM where the Gaussian is 2D
defn = model_definition(Y.shape[0], [normal_inverse_wishart(2)])
# Munge the data into numpy recarray format
Y_rec = np.array([(list(y),) for y in Y], dtype=[('', np.float32, 2)])
# Create a wrapper around the numpy recarray which
# data-microscopes understands
view = numpy_dataview(Y_rec)
# Initialize nchains start points randomly in the state space
latents = [model.initialize(defn, view, prng) for _ in xrange(nchains)]
# Create a runner for each chain
runners = [runner.runner(defn, view, latent, kernel_config=['assign']) for latent in latents]
We will visualize our data to examine the cluster assignment
def plot_assignment(assignment, data=Y):
cl = pd.DataFrame(data, columns = ['x','y'])
cl['cluster'] = assignment
n_clusters = cl['cluster'].nunique()
sns.lmplot('x', 'y', hue="cluster", data=cl, fit_reg=False, legend=(n_clusters<10))
plt.title('Simulated Gaussians: %d Learned Clusters' % n_clusters)
Let’s peek at the starting state for one of our chains
plot_assignment(latents[0].assignments())
Let’s watch one of the chains evolve for a few steps
first_runner = runners[0]
for i in xrange(5):
first_runner.run(r=prng, niters=1)
plot_assignment(first_runner.get_latent().assignments())
Now let’s burn all our runners in for 100 iterations.
We’ll do this sequentially since the model is simple, but check microscopes.parallel.runner for parallel implementions (with support for either multiprocessing or multyvac)
for runner in runners:
runner.run(r=prng, niters=100)
Let’s now peek again at the first state
plot_assignment(first_runner.get_latent().assignments())
Let’s build a z-matrix to compare our result with the rest of the chains
We’ll be sure to sort our z-matrix before plotting. Sorting the datapoints allows us to organize the clusters into a block matrix.
infers = [r.get_latent() for r in runners]
zmat = query.zmatrix(infers)
ordering = zmatrix_heuristic_block_ordering(zmat)
zmat = zmatrix_reorder(zmat, ordering)
sns.heatmap(zmat, linewidths=0, xticklabels=False, yticklabels=False)
plt.xlabel('entities (sorted)')
plt.ylabel('entities (sorted)')
plt.title('Z-matrix of Cluster Assignments')
<matplotlib.text.Text at 0x116f73510>


-- designer on my team 4/2/2009, 4:58:59 PM Favs: 0 Retweets: 0 link