Contents
In the introduction to this site, I explained why we decided to look at surveillance through a gendered lens. But once you have decided to do so, how do you gender surveillance? Two different yet connected frameworks have been especially valuable for our work. In the following two sections, I will share those theoretical insights, and the questions they force us to ask. In the final section, I will then look at the implications of these questions, and of the practice of gendering surveillance, for the struggle against the harms of surveillance more broadly. As will become clear, if we are to counter the harms of surveillance effectively, fighting for stronger privacy protections alone will not be enough.
1. The Two Dimensions of Surveillance
First, it is crucial to realise that surveillance is done for two different reasons. The first one is to monitor what you have done or are currently doing - that’s what happens, for example, when law enforcement has a strong suspicion that you might be engaging in a criminal activity. This dimension is usually referred to when we discuss surveillance as a tool to maintain security. It is what most people have in mind when they say, ‘you have nothing to fear if you have nothing to hide’. It is also the dimension that most frequently gets the spotlight when we talk about human rights violations relating to surveillance - the Snowden revelations, for example, are all about violations with regard to this dimension of surveillance.
Many democratic societies had, over the years, developed a fairly stable consensus as to in what circumstances and to what extent monitoring is acceptable, or not - and generally this agreement included that domestic scrutiny at least should be quite specific, both in terms of who and when (Lyon 2003). However, the Internet and digital technology have now shattered this consensus almost everywhere in the world. As governments engage more and more in mass surveillance, mostly merely because they can, human rights activists argue, among other things, that they are criminalising everyone. Even those who are not even suspect of a crime now fall under the gaze of the state and this is contrary to international human rights law. Since the Snowden revelations, this part of the debate has received a fair amount of attention.
However, there is a second dimension to surveillance practices, one that doesn’t get as much attention by far: surveillance can also shape what you will do in the future. That is because surveillance can incentivise certain kinds of behaviour, and discourage others. In that sense, as Jasbir Puar has noted, surveillance is pre-emptive: it seeks to control now, so that it can avoid having to repress later (Puar in conversation with West 2014). And it’s also productive, because it actually makes people do certain things. Just think of how carefully many of us tweak how we are perceived online, for example - indeed, very few of us are immune to the disciplinary power of the collective cybergaze (’That picture? No, don’t put up that picture!?! I look horrible in it!!’). The disciplinary dimensions of surveillance - perhaps most eloquently expanded on by Michel Foucault already in 1975 (1995) - pre-date the big data era; the fascist political systems of the twentieth century, for example, played amply on its potential, creating subjects who both disciplined themselves and closely watched and scrutinised others (as well as reported others to the authorities, all too often).
But with big data, the possibilities of shaping people’s behaviour have become ever more comprehensive. Perhaps you remember, for example, how Facebook noticed that all of us had started to share fewer personal updates, which are so important to Facebook’s business model, and then in June 2016, announced that it had tweaked its algorithm in an effort to get us to do this more again (Wagner 2016). That is the power that big data has to shape what we do.
There are even more insidious examples, through what is known as ‘social sorting’, by sorting people ‘into categories, assigning worth or risk, in ways that have real effects on their life-chances’ (Lyon 2003: 1). For example, more and more large companies use personality tests to sort through the large number of job applications they receive, even though plenty of studies have shown that such tests are a highly unreliable indicator of job performance. Yet if you don’t ‘crack’ that test, there is no future for you in these businesses. In this way, opaque algorithms that use proxies for what they claim to measure and that have inadequate-to-no feedback loops increasingly end up deciding our fate at crucial junctures in our lives (O’Neil 2016).
Moreover, surveillance might operate in a more and more dispersed manner in the digital age, but it has certainly not become more democratic: who receives discipline and punishment, who is deemed worthy of pleasure and intimacy remains distributed in deeply uneven manners (Puar in conversation with West 2014). This is perhaps even more so where surveillance takes the shape of social sorting: we aren’t even all subjected to the same gaze now, but differently gazed at depending on which box the algorithm has decided to slot us in. And where the assumptions on which these algorithms are based are biased, these ‘weapons of math destruction’, as Cathy O’Neil has called them, therefore frequently only further entrench inequalities (O’Neil 2016).
There are three further points to take away, then, from this discussion about surveillance’s avatars in the digital age. First, surveillance does not only take the form of watching and screening bodies and identities. It is also about identifying, tracking, monitoring, tabulating, analysing data (Monahan 2009 and Puar in conversation with West 2014). To fully grasp the harms of surveillance in the digital age, this is crucial to realise.
Second, this effect is also achieved by many systems that perhaps do not primarily have surveillance as a goal, such as the datagathering machines of the big Internet companies. The uses and effects of those machines are, however, nevertheless of a surveillant nature (Monahan 2009).
And third, whether or not you are put under surveillance is less and less in your control. Earlier, not committing any crimes could get you a long way. But today, your mere presence in a place, or simply having provided one or more data points, is enough for you to be brought into yet another network of control. Unless you stop participating in modern public life, it will be hard to escape surveillance right now.
2. Three Intersections of Gender, Technology and Surveillance
How does gender fit into surveillance in its dual dimensions? Torin Monahan’s (2009) conceptual categories of gender and technology design help to get a sense of the different ways in which this is possible. Monahan argues that there are three ways in which technologies have gendered outcomes. The first one is through body discrimination, which happens when technology privileges a certain type of person over others, effectively treating everyone who does not fit the norm as deviant. As a consequence, the outcomes that these technologies trigger are far less predictable for some people than for others.
For example, the whole-body imaging technologies that are now used in many airports around the world to screen passengers are often represented as objective and neutral - after all, for these technologies colour does not exist. Yet as the aim of using such technologies is precisely to police non-normative bodies, some are far more likely to be treated as a potential threat, and thus to be singled out for secondary screening, than others (Magnet and Rodgers 2012). People with bodily shapes that may render them deviant, thus, apparently include obese people, who supposedly could hide weapons ‘between folds of fat and ﬂesh’! (Jen Phillips quoted in Magnet and Rodgers 2012). The second way in which technologies have gendered outcomes is through context or use discrimination. As Monahan explained in earlier work:
'Because technologies are underdetermined, meaning that they take on values from the context of their use, existing conditions of inequality inflect technologies and technological systems, reproducing unequal social orders' (Monahan 2005).
And so, when existing social relationships are already patriarchal, ‘then surveillance (and other) technologies tend to amplify those tensions and inequalities’(Monahan 2009). When it comes to whole body imaging technologies, that means that transgender people, for example, are also at a heightened risk of being treated as ‘deviant’ and subjected to additional screenings - and to possibly be outed in public without their consent as a consequence (Magnet and Rodgers 2012). The case studies we present on this site have many additional examples of context or use discrimination.
The third form is through discrimination by abstraction, where we are reduced to data points in databases, disembodied and denuded from our social context, abstract representations of the world - or at least of what those who are in control of the data consider important in it. It is this that facilitates the control at a distance that is so typical of modern surveillance systems - just think of how central data gathering is to the development and management of so-called ‘smart’ cities, supposedly so much smoother and more efficient in their functioning than the cities most of us actually live in today.
But all too often, people’s social inequalities and experiences are not adequately reflected in the data. The fact that in India, as elsewhere, gender-disaggregated data is unavailable in so many cases just makes that all too clear. But things may be even worse when your individual data record is compared with the averages in a database as many weapons of math destruction do: in those cases, the fact that the inequalities you are suffering from might not be purely individual but have a collective dimension can simply disappear from view. And as existing structural inequalities are invisibilised, they end up getting further entrenched (O’Neil 2016).
The result is that we are sometimes treated as the sum of a few data points, that our data takes precedence over who we are as human beings - such as when a person is taken aside in an airport merely because of their name, their nationality, the colour of their skin.
3. The Implications of Gendering Surveillance: Moving Beyond Privacy towards Social Justice
As we hope the case studies on this site will show, women’s exact location in webs of power and subordination impacts profoundly the extent and nature of their experiences of surveillance. Yet there are important connections in how these experiences are produced. As the above discussion makes clear:
- surveillance is about relations of power and domination.
- surveillance almost always reinscribes existing power equations - because it generally aims to control, even eliminate, those who ‘deviate’ from the norm (though this needn’t necessarily be the case: sometimes marginalised people have successfully managed to reverse the gaze, or to appropriate a dual-use technology for their own benefit).
- surveillance is pre-emptive, productive as well as repressive in its functioning, such that its effects can take many forms.
This means, then, that the effects of surveillance are never merely personal; they are structural. Or put in another way, because of the central role of surveillance in policing and reproducing power relations, surveillance is ‘not merely a matter of personal privacy but of social justice’ (Lyon 2003: 1). For those interested in fighting back against the harms of surveillance, this insight has important consequences. Fighting for strong privacy protections - while necessary - will not be sufficient. Beyond this, fighting back against the harms of surveillance also requires, for example, transparency and accountability on the part of those who develop and implement powerful technologies. It requires preventing, to the extent possible, possibilities for manipulation of data and algorithms. And it requires grounding technologies once again ‘in social context, embodiment, and place’ (Monahan 2009: 299). Technologies of control at a distance facilitate the naturalisation of inequalities. It is only by putting technologies back into social contexts, and the webs of power relations that underlie them, that the promise of surveillance as empowering - which safety apps,for example, like to claim - can ever possibly be realised.
In this way, gendering surveillance redefines the arguments and strategies that human rights defenders will need to deploy to fight back against the harms of surveillance. If gender has always already been surveilled, bringing it into the heart of the debate on surveillance in the digital age will allow us to move that debate forward in new and profoundly empowering ways.
References
Foucault, Michel (1995). Discipline and Punish: The Birth of the Prison. New York: Vintage Books.
Lyon, David (2003). Introduction. In David Lyon (Ed.), Surveillance as Social Sorting: Privacy, Risk and Digital Discrimination. London: Routledge.
Magnet, Shoshana and Tara Rodgers (2011). Stripping for the State: Whole Body Imaging Technologies and the Surveillance of Othered Bodies. Feminist Media Studies, 12(1): 10-118.
Monahan, Torin (2005). Globalisation, Technological Change, and Public Education. New York: Routledge.
Monahan, Torin (2009). Dreams of Control at a Distance: Gender, Surveillance and Social Control. Cultural Studies ↔ Critical Methodologies, 9(2): 286-305.
O’Neil, Cathy (2016). Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy. UK: Allen Lane.
Wagner, Kurt (2016). Facebook Is Cutting Traffic to Publishers in Favor of User-Generated Content. Recode, 29 June, http://www.recode.net/2016/6/29/12053800/facebook-news-feed-algorithm-change-publisher-traffic.
West, Lewis (2014). Jasbir Puar: Regimes of Surveillance. Cosmologics Magazine, 4 December, http://cosmologicsmagazine.com/jasbir-puar-regimes-of-surveillance/.
Read next
‘Chupke, Chupke’: Going Behind the Mobile Phone Bans in North India
Since 2010, a number of khap panchayats across north India have pronounced bans on mobile phone use for young women. What drives such orders? Are they really effective? And how do young women themselves respond to the bans and the underlying anxieties? We went to Haryana and western UP to find out.
A Handy Guide to Decide How Safe That Safety App Will Really Keep You
Imagine a world where an army of women’s safety apps scoops you away from danger, and delivers you to safety? That’s the promise made by these apps. How well do they measure up against their own claims? Let’s look at a cackle of apps that act as surveillance assistants, leak your data and look smug, while purporting to keep you safe.
Caution! Women at Work: Surveillance in Garments Factories
Garment factory workers, predominantly women, work in stressful conditions in an exploitative industry where the pay is low. Read on to find out what CCTV cameras have done to the dramatic imbalance of power between workers and the factory management, and what role they can play in workers’ fight for an equitable workplace.


public interface DynamicMetaBean extends MetaBean
DynamicBean
.
A dynamic bean can have properties added or removed at any time. As such, there is a different meta-bean for each dynamic bean. The meta-bean allows meta-properties to be created on demand.
| Modifier and Type | Method and Description |
|---|---|
Class<? extends DynamicBean> |
beanType()
Get the type of the bean represented as a
Class . |
BeanBuilder<? extends DynamicBean> |
builder()
Creates a bean builder that can be used to create an instance of this bean.
|
<R> MetaProperty<R> |
metaProperty(String propertyName)
Gets a meta-property by name.
|
void |
metaPropertyDefine(String propertyName,
Class<?> propertyType)
Defines a property for the bean.
|
void |
metaPropertyRemove(String propertyName)
Removes a property by name.
|
beanName, createPropertyMap, metaPropertyCount, metaPropertyExists, metaPropertyIterable, metaPropertyMap
BeanBuilder<? extends DynamicBean> builder()
All properties added to the builder will be created and appear in the result.
builder
in interface MetaBean
UnsupportedOperationException
- if the bean cannot be createdClass<? extends DynamicBean> beanType()
Class
.<R> MetaProperty<R> metaProperty(String propertyName)
This will not throw an exception if the meta-property name does not exist. Whether a meta-property is immediately created or not is implementation dependent.
metaProperty
in interface MetaBean
R
- the property type, optional, enabling auto-castingpropertyName
- the property name to retrieve, not nullvoid metaPropertyDefine(String propertyName, Class<?> propertyType)
Some implementations will automatically add properties, in which case this method will have no effect.
propertyName
- the property name to check, not empty, not nullpropertyType
- the property type, not nullvoid metaPropertyRemove(String propertyName)
propertyName
- the property name to remove, null ignoredCopyright © 2007–2015 Joda.org. All rights reserved.


Static sites that do not have access to the LESS variables can leverage the product token palette via the color module class names.


Type the highlighted word, and each time you type a word correctly the car moves.
Your goal is to move across the screen before the two minutes run out!
Difficulty: Easy Medium Hard Let's Go!


The location package offers a number of value types and value support that can be used in and context of location.
Country
is an enumeration type for countries of the
world. For Hibernate 2 persistence, use the (legacy)
CountryHibernate2UserType
. For Hibernate 3
persistence, use the general {@link org.ppwcode.vernacular.value_III.hibernate3.PropertyEditorUserType}.


--- layout: page title: My Work - Amr Elsekilly permalink: /work/ ---
{{ project.date }}    {{ project.country }}


Guidelines for Donations
The IAR Social & Welfare Committee is pleased to accept donations of goods that would help needy people in the community but are unable to afford them.
Please donate items that are in good working condition since we do not have the facility or resources to repair items. The donated items are offered to the needy people as is. It is therefore expected that when recipients take the items home they would be functional.
How to donate?
If you would like to make a donation please send an email to<EMAIL_ADDRESS>along with your contact information (name, email address & phone number) and a list of the items you wish to donate.
Alternatively please call the Social & Welfare at<PHONE_NUMBER> ext 1338 and leave a message. A Social Welfare Committee member will call you back.
A member of the Social & Welfare Committee will get in touch with you to ensure that all items are in accordance with the guidelines below. We will coordinate the delivery / donation of the donated items.
What can you donate?
The goods that Social & Welfare Committee is willing to accept are listed below:
- House-wares -- dishes, kitchen utensils, lamps, etc
- Small appliances - microwave, vacuum cleaners, etc
- Large appliances in working condition - refrigerators, stoves, washers/dryers, etc
- Furniture -- dressers, tables, bed frames and sofas
- Iron and ironing board
- Television, antenna and digital converter in working condition
- Domestics -- curtains, linen, bedspreads, blankets, etc
- Sporting goods, Bicycles
- Books and School supplies
- Hardware and tools
Furniture and appliances should be in good working condition since we do not have the facility to repair or refurbish any item.
Please test all electronic items (TV, Microwave oven, etc) are in good working condition.
Please include all parts of a donation in separate box and ensure that all parts are there for the item to work.
What items are not accepted as donations?
We cannot accept the following items as donations:
- Clothing or Footwear
- Furniture in need of repair - soiled, torn, missing pieces, etc.
- Large appliances in need of repair - refrigerators, stoves, washers/dryers, etc
- Automobiles and automobile parts of any kind - tires, rims, hubcaps, batteries, etc
- Windows, screens, shutters, doors
- Scrap lumber, concrete, bricks, stones
- Bathroom/kitchen fixtures - sinks, bathtubs, toilets, etc
- Paint, household chemicals, insecticides, etc
Check before you donate
If you are unsure of the items, please call the IAR Social & Welfare number<PHONE_NUMBER> ext 1338 to confirm.
Please check your items before donating to make sure all are items you want to give to charity as the chances of retrieving any donations given by accident are very small.
In general, it is requested that donor transport the goods. However, in case of large items such as furniture or appliances such as washer / dryer, we may be able to help arrange for the items to be picked-up.
Please call the Social & Welfare number<PHONE_NUMBER> ext 1338 to coordinate the move and delivery.
Donations are tax deductible
Your donations to IAR Social & Welfare Committee are tax deductible. We will give you a receipt which lists items that you have donated.
Valuations of these donations are not done by IAR Social & Welfare Committee and need to be done in accordance with the IRS guidelines.


jAMM: jamovi Advanced Mediation Models
This page is deprecated, please refer to:
The new jAMM Docs page


Before Change
import io
import wave
import struct
fio = io.BytesIO()
Wave_write = wave.open(fio, "wb")
Wave_write.setnchannels(1)
Wave_write.setsampwidth(2)
Wave_write.setframerate(sample_rate)
tensor_enc = b""
After Change
length_frames, num_channels = tensor.shape
assert num_channels == 1 or num_channels == 2, "The second dimension should be 1 or 2."
with io.BytesIO() as fio:
soundfile.write(fio, tensor, samplerate=sample_rate, format="wav")
audio_string = fio.getvalue()
audio = Summary.Audio(sample_rate=sample_rate,
num_channels=num_channels,
length_frames=length_frames,
encoded_audio_string=audio_string,


{{#content "title"}}Joblint Web Service Documentation{{/content}} {{#content "description"}}Documentation for developers intending to use the Joblint.org web service.{{/content}}
The Joblint web service offers a simple way to lint your job specs without installing on your local machine. There is a single endpoint, and there aren't any rate limits (at the moment) – just be nice please :)
POST http://joblint.org/ws HTTP/1.1 User-Agent: MyApp/1.0 (a unique identifier for your application) Content-Type: application/json {spec:"Your job spec goes here"}
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 { "failPoints": { "culture": 0, "realism": 0, "recruiter": 0, "tech": 0 }, "errors": [ ... ], "warnings": [ ... ], "notices": [ ... ] }


Cookies have a weight. Big cookies mean big requests to the server. For example, if the cookie on your website is 3KB, every request on the same-origin automatically weights 3KB + other headers size. If the request is bigger than a network packet, then the request is splitted in several packets and it takes more time to be sent to the server. This can also lead to upload bandwidth saturation, because upload bandwidth is generally smaller than download bandwidth.
The best solution is of course to reduce the cookie size on your website. But it's not always easy: authentication cookies, A/B testing cookies, ...
This solution uses Service Workers to remove cookies on same-origin requests. Note that it will only work on HTTPS and on compatible browsers.
If your browser is compatible and the service worker is active, open your browser's network console and look at the requests. All assets loaded should have no cookie headers.
https://github.com/gmetais/sw-remove-cookies
Image by brainloc on sxc.hu (Bob Smith) (stock.xchng) [CC BY 2.5], via Wikimedia Commons.


It's finally here!
Nearly a year since we decided to take Cafe au Chain from an exploratory idea to a series of experiments designed to grow into a business, we’ve launched the culmination of the first set of experiments: Proof of Perk.
Proof of Perk (named after the economic measure concept proof of work) is designed to be an integrated inventory management platform and wholesale portal. Roasters can now track how much green coffee they have remaining in a contract, how much they have on hand, and how much they’ve roasted of any particular contract in any given time period. That data is automatically updated as wholesale orders from approved customers come in, filling your roast queue and calculating how much of any particular coffee and roast profile is needed.
As part of our platform’s mission, each action that’s taken on a particular pound of coffee, from delivery to the roaster, through roasting and fulfillment of orders, is being tracked as a transaction on the Cafe au Chain back end. Proof of Perk is just one interface into the full, transparent supply chain that’s our mission to support and build.
There have been pivots, reassessments, and periods of reflection, but eventually, you just have to put something out there and see how people respond. We’re excited to get you enrolled on Proof of Perk, and to get your feedback on how we can improve the platform to better serve you.
Side note: if you’re interested in getting first access to new features and helping us improve our platform, send us a message about joining the First Crack Beta Program.


The Emerald City of Oz
by L. Frank Baum
Chapter 22: “How the Wizard Found Dorothy”
Additional Information
- Year Published: 1910
- Language: English
- Country of Origin: United States of America
- Source: Baum, L. F. (1910). The Emerald City of Oz. Chicago, IL: Reilly and Britton.
-
Readability:
- Flesch–Kincaid Level: 6.0
- Word Count: 2,193
- Genre: Fantasy
- ✎ Cite This
Downloads
When they came to the signpost, there, to their joy, were the tents of the Wizard pitched beside the path and the kettle bubbling merrily over the fire. The Shaggy Man and Omby Amby were gathering firewood while Uncle Henry and Aunt Em sat in their camp chairs talking with the Wizard.
They all ran forward to greet Dorothy, as she approached, and Aunt Em exclaimed: “Goodness gracious, child! Where have you been?”
“You’ve played hooky the whole day,” added the Shaggy Man, reproachfully.

“You must be a’most starved!” said Aunt Em.
“No,” said Dorothy, “I’m not hungry. I had a wheelbarrow and a piano for breakfast, and lunched with a King.”
“Ah!” exclaimed the Wizard, nodding with a bright smile. “So you’ve been having adventures again.”
“She’s stark crazy!” cried Aunt Em. “Whoever heard of eating a wheelbarrow?”
“It wasn’t very big,” said Dorothy; “and it had a zuzu wheel.”
“And I ate the crumbs,” said Billina, soberly.
“Sit down and tell us about it,” begged the Wizard.  We found the path by accident, and seeing it only led to two places I decided you were at either one or the other of those places. So we made camp and waited for you to return. And now, Dorothy, tell us where you have been—to Bunbury or to Bunnybury?”
“Why, I’ve been to both,” she replied; “but first I went to Utensia, which isn’t on any path at all.”
She then sat down and related the day’s adventures, and you may be sure Aunt Em and Uncle Henry were much astonished at the story.
“But after seeing the Cuttenclips and the Fuddles,” remarked her uncle, “we ought not to wonder at anything in this strange country.”
“Seems like the only common and ordinary folks here are ourselves,” rejoined Aunt Em, diffidently.
“Now that we’re together again, and one reunited party,” observed the Shaggy Man, “what are we to do next?”
“Have some supper and a night’s rest,” answered the Wizard promptly, “and then proceed upon our journey.”
“Where to?” asked the Captain General.
“We haven’t visited the Rigmaroles or the Flutterbudgets yet,” said Dorothy. “I’d like to see them—wouldn’t you?”
“They don’t sound very interesting,” objected Aunt Em. “But perhaps they are.”
“And then,” continued the little Wizard, “we will call upon the Tin Woodman and Jack Pumpkinhead and our old friend the Scarecrow, on our way home.”
“That will be nice!” cried Dorothy, eagerly.
“Can’t say THEY sound very interesting, either,” remarked Aunt Em.
“Why, they’re the best friends I have!” asserted the little girl, “and you’re sure to like them, Aunt Em, ‘cause EVER’body likes them.”
By this time twilight was approaching, so they ate the fine supper which the Wizard magically produced from the kettle and then went to bed in the cozy tents.
They were all up bright and early next morning, but Dorothy didn’t venture to wander from the camp again for fear of more accidents.
“Do you know where there’s a road?” she asked the little man.
“No, my dear,” replied the Wizard; “but I’ll find one.”
After breakfast he waved his hand toward the tents and they became handkerchiefs again, which were at once returned to the pockets of their owners. Then they all climbed into the red wagon and the Sawhorse inquired:
“Which way?”
“Never mind which way,” replied the Wizard. “Just go as you please and you’re sure to be right. I’ve enchanted the wheels of the wagon, and they will roll in the right direction, never fear.”
As the Sawhorse started away through the trees Dorothy said:
“If we had one of those new-fashioned airships we could float away over the top of the forest, and look down and find just the places we want.”
“Airship? Pah!” retorted the little man, scornfully. “I hate those things, Dorothy, although they are nothing new to either you or me. I was a balloonist for many years, and once my balloon carried me to the Land of Oz, and once to the Vegetable Kingdom. And once Ozma had a Gump that flew all over this kingdom and had sense enough to go where it was told to—which airships won’t do. The house which the cyclone brought to Oz all the way from Kansas, with you and Toto in it—was a real airship at the time; so you see we’ve got plenty of experience flying with the birds.”
“Airships are not so bad, after all,” declared Dorothy. “Some day they’ll fly all over the world, and perhaps bring people even to the Land of Oz.”
“I must speak to Ozma about that,” said the Wizard, with a slight frown. “It wouldn’t do at all, you know, for the Emerald City to become a way-station on an airship line.”
“No,” said Dorothy, “I don’t s’pose it would. But what can we do to prevent it?”
“I’m working out a magic recipe to fuddle men’s brains, so they’ll never make an airship that will go where they want it to go,” the Wizard confided to her. “That won’t keep the things from flying, now and then, but it’ll keep them from flying to the Land of Oz.”
Just then the Sawhorse drew the wagon out of the forest and a beautiful landscape lay spread before the travelers’ eyes. Moreover, right before them was a good road that wound away through the hills and valleys.
“Now,” said the Wizard, with evident delight, “we are on the right track again, and there is nothing more to worry about.”
“It’s a foolish thing to take chances in a strange country,” observed the Shaggy Man. “Had we kept to the roads we never would have been lost. Roads always lead to some place, else they wouldn’t be roads.”
“This road,” added the Wizard, “leads to Rigmarole Town. I’m sure of that because I enchanted the wagon wheels.”
Sure enough, after riding along the road for an hour or two they entered a pretty valley where a village was nestled among the hills. The houses were Munchkin shaped, for they were all domes, with windows wider than they were high, and pretty balconies over the front doors.
Aunt Em was greatly relieved to find this town “neither paper nor patch-work,” and the only surprising thing about it was that it was so far distant from all other towns.
As the Sawhorse drew the wagon into the main street the travelers noticed that the place was filled with people, standing in groups and seeming to be engaged in earnest conversation. So occupied with themselves were the inhabitants that they scarcely noticed the strangers at all. So the Wizard stopped a boy and asked:
“Is this Rigmarole Town?”
“Sir,” replied the boy, “if you have traveled very much you will have noticed that every town differs from every other town in one way or another and so by observing the methods of the people and the way they live as well as the style of their dwelling places it ought not to be a difficult thing to make up your mind without the trouble of asking questions whether the town bears the appearance of the one you intended to visit or whether perhaps having taken a different road from the one you should have taken you have made an error in your way and arrived at some point where—”
“Land sakes!” cried Aunt Em, impatiently; “what’s all this rigmarole about?”
“That’s it!” said the Wizard, laughing merrily. “It’s a rigmarole because the boy is a Rigmarole and we’ve come to Rigmarole Town.”
“Do they all talk like that?” asked Dorothy, wonderingly.
“He might have said ‘yes’ or ‘no’ and settled the question,” observed Uncle Henry.
“Not here,” said Omby Amby. “I don’t believe the Rigmaroles know what ‘yes’ or ‘no’ means.”
While the boy had been talking several other people had approached the wagon and listened intently to his speech. Then they began talking to one another in long, deliberate speeches, where many words were used but little was said. But when the strangers criticized them so frankly one of the women, who had no one else to talk to, began an address to them, saying:
“It is the easiest thing in the world for a person to say ‘yes’ or ‘no’ when a question that is asked for the purpose of gaining information or satisfying the curiosity of the one who has given expression to the inquiry has attracted the attention of an individual who may be competent either from personal experience or the experience of others to answer it with more or less correctness or at least an attempt to satisfy the desire for information on the part of the one who has made the inquiry by—”
“Dear me!” exclaimed Dorothy, interrupting the speech. “I’ve lost all track of what you are saying.”
“Don’t let her begin over again, for goodness sake!” cried Aunt Em.
But the woman did not begin again. She did not even stop talking, but went right on as she had begun, the words flowing from her mouth in a stream.
“I’m quite sure that if we waited long enough and listened carefully, some of these people might be able to tell us something, in time,” said the Wizard.
“Let’s don’t wait,” returned Dorothy.
So the Wizard spoke to the Sawhorse, who trotted nimbly through the village and soon gained the open country on the other side of it. Dorothy looked back, as they rode away, and noticed that the woman had not yet finished her speech but was talking as glibly as ever, although no one was near to hear her.
“If those people wrote books,” Omby Amby remarked with a smile, “it would take a whole library to say the cow jumped over the moon.”
“Perhaps some of ‘em do write books,” asserted the little Wizard. “I’ve read a few rigmaroles that might have come from this very town.”
“Some of the college lecturers and ministers are certainly related to these people,” observed the Shaggy Man; “and it seems to me the Land of Oz is a little ahead of the United States in some of its laws. For here, if one can’t talk clearly, and straight to the point, they send him to Rigmarole Town; while Uncle Sam lets him roam around wild and free, to torture innocent people.”
Dorothy was thoughtful. The Rigmaroles had made a strong impression upon her. She decided that whenever she spoke, after this, she would use only enough words to express what she wanted to say.


Can't find what you are looking for?
Ministry of Energy, Mines and Petroleum Resources inspection reports for {{project.name}} from {{project.moreInspectionsLinkYear}} onwards can be accessed here.
Compliance and enforcement (C&E) activities begin after a claim is staked and continue through exploration and the life of a mine. The Ministry of Energy, Mines and Petroleum Resources (EMPR), Ministry of Environment and Climate Change Strategy (ENV) and Environmental Assessment Office (EAO) work together to provide integrated oversight of British Columbia’s mining sector. Inspection reports and related documents as well as other operation-specific compliance information can be found below. To learn more about compliance oversight of major mines in general, click here.


avery-dennison
Businessmodel of Avery Dennison
Customer Segments
Avery Dennison provides a range of products and solutions to commercial and industrial customers. The Company’s three operating segments serve distinct customers segments, including:
- Pressure-sensitive Materials, which provides products to label converters, package designers, packaging engineers and manufacturers, industrial manufacturers, printers, advertising agencies, government agencies, sign manufacturers, graphic vendors, tape converters, original equipment manufacturers, original design manufacturers, construction firms, personal care product manufacturers;
- Retail Branding and Information Solutions, which provides products to apparel and footwear brands, manufacturers and retailers, food service companies, grocery and pharmaceutical supply chains, consumer goods brands, automotive manufacturers, and transportation companies; and
- Vancive Medical Technologies, including medical technology companies and healthcare providers. Avery Dennison also sells products to specialist distributors. In 2015 no single customer accounted for more than 10% of the Company’s total sales.
The Company serves an international network of customers, including major markets across the US, Asia, Europe, and Latin America, as well as in various other jurisdiction around the world.
Value Propositions
Avery Dennison provides value to its customers in the following ways:
- Its industry standing and reputation, with the Company established as a leading provider of pressure-sensitive materials, as well as a range of tickets, tags, labels, having a track record for reliable and efficient supply to its customers;
- Its broad portfolio of products, with the Company manufacturing and selling a wide range of products – including packaging materials, graphics, reflective products, and adhesive materials – that serve a diverse client base, including industrial and commercial customers;
- Its international sales reach, with the Company making sales to customers across the US, Asia, the Americas, Europe, and various other jurisdictions around the world;
- Its extensive network of manufacturing facilities, with the Company operating an international network of manufacturing facilities that enable the Company to serve its customers quickly and efficiently through local and regional bases;
- Its specialist expertise and personnel, with the Company employing specialist technical personnel across its operating divisions, as well as an experienced team of industry executives. ### Channels
Avery Dennison operates a website at www.averydennison.com, through which it provides information on its various products, target industries, and technologies. The Company does not operate an online sales channel, nor does it provide customers with an online customer portal.
Avery Dennison makes its sales through its own in-house sales organisation, which is arranged into individual sales team by geographic region and operating segment. The Company has operations in more than 50 countries around the world, with the Company’s sales personnel operating out of offices across the Americas, Asia, Africa, the Middle East, and Europe, including in Japan, Singapore, South Africa, France, and Brazil.
Avery Dennison operates its own manufacturing and distribution infrastructure. This includes a network of around 180 manufacturing and distribution facilities across all of its operating regions. The Company serves its international customers through locally or regionally-based facilities.
Customer Relationships
Avery Dennison does not provide services to its customers on a self-service basis. Instead, the Company makes its sales directly through in-house sales personnel that consult with clients in order to agree the details of each individual sales and distribution contract. The Company seeks to establish long-term relationships with its customers and secure recurring business.
Avery Dennison provides ongoing support to its customers. The Company provides contact details for its various, enabling customers to contact the relevant departments over the phone or by post. Avery Dennison is also an active social media user, providing options for customers to make enquiries and queries directly through the Company’s Facebook, Twitter, and Google+ accounts. The company also operates separate social media accounts for its three operating segments, including with Instagram, LinkedIn, Pinterest, and YouTube.
Avery Dennison provides a range of online resources to its customers, including technical information on its products, news coverage, FAQs, and information on its sustainability and research and development activities.
Key Activities
Avery Dennison is engaged primarily in the production of pressure-sensitive materials, as well as a range of tickets, tags, labels and other converted products.
The Company organises its operations into three reportable business segments: Pressure-sensitive Materials, which manufactures and sells branded pressure-sensitive label and packaging materials, graphics, reflective products, tapes, and performance polymers; Retail Branding and Information Solutions, which designs, manufactures, and sells a variety of branding and information solutions; and Vancive Medical Technologies, which develops technologies for medical applications, including a range of pressure-sensitive adhesive materials. The Company’s pressure-sensitive materials are sold to label printers and converters that convert the materials into labels and other products through embossing, printing, stamping and die-cutting.
It also serves a network of footwear brands, manufacturers and retailers, food service companies, consumer goods brands, automotive manufacturers, and transportation companies.
Key Partners
Avery Dennison collaborates with a network of partner companies and organisations in support of its various manufacturing and distribution activities. These partnerships can be organised into several categories:
- Supplier and Vendor Partners, including suppliers of materials, equipment, and tools used in the Company’s manufacturing processes, as well as suppliers of technologies and services that are utilised across the Company’s operating segment more broadly;
- Channel and Distribution Partners, including various distribution and logistics companies that support the Company sales and distribution activities, in particular across jurisdictions where it is not itself well-served;
- Sustainability and Community Partners, including various charitable organisations and non-profits that work with the Company on sustainability and community projects around the world; and
- Strategic and Alliance Partners, including market leading companies across multiple business segments that work in collaboration with the Company on various joint projects and promotions. Avery Dennison has launched partnerships with a number of companies in recent years. This includes a manufacturing partnership with NXP Semiconductors, a charitable partnership with the Smile Foundation, and an alliance partner with GS1.
Key Resources
Avery Dennison’s key resources are its technologies and intellectual properties, its material and supply chain, its manufacturing and distribution facilities, its sales channels, its partnerships, and its personnel.
Avery owns a number of patents that it utilises in the manufacture of its various products. Searches of records published by the US Patent and Trademark Office identified numerous patent applications filed in the name of Avery Dennison, including applications entitled ‘System and method for RFID-based remote material analysis’, ‘System, method, and apparatus for RFID hang tag’ and ‘System and method for label matrix stripping’.
Avery Dennison also owns and or leases a broad network of properties around the world that are key to its manufacturing and distribution activities. This notably includes the Company’s network of 180 manufacturing and distribution facilities across the Americas, Europe, Asia, and Africa.
Cost Structure
Avery Dennison incurs costs in relation to the development of its technologies, the procurement of materials and supplies, the operation of its manufacturing and distribution facilities, the operating of its sales channels, the implementation of marketing campaigns, the management of its partnerships, and the retention of its personnel.
In 2015 Avery Dennison recorded cost of goods sold in the amount of $4.32 billion and marketing, general and administrative expenses totaling $1.11 billion. The Company’s research and development costs for the year totaled $91.9 million.
Revenue Streams
Avery Dennison generates revenue primarily through the manufacture and sale of a range of packaging and labelling products, as well as products with medical technology applications. These products include label and packaging materials, graphics, performance polymers reflective products, pressure-sensitive adhesive materials, and tapes. The Company also generates service revenue in relation to its provision of various retail branding and information solutions.
In 2015 Avery Dennison generated revenue in the amount of $5.97 billion, down slightly on the $6.33 billion recorded by the Company in 2014. The majority of the Company’s revenue was generated by the Company’s Pressure Sensitive Materials segment, which alone recorded annual revenue of $4.37 billion. This was followed by the Retail Branding and Information Solutions, which generated $1.52 billion, while the Vancive Medical Technologies recorded just $73 million.


Guidance
Ofsted inspects independent schools which are not members of associations, known as non-association independent schools.
All independent schools are inspected at the direction of the Department for Education (the DfE), which is the registration authority for independent schools. The DfE can request that Ofsted inspect’s an independent school at any time.
All non-association independent schools will have a ‘standard inspection’ within 3 years from September 2015. Standard inspections are carried out under the new Common Inspection Framework (CIF) and the independent school standards, which came into effect in January 2015.
Schools judged to be requires improvement and inadequate in a standard inspection from January 2015, will be re-inspected within 2 years. In addition, these schools may also receive a ‘progress monitoring inspection’ before their next standard inspection.
Boarding provision of independent boarding schools is inspected every 3 years.
There will be an ‘integrated inspection’ if both inspections are due at the same time.
Independent residential special schools usually receive an integrated inspection every 3 years. The residential provision of independent residential special schools will also be inspected annually.
School inspectors are either:
You could be inspected at any time. For standard inspections, notification is normally given around lunchtime, on the day before the start of the inspection. The inspection will typically start in the early afternoon of the following day.
Ofsted may also conduct standard inspections without notice. In such cases, there will be no prior notification given to the school. All progress monitoring and emergency inspections are conducted at no notice.
All parents of pupils at the school should be told about the inspection. Other relevant bodies, including those providing alternative provision for pupils, should also be notified of the inspection.
The standard letter that Ofsted provides should be used to notify parents of the inspection. The letter provides parents with details and options for providing their views.
Inspectors will look at Parent View to see the views of parents. Inspectors will also take into account the results of any past parent surveys, or other surveys, carried out by the school.
Schools will also be asked to distribute a questionnaire to their staff at the start of inspection, so that inspectors can find out their views about the school.
Once a year we ask schools to invite their pupils to fill in our online point-in-time surveys, so they can tell inspectors what they think about the school.
Where pupils have been placed at the school by a local authority, once a year the placing authority will also be sent a point-in-time-survey.
The responses to these surveys form part of the evidence considered by inspectors.
The inspection will not normally last longer than 3 days.
Inspectors will spend most of their time gathering evidence to inform judgements and to check the school’s compliance with the independent school standards. They will gather evidence in a range of ways. For example, they will talk to pupils about important aspects of the school’s work, observe teaching in lessons, and will scrutinise the school’s records and documentation.
Final judgements will be made when all evidence has been collected and considered.
The lead inspector will ensure that the headteacher and senior staff:
The school’s headteacher will be invited to:
They will also normally:
Inspectors will provide oral feedback to teachers and other staff about the work they see.
Before leaving the school, the lead inspector must make clear:
The inspection team’s judgements will be presented and explained to the senior leadership team and those responsible for the governance of the school, all of whom should be invited to the feedback.
The lead inspector will write a report setting out the inspection findings. The final version of the report is normally sent to the school within 14 working days after the end of the inspection. The final report will normally be published on the Ofsted website within 19 working days of the end of the inspection. If Ofsted decides that a report will be subject to further quality assurance, the school will usually receive an electronic version of the final report within 23 working days. In these circumstances, the final report will usually be published within 28 working days.
The report is also sent to the DfE.
The school has to send a copy of the report to parents and carers and to local authorities which fund places for pupils who have statements of special educational need or who are in public care.
The school also has to make a copy of the report available upon request to members of the public.
Where a school has failed to meet some standards in its education or welfare inspection, Ofsted reports this to the DfE who will:
The DfE can close a school if improvements are not made.
Any concerns or complaints about the inspection should be raised immediately with the lead inspector.
For issues that can’t be resolved during the inspection, a formal complaint can be made.
Ofsted carries out additional inspections of independent schools if asked to do so by the DfE. These types of inspections may also include independent schools which are members of associations and are normally inspected by other approved independent inspectorates.
Proprietors wishing to open a new independent school must apply to the DfE for registration .
When the DfE has checked that the application from a proposed new school is complete, it will commission Ofsted to conduct a pre-registration inspection of the proposed school.
The purpose of the inspection is to check whether the school is likely to meet the independent school standards if the DfE decides to register it. Schools must comply with the standards to be registered.
Once registered, new schools are inspected in their first year of operation.
Registered independent schools wishing to make changes to their registration must seek permission to do so from the DfE.
A change of proprietor, premises, age range, number or gender of pupils are known as material changes. If a school proposes to start or stop providing boarding accommodation, or to start or stop admitting pupils with special educational needs, these are also material changes.
The DfE may ask Ofsted to conduct an inspection to consider the implications of the material change. Inspectors will report to the DfE whether or not the school is likely to meet the relevant independent school standards if the material change is implemented.
The DfE may ask Ofsted to conduct an emergency inspection of an independent school for any reason. Normally, the commission will be as a result of a complaint or which appears to raise a concern about safeguarding pupils or putting their safety at risk. An emergency inspection will also be commissioned where the DfE suspects that a school may have closed.
The issue that triggered the inspection will be used as the main line of enquiry for the inspection. The purpose of the inspection is for Ofsted to report to the DfE on whether the school meets the independent school standards that relate to the issue.
The DfE may ask Ofsted to carry out a progress monitoring inspection to check the progress made by an independent school to address weaknesses identified at its previous inspection.
The previous standard or additional inspection will have identified qualitative weaknesses and/or judged that the school does not meet the independent school standards . If the previous inspection was a standard inspection, the school will have been judged inadequate or requires improvement overall.
Following the previous inspection, the DfE may have required the school to write an action plan to set out the steps the school proposes to take to address its weaknesses and to meet the un-met independent school standards. If so, the inspection will be carried out against the version of the action plan approved by the DfE.
You can read the full documents and guidance for independent schools inspections .
Published: 3 December 2014
Updated: 1 September 2015
From: Ofsted
Part of: Ofsted inspections of non-association independent schools


© 2012-2013 Sven Neuhaus. All rights reserved. Ingress is © 2012 NianticLabs@Google. Edited by @Cizaquita


Motivation¶
When first becoming acquainted with the wonderful Dash framework, it is not immediately obvious how to write and organize code that is scalable, modular, and DRY for increasingly complex apps.
Although, Dash documentation does touch on
application structure
here,
some felt that something was still missing that could be resolved with a more
object-oriented approach. See
this issue on GitHub for a very
good discussion on this topic. The foundation for dash_building_blocks
was bourne out of this discussion, particularly Ned’s comment
introducing the idea of a BaseBlock
that would link a layout to its
relevant callbacks, effectively creating a reusable and inheritable “block” of
Dash components.


| Class | Description |
|---|---|
| CustomDiscountCurveBuilder |
CustomDiscountCurveBuilder discount curve calibration and input instrument calibration quote recovery.
|
| CustomDiscountCurveReconciler |
CustomDiscountCurveReconciler demonstrates the multi-stretch transition custom discount curve
construction, turns application, discount factor extraction, and calibration quote recovery.
|
| CustomForwardCurveBuilder |
CustomForwardCurveBuilder contains the sample demonstrating the full functionality behind creating highly
customized spline based forward curves.
|
| DiscountCurveQuoteSensitivity |
DiscountCurveQuoteSensitivity demonstrates the calculation of the discount curve sensitivity to the
calibration instrument quotes.
|
| HaganWestForwardInterpolator |
This sample illustrates using the Hagan and West (2006) Estimator.
|
| MultiLegSwapAPI |
MultiLegSwapAPI illustrates the creation, invocation, and usage of the MultiLegSwap.
|
| RatesAnalyticsAPI |
RatesAnalyticsAPI contains a demo of the Rates Analytics API Usage.
|
| RatesLiveAndEODAPI |
RatesLiveAndEODAPI contains the sample API demonstrating the usage of the Rates Live and EOD functions.
|
| ShapeDFZeroLocalSmooth |
ShapeDFZeroLocalSmooth demonstrates the usage of different local smoothing techniques involved in the
discount curve creation.
|
| ShapePreservingDFZeroSmooth |
ShapePreservingDFZeroSmooth demonstrates the usage of different shape preserving and smoothing techniques
involved in the discount curve creation.
|
| TemplatedDiscountCurveBuilder |
TemplatedDiscountCurveBuilder sample demonstrates the usage of the different pre-built Discount Curve
Builders.
|
| TreasuryCurveAPI |
TreasuryCurveAPI contains a demo of construction and usage of the treasury discount curve from government
bond inputs.
|


{% extends "bootstrap/base.html" %} {% block title %}We Are Indivisible{% endblock %} {% block head %} {{ super() }} {% endblock %} {% block content %} {{ super() }} We Are Indivisible Find Your Reps What's Hot Learn About the Data Support Us {% endblock %}


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
For Caesar salad, preheat the oven to 180C/360F/Gas 4½.
Cut the top off of the garlic bulb and discard. Wrap the garlic bulb in aluminium foil and bake for about 20 minutes until the garlic is very soft.
Remove from the oven and set aside until cool enough to handle. Squeeze the roasted garlic into a small food processor.
Add the white wine, Chardonnay vinegar, mustard, egg yolk, half the marinated anchovies, Worcestershire sauce and parmesan and blend to a fine purée.
With the blender running, gradually trickle in the rapeseed oil until the mixture thickens and emulsifies. Season with salt and freshly ground black pepper.
Place the bread cubes into a bowl with the olive oil, rosemary, salt and black pepper and toss well to combine.
Heat a frying pan until hot, add the croutons in batches and cook for 2-3 minutes, turning frequently, until golden-brown and crisp.
Toss the baby gem lettuce leaves with the hot croutons, the remaining marinated anchovies and a drizzle of dressing.
For the anchovade, heat a frying pan over a medium heat until warm, then add the olive oil, garlic, shallots and white wine and cook for 1-2 minutes.
Add the anchovies to the pan and cook for a further 1-2 minutes until the anchovies soften.
Remove from the heat and blend the anchovy mixture with the egg yolk and cream in a food processor until it becomes a puree. Season with black pepper.
For the devilled anchovies, heat a deep fat fryer to 190C/375F, or alternatively heat some vegetable oil in a deep-sided, heavy-based pan, until a breadcrumb sizzles and turns golden-brown when dropped into it. (CAUTION: hot oil can be dangerous. Do not leave unattended).
Rinse the anchovies then pat dry with kitchen paper.
Soak the anchovies in the milk for a few minutes then drain.
Mix the flour, cayenne and salt together in a bowl then toss the anchovies, a few at a time, in the flour.
Place into the fat fryer in batches and fry for 1-2 minutes until crisp and golden-brown.
Remove from the hot fat with a slotted spoon and drain onto kitchen paper. Season with salt, a little extra cayenne pepper, and a squeeze of lemon.
To serve, pile the devilled anchovies onto a board. Spoon the warm anchovade into a small bowl and place alongside the anchovies, with the radishes. Finish with a little pile of Caesar salad on the same board.


Rare shot of Billy the Kid's on sale for $1m - only second time he's been pictured
Pictures shows the American icon playing cards with wanted Richard Brewer, Fred Waite and Henry Brown - and it can be yours when it goes on sale
by Christopher Bucktin, https://www.mirror.co.uk/authors/christopher-bucktin/A remarkable rare photo of Wild West gunslinger Billy the Kid playing cards with his gang has emerged for sale for $1million.
The picture, thought to have been taken in 1877, is only the second confirmed image of the outlaw who was shot dead four years later, at 21, by sheriff Pat Garrett.
It shows him with Richard Brewer, Fred Waite and Henry Brown, all of whom were wanted men.
Billy is dressed in a shirt, waistcoat and top hat. All four men are carefully considering their hands. On the table is an almost empty bottle of liquor.
At the time Billy, real name William H Bonney, was wanted for the murder of an Arizona blacksmith.
He is thought to have killed a further seven men in the Lincoln County War including sheriff William Brady.
The immaculate photo, in a cream leather frame, was given to the vendor’s grandad by the widow of David Anderson, better known as gang member Billy Wilson, over 100 years ago.
Sofe Design Auctions expects it to fetch around $1million when it goes on sale on Friday, near Dallas, Texas.
A spokesman said: “This is historically important, incredibly rare and one of a kind. It is only the second positively documented and analysed image of Billy the Kid as well as the only known group image to include him.
“It has never been seen before nor offered for sale.”
Experts at the George Eastman Museum in Texas verified its authenticity.
They said it is consistent with wet collodion tintype photographs widely produced from 1870 to 1890.
Of Billy’s fellow card players Brewer was killed in the Lincoln War while Waite and Brown became cowboys.


0.34.0
Test if all elements of array satisfy function
boolean
:
True if all objects satisfy, false otherwise
all(isNumber)([1, 2, 3])
// => true
all(is)([1, "asd", null])
// => false
Test if object properties match all objects in input array
boolean
:
True if all objects match, false otherwise
all({
id: isString
})([
{ id: "uuid1", name: "foo"}
{ id: "uuid2", name: "bar"}
])
// => true
Test if at least one element of array satisfies function
boolean
:
True if at least one object passes, false otherwise
any(isNumber)([1, "string", NaN])
// => true
any(is)([null])
// => false
Test if object properties match any object in input array
boolean
:
True if at least one object matches, false otherwise
anyBy({
id: isNumber,
name: "lorem",
})([
{ id: "uuid", name: "lorem" },
{ id: 2, name: "foo" },
{ id: 3, name: "lorem", foo: "bar" },
])
// => true
Functional case statement.
(any)
List of 2-tuples of functions (if, then)
(any)
Function to call if no condition matches. Defaults to identity.
(any)
Value to check
any
:
The result of calling the first matching then function or the
otherwise function on the input.
cases([
[x === 0, x => x * 2],
[x === 1, x => x],
], x => x + 1)(2) = 3
Merge two arrays/values into one array
Array
:
Array with concatenated values
concat([1])([4, 5])
// => [1, 4, 5]
concat(1)(4)
// => [1, 4]
Creates a new instance of the object with same properties than original. Will not inherit prototype, only own enumerable properties.
(any)
Input value
any
:
Cloned value
let x = {a: [1]}
clone(x)
// => {a: [1]}
close(x) === x
// => false
Test if string contains substring
boolean
:
contains("ipsum")("lorem ipsum")
// => true
Count items in array that satisfies a function
number
:
Number of items that satisfied
fn
count([1, 2, 3])
// => 3
count(
item => item.score === 10
)([
{ name: "Bob", score: 1, subject: "CS" },
{ name: "Alice", score: 10, subject: "Math" },
{ name: "Hatter", score: 10, subject: "Math"}
])
// => 2
Count objects that match
number
:
Number of objects that match
subset
countBy({
subject: value => value === "Math"
score: value => value > 5
})([
{ name: "Bob", score: 1, subject: "CS" },
{ name: "Alice", score: 10, subject: "Math" },
{ name: "Hatter", score: 10, subject: "Math"}
])
// => 2
Partially apply a function.
(any)
The function to apply
(any)
The arguments to apply, in order
any
:
If the number of arguments provided is sufficient to call the function,
call the function and return the result. Otherwise, return a new function
which takes additional parameters, returning the result of calling
curry
on the function with the provided parameters.
curry((a, b) => a + b)(1)(2) = 3
Convert a curried function of arity n to a simple function with n parameters.
(any)
The function to apply
(any)
The arguments to apply, in order
any
:
The result of calling the function on each argument in turn,
until a non-function is the return value. If an insufficient number
of arguments are provided, return the partially applied function.
uncurry(a => b => c => a + b * c)(1, 2, 3) = 7
Call function after wait
milliseconds have elapsed
(Function)
Source function
Function
:
Wrapper function that calls
fn
after
wait
passed without calling
// constructor
this.debouncedAutocomplete = debounce(autocompleteFromAPI, {
wait: 100,
bind: this
})
// render
<input onChange={this.debouncedAutocomplete} ... />
Determine a variable's type. Looks only for Array, Object and RegExp. Everything else are "Primitive"
Not using ../type/type.js
added ~300k ops/sec
(mixed)
The source
string
:
Determine if 2 arrays are equal. Order counts: [1, 2] !== [2, 1]
boolean
:
Determine if 2 objects are equal
boolean
:
Determine if 2 regular expressions are equal
boolean
:
Shallow equal
(mixed)
Source input
(mixed)
Other source input
boolean
:
Determine if two variables are structurally equal (callable curried or uncurried)
boolean
:
True if inputs are deeply equal, false otherwise
deepEqual(
{ b: 3, a: 2 },
{ a: 2, b: 3 }
)
// => true
deepEqual(
{ a :[1, 2] }
)(
{ a: [2, 1] }
)
// => false
Remove duplicate values. Will use deepEqual
for comparison.
(Array)
Input array
Array
:
Duplicate free array
distinct([1, 1, 2])
// => [1, 2]
Calculate elapsed time between to dates. In days, hours, minutes and seconds (callable curried or uncurried).
Object
:
elapsedTime(
new Date("June 1, 2018 00:00:00")
)(
new Date("June 1, 2018 03:24:00")
)
// => { days: 0, hours: 3, minutes: 24, seconds: 0 }
Test if string ends with substring (callable curried or uncurried).
boolean
:
True if
source
ends with
search
, false otherwise
endWith("ipsum")("lorem ipsum")
// => true
Return an array of key-value pairs corresponding to the key-value pairs of an Object.
(any)
(implicit)
The object to return key-value pairs for
any
:
Key-value pairs (2-tuples)
entries({ id: 1, name: "test" }) = [["id", 1], ["name", "test"]]
Given an array of key-value tuples, construct an Object.
(any)
(implicit)
The key-value pairs to create the object from
any
:
An object with the given key-value pairs
fromEntries([["id", 1], ["name", "test"]]) = {
id: 1,
name: "test"
}
Make safe for RegExp'ing.
(string)
Input string
string
:
escapeRegExp( "lorem. ipsum [dolor]" )
// => "lorem \\. ipsum \\[dolor\\]"
Escape HTML special chars for safe rendering.
(string)
Input string
string
:
escapeHTML("<script>alert('HERE'S BOBBY')</script>")
// => "<script>alert('HERE'S BOBBY')</script>"
Filter items in array that satisfies test function
Array
:
filter(is)([1, 2, null, 3, undefined])
// => [1, 2, 3]
Filter items in array that match subset
Array<Object>
:
filterBy({
id: is,
})([
{ id: 1 },
{ id: null, name: "test" },
{ id: 3, foo: "bar" },
{ name: "test" },
])
// => [{ id: 1 }, { id: 3, foo: "bar" }]
Find the position of first element that matches the subset criteria
number
:
const comments = [{id: 1, body: ""}, {id: 2, body: "dolor"}]
findIndexBy({id: 2})(comments)
// => 1
findIndexBy({id: 3})(comments)
// => -1
Find the first element that satisfies test function.
(mixed | undefined)
:
First item that satisfied
fn
find(x => x % 2 === 0)([1, 2, 3, 4, 5])
// => 2
Find the first element that satisfies test function.
(mixed | undefined)
:
First item that satisfied
fn
findBy({
id: 2
})([
{ id: 1, foo: "bar" },
{ id: 2, foo: "ipsum" }
])
// => { id: 2, foo: "ipsum" }
Flatten a single level of an array.
(any)
Recursively concat all arrays intro a single array
(Array)
Array with nested arrays
Array
:
1 level deep array
flatten([1, [2], [3, [4]]])
// => [1, 2, 3, 4]
An alternate version of flatten that treats nested arrays as branches, constructing a set of arrays which represent the permutations of concatenations possible when taking a single value from each branch.
Unlike flatten, flattenBranches does not recurse on subelements.
WARNING: As a permutation function, it's subject to combinatorial explosion.
flattenBranches([1, 2, [3, 4]]) =
[[1, 2, 3], [1, 2, 4]]
flattenBranches([1, [2, 3], [4, 5]]) =
[[1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5]]
Reverse the first two parameters of a function.
(any)
Reverse the first two parameters of an uncurried function.
(any)
Call fn
over each element of an array
undefined
:
Get value from obj property
mixed
:
prop("lorem")({ lorem: "ipsum" }) // => "ipsum"
prop("not-exist")({ lorem: "ipsum" }) // => undefined
Group values from a list into a list of lists.
(any)
One of:
A
s and returning a boolean.A
is the type of the value at the given key.any
:
A function taking a
A[]
, and returning a
A[][]
.
Alternatively, a function taking a
Object[]
where the value at
grouper
is an
A
(if
grouper
is a string), and returning a
Object[][]
.
If grouper
was passed as a string, each sublist of the result will contain
objects where the value at key grouper
is equal (===
).
Otherwise, each sublist of the result will contain A
s which return
true
when passed pairwise to grouper
.
groupBy(x => y => x % 2 === y % 2)([1,2,3,4,5]) = [[1,3,5], [2,4]]
groupBy('id')([{ id: 1 }, { id: 2 }, { id: 1 }]) = [[{ id: 1 }, { id: 1 }], [{ id: 2 }]]
Grater compare
boolean
:
gt(4)(10)
// => false
gt(14)(10)
// => true
Check if value is in array
(mixed)
What to search for
(Array)
Haystack
boolean
:
True if has, false otherwise
has( 2 )( [ 1, 2 ] )
// => true
has( 3 )( [ 1, 2 ] )
// => false
has( elm => elm.id === 1 )([{}, {id: 1}])
// => true
Determine the count of all field's distinct values in a list of objects (aka histogram)
Object
:
const scores = [{
name : "Bob",
score : 1,
subject: "Math"
}, {
name : "Alice",
score : 10,
subject: "Math"
}, {
name : "Hatter",
score : 10,
subject: "Math"
}]
hist( "score" )( scores )
// => { "1": 1, "10": 2 }
Identity function
(mixed)
The input
mixed
:
Functional if-then-else
(Function)
Condition function
(Function)
Then function
(Function)
Else function, defaults to identity
(mixed)
Input
mixed
:
Index an array of objects by field. Only truthy fields will be indexed.
Object
:
indexBy("id")([
{id: 1, user_id: 2},
{id: 2, user_id: 3},
])
// => {
// 1: [{id: 1, user_id: 2}],
// 2: [{id: 2, user_id: 3}],
// }
Test if a variable holds something
(any)
Source variable
boolean
:
is(null) // => false
is(0) // => true
is(undefined) // => false
is("") // => true
is(false) // => true
is(NaN) // => false
Determines something is empty
(Any)
Something to check if empty
boolean
:
True if empty, False otherwise
isEmpty({}) // true
isEmpty(1) // false
isEmpty(false) // false
isEmpty("") // true
isEmpty(null) // true
isEmpty(undefined) // true
isEmpty([]) // true
isEmpty(NaN) // true
isEmpty(/[A-z]/) // false
isEmpty(new Date()) // false
isEmpty(() => {}) // false
isEmpty(Promise.resolve() // false
Determines if one object's properties are equal to another
boolean
:
True if all "subset" properties are of equal (shallow
compare) value to properties in "source" object,
otherwise false
isMatch({
id: 2,
parentId: null,
})({
id: 2,
parentId: null
name: "John",
})
// true
isMatch({
"!parentId": null,
"name": "John",
})({
id: 2,
parentId: null,
name: "John",
})
// false
Test if a variable holds nothing
(any)
Source variable
boolean
:
isNot(null) // => true
isNot(NaN) // => true
isNot(undefined) // => true
isNot(0) // => false
isNot("") // => false
isNot(false) // => false
Join all elements of an array into a string
string
:
join( "," )( [ "lorem", "ipsum" ] )
// => "lorem,ipsum"
Return last element in array
(Array<T>)
Source array
T
:
Last element or undefined if empty source
last([1, 2, 3])
// 3
last([])
// undefined
Create a pair of lenses - functions for retrieving or updating the value at an object key.
The lens functions will throw errors if they are passed objects which are invalid for the lens.
(...any)
The path to the value to make lenses for. This must be flat.
any
:
A 2-tuple of lenses - the getter and the setter
lens("a", "b", "id")({ a: { b: { id: 1 } } }) = [get, set]
where get(obj) => 1
set(3)(obj) => { a: { b: { id: 3 } } }
A version of lens that allows nesting, allowing for the creation of multiple lenses simultaneously. Be careful with this one, it's subject to combinatorial explosion.
(...any)
_lenses("a", "b", ["id", "name"]) = [
lens("a", "b", "id")
lens("a", "b", "name")
]
_lenses("a", ["b", "c"], ["id", "name"]) = [
lens("a", "b", "id")
lens("a", "b", "name")
lens("a", "c", "id")
lens("a", "c", "name")
]
Make several lenses at once, which may be completely unrelated to one another.
Imagine we have an object:
{ a: { b: { id: 1, name: "Test" }, c: { banana: 1, message: "Error" } } }
(...any)
lenses(
["a", "b", ["id", "name"]],
["a", "c", "banana"]
) = [
[[getId, setId], [getName, setName]],
[getBanana, setBanana]
]
Less compare
boolean
:
lt(4)(10)
// => true
lt(14)(10)
// => false
Iterate over an input list, calling fn
for each element, return a new
array
Array
:
Find the maximum value in a source array
number
:
max([-1, 1, 10, 3])
// => 10
const fn = element => ( new Date( element.time ) )
const source = [
{ time: "2018-05-15T11:20:07.754110Z" },
{ time: "2018-06-11T09:01:54.337344Z" },
{ time: "2018-06-08T08:26:12.711071Z" },
]
max(fn)(source)
// => {time: "2018-06-11T09:01:54.337344Z"}
Merge two objects, provided a function to decide what to do with overlapping keys.
(any
= {}
)
(any
= defaultMergeFn
)
The merging function to use by default (if a specific function is not
provided for a key in the fn object.) By default, the second value
overwrites the first value unless the second value is undefined.
(any)
An Object of curried functions taking two values, where the function
at a key describes how to merge duplicate values at the key.
(any)
The first object
(any)
The second object
any
:
An object with properties merged from a and b
mergeTwoWith({ isLoading: a => b => a || b })({
isLoading: false,
a: undefined,
b: 2
})({
isLoading: true,
a: "test",
b: undefined
}) = {
isLoading: true,
a: "test",
b: 2
}
Merge two objects. Keys from the second object corresponding to undefined values will be ignored, otherwise same-named keys from the second object will take priority.
(any)
The first object
(any)
The second object
any
:
An object with the props from both input objects merged together
mergeTwo({ id: 1, name: "test" })(
{ id: undefined, name: "test2", error: "Error" }
) = { id: 1, name: "test2", error: "Error" }
Merge n objects, provided functions which describe what to do in the case of overlapping keys.
(any)
(any)
The merging function to use by default
(any)
An Object of curried functions taking two values, where the function
at a key describes how to merge duplicate values at the key.
(any)
The first object
(any)
The second object
any
:
An object with properties merged from all source objects
mergeWith({ isLoading: a => b => a || b })({
isLoading: false,
a: undefined,
b: 2
}, {
isLoading: true,
a: "test",
b: undefined
}, {
isLoading: false,
a: "test2",
c: false
}) = {
isLoading: true,
a: "test2",
b: 2,
c: false
}
Combine from left to right, 2 or more objects into a new single one. Properties will be shallow copied. Those with the same name will be overwriten by right most object.
Object
:
merge({a: "lorem"}, {b: "ipsum", c: 41}, {c: 42, b: undefined})
// => { a: "lorem", b: "ipsum", c: 42 }
Find the minimum value in a source array
number
:
min([-1, 1, 10, 3])
// => -1
Split a list based on a predicate function.
(any)
A predicate function.
any
:
A function taking a
A[]
and returning a two-tuple of
A[]
s.
The first element of the tuple consists of elements for which
the predicate returned
true
, the second of elements for which
it returned
false
.
partition(x => x % 2 === 0)([1,2,3,4,5]) = [[2,4],[1,3,5]]
Returns a partial copy of an object containing only the key-value pairs for which the provided predicate function returns true.
Returns a partial copy of an object containing only the keys specified. If the key does not exist, the property is ignored.
(any)
The properties to keep from the source
(any)
(implicit)
The input object
any
:
The input object, minus any keys which
pick(["id", "name"])({id: 2, name: "lorem", description: "lorem ipsum"})
// => {id: 2, name: lorem}
Performs left-to-right function composition. The leftmost function may have any arity, the remaining functions must be unary.
(Array)
Array of functions, call each one in order with the
input of previous one's result
(Array)
Arguments array
mixed
:
pipe( inc, inc )( 2 )
// => 4
Returns a new list by extracting the same named property off all objects in the source list
number
:
pluck("position")([{id: 1, position: 3}, {id:2, position: -1}])
// => [3, -1]
Add element at end of array
(mixed)
Element to be added
(Array)
Array to add to
Array
:
push( 2 )( [ 1 ] ) // => [ 1, 2 ]
push( 2, 4 )( [ 1 ] ) // => [ 1, 2, 4 ]
Apply a function against an accumulator and each element in the array (from left to right) to reduce it to a single value.
(Function)
Reduce function
(Object)
Default value for the accumulator
(Array)
Source input
mixed
:
Remove value from array (strict equality check)
(mixed)
Value to remove
(Array)
Input array
Array
:
remove(2)([1, 2, 3])
// => [1, 3]
remove(null)([1, null, 2, 3, null])
// => [1, 2, 3]
Replace substring in string
string
:
Replace element in array (shallow equal)
(mixed)
The old elm
(mixed)
The new elm
Array
:
Replace substring if source is string, replace element (shallow equal) if source is Array
(string | Array)
:
Rename object properties.
(any)
A mapping from old names to new ones
(any)
(implicit)
The object to rename keys of
rename({
test: "test2"
})({ test: 2, unrelated: false }) = { test2: 2, unrelated: false }
Create an array of numbers
Array<number>
:
sequence(1)(1, 5) // [1, 2, 3, 4, 5]
sequence(3)(1, 5) // [1, 4]
sequence(-1)(2, -3) // [ 2, 1, 0, -1, -2, -3 ]
Shallow clone of an object, setting or overriding a property with the given value
Object
:
set( "a", "lorem" )( { b: "ipsum" } )
// => { a: "lorem", b: "ipsum" }
Sort array using custom function
Array
:
sort((a,b) => a.id-b.id)([{id:2}, {id: 1}])
// => [{id:1}, {id: 2}]
Sort an array of objects by a custom field
Array
:
sortBy( "position" )( [
{ id: 1, position: 3 },
{ id: 2, position: 2 },
{ id: 3 },
{ id: 4, position: 5 },
{ id: 5, position: null },
] )
// [
// { id: 2, position: 2 },
// { id: 1, position: 3 },
// { id: 4, position: 5 },
// { id: 5, position: null },
// { id: 3 },
//]
Splits a String object into an array of strings by separating the string into substrings, using a specified separator string to determine where to make each split.
Array
:
split( "," )( "lorem,ipsum" )
// [ "lorem", "ipsum" ]
Return last element in array
(Array)
Source array
Array
:
All but first elements in array
tail([1, 2, 3])
// => [2, 3]
Call a function only if it hasn't been called in the last timeWindow
ms.
(function)
Function to be ran
(integer)
Time between each
fn
call
function
:
Either return
fn
if you've passed the
timeWindow
or return a timer that will
run the
fn
in
timeWindow
ms
Convert string to lower case
(string)
Source string
string
:
toLower("Lorem Ipsum")
// "lorem ipsum"
Add if not exists, remove otherwise
(mixed)
Toggable value
Array
:
toggle(1)([1, 2])
// => [2]
toggle(1)([2])
// => [1, 2]
Extract top elements from array
Array
:
top(2)([ 1, 2, 3 ])
// => [1, 2]
From ramda: Gives a single-word string description of the (native) type of a value, returning such answers as "Object", "Number", "Array", or "Null".
Does not attempt to distinguish user Object types any further, reporting them all as "Object".
(mixed)
Something to check type on
string
:
type({}) // "Object"
type(1) // "Number"
type(false) // "Boolean"
type("s") // "String"
type(null) // "Null"
type(undefined) // "Undefined"
type([]) // "Array"
type(/[A-z]/) // "RegExp"
type(new Date()) // "Date"
type(() => {}) // "Function"
type(Promise.resolve()) // "Promise"
Combine pairs of values from two lists by an arbitrary function. If the lists differ in length, the output will have the length of the shorter list.
(any)
The function to combine values by
(any)
The first list
(any)
The second list
zipWith(a => b => a * b)([2,3,4])([2,5,6]) = [4, 15, 24]
Combine pairs of values from two lists into a list of tuples.
If the lists differ in length, the output will have the length
of the shorter list. An alias of zipWith
where the fn
parameter
is a tupling function.
(any)
zip([2,3,4])([2,5,6]) = [[2, 2], [3, 5], [4, 6]]
Combine pairs of values from two lists matching a binary predicate into a list of arbitrary values.
(any)
A binary predicate function taking a value from each list and
returning a boolean
(any)
A function taking a value from each list and returning anything
(any)
The first list
(any)
The second list
zipFindWith(
a => b => (a * a) === b
)(a => b => a + b)([1, 2, 3])([4, 9, 1]) = [2, 6, 12]
Combine pairs of values from two lists matching a binary predicate
into a list of tuples. An alias of zipFindWith
where the fn
parameter
is a tupling function.
(any)
zipFind(
a => b => (a * a) === b
)([1, 2, 3])([4, 9, 1]) = [[1, 1], [2, 4], [3, 9]]
Combine pairs of values from two lists, where the second list must
be a list of objects and the value from the second list matches
a matching object (see isMatch
for details) generated by a value
from the first list. The values are combined via an arbitrary function.
An alias of zipFindWith
where the p
parameter is generated based
on the matching object returned by getMatchObj
.
(any)
zipByWith(
a => ({ aId: a.id })
)(a => b => merge(a, b))([
{ id: 1, color: 'red' },
{ id: 2, color: 'green' },
])([
{ aId: 2, fruit: 'pear' },
{ aId: 1, fruit: 'apple' },
]) = [
{ id: 1, aId: 1, color: 'red', fruit: 'apple' },
{ id: 2, aId: 2, color: 'green', fruit: 'pear' }
]
Combine pairs of values from two lists, where the second list must
be a list of objects and the value from the second list matches
a matching object (see isMatch
for details) generated by a value
from the first list. The values are combined into a tuple. An alias
of zipByWith
where values are combined by a tupling function.
(any)
zipByWith(
a => ({ aId: a.id })
)([
{ id: 1, color: 'red' },
{ id: 2, color: 'green' },
])([
{ aId: 2, fruit: 'pear' },
{ aId: 1, fruit: 'apple' },
]) = [
[{ id: 1, color: 'red' }, { aId: 1, fruit: 'apple' }],
[{ id: 2, color: 'green' }, { aId: 2, fruit: 'pear' }],
]
Create an object from two arrays, one containing keys, the other values. Bost arrays will be trimmed to the smallest length.
Object
:
zipToObj( [ a, b ] )( [ 1, 2 ] ) // => { a: 1, b: 2 }
zipToObj( [ a ] )( [ 1, 2 ] ) // => { a: 1 }


| GTK+ 2.0 Tutorial using Ocaml | ||
|---|---|---|
| <<< Previous | Miscellaneous Widgets | Next >>> |
Statusbars are simple widgets used to display a text message. They keep a stack of the messages pushed onto them, so that popping the current message will re-display the previous text message.
In order to allow different parts of an application to use the same statusbar to display messages, the statusbar widget issues Context Identifiers which are used to identify different "users". The message on top of the stack is the one displayed, no matter what context it is in. Messages are stacked in last-in-first-out order, not context identifier order.
A statusbar is created with a call to GMisc.status_bar :
val GMisc.statusbar : ?border_width:int -> ?width:int -> ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> statusbar |
A new Context Identifier is requested using a call to the following function with a short textual description of the context:
method new_context : name:string -> statusbar_context |
There are three functions that can operate on statusbar_contexts:
method push : string -> Gtk.statusbar_message method pop : unit -> unit method remove : Gtk.statusbar_message -> unit |
The first, push method, is used to add a new message to the statusbar. It returns a Message Identifier, which can be passed later to the remove method to remove the message with the given Message Identifiers and Context from the statusbar's stack.
The method pop removes the message highest in the stack with the given Context.
The following example creates a statusbar and two buttons, one for pushing items onto the statusbar, and one for popping the last item back off.
(* file: statusbar.ml *) let count = ref 0 let push_item context () = incr count; context#push (Printf.sprintf "item %d" !count); () let pop_item context () = context#pop (); () let main () = (* Create a new window; set title and border width *) let window = GWindow.window ~title:"Statusbar" () in (* Set a handler for destroy event that immediately exits GTK. *) window#connect#destroy ~callback:GMain.Main.quit; let vbox = GPack.vbox ~packing:window#add () in let statusbar = GMisc.statusbar ~packing:vbox#add () in let context = statusbar#new_context ~name:"Statusbar example" in let button = GButton.button ~label:"push item" ~packing:vbox#add () in button#connect#clicked ~callback:(push_item context); let button = GButton.button ~label:"pop last item" ~packing:vbox#add () in button#connect#clicked ~callback:(pop_item context); (* always display the window as the last step so it all splashes on * the screen at once. *) window#show (); GMain.Main.main () let _ = Printexc.print main () |
| <<< Previous | Home | Next >>> |
| Rulers | Up | Text Entries |


Let's play the game
Player:
X
log...
log...
log...
log...
log...
log...
log...
log...
log...
log...
New Game
Warning!
...
Game History
Board 1
Board 2
How to Play


Fastbook
Fast-Book.com is a web application designed to facilitate the exchange of textbooks, providing a service increasingly used as the second hand market, in our case, textbooks, academic, literary, poetic ones and so on. What we want with our application is to provide a useful and free service to the community, which is characterized by its simplicity, speed and ease of use, so that Fast-Book automates all typical processes which occur in program exchanges, with the objective o everything being done quickly and easily. The Idea Fast-Book.com is a website in which anyone can give a new life to your used books , the ones you no longer want to keep, selling them to recover some of your initial investment, or simply giving them away as you interchange them with somebody else. At the same time, users can search an extensive catalog and buy or exchange the used books they need. The Goal In Fast-Book.com we aim to extend the maximum possible use of our service in the market of second-hand books, throughout the entire country in order to ensure that everyone has access to textbooks you need or you are looking for. That’s why we can guarantee a good price for both the buyer and the seller. In addition to an exchange platform of textbooks, Fast-Book.com allows sending notifications and communicating them via email to users to keep them informed about their future purchases, as well as new books are added to our application.The Idea
Fast-Book.com is a website in which anyone can give a new life to your used books , the ones you no longer want to keep, selling them to recover some of your initial investment, or simply giving them away as you interchange them with somebody else. At the same time, users can search an extensive catalog and buy or exchange the used books they need. The Goal In Fast-Book.com we aim to extend the maximum possible use of our service in the market of second-hand books, throughout the entire country in order to ensure that everyone has access to textbooks you need or you are looking for. That’s why we can guarantee a good price for both the buyer and the seller. In addition to an exchange platform of textbooks, Fast-Book.com allows sending notifications and communicating them via email to users to keep them informed about their future purchases, as well as new books are added to our application.The Goal
In Fast-Book.com we aim to extend the maximum possible use of our service in the market of second-hand books, throughout the entire country in order to ensure that everyone has access to textbooks you need or you are looking for. That’s why we can guarantee a good price for both the buyer and the seller. In addition to an exchange platform of textbooks, Fast-Book.com allows sending notifications and communicating them via email to users to keep them informed about their future purchases, as well as new books are added to our application.Created By
Santiago Moreta, Carlos Maldonado & Andrés Culqui
Email: fastbookdaw@gmail.com


Database Table
Click below Buttons for Insert, Update and Delete.
ID
Event Name
Category
Location
Date
Time
Priority
Radio
1
Front End
Web development
My Place
1 April 2019
12 hours
Highest
1
Front End
Web development
My Place
1 April 2019
12 hours
Highest
1
Front End
Web development
My Place
1 April 2019
12 hours
Highest
1
Front End
Web development
My Place
1 April 2019
12 hours
Highest
1
Front End
Web development
My Place
1 April 2019
12 hours
Highest
Insert
Update
Delete


|
Aether.Physics2D
1.6
|
Classes | |
| class | Body |
| class | BodyCollection |
| class | ContactManager |
| class | ControllerCollection |
| class | Fixture |
| A fixture is used to attach a Shape to a body for collision detection. A fixture inherits its transform from its parent. Fixtures hold additional non-geometric data such as friction, collision filters, etc. Fixtures are created via Body.CreateFixture. Warning: You cannot reuse fixtures. More... | |
| class | FixtureCollection |
| struct | FixtureProxy |
| This proxy is used internally to connect fixtures to the broad-phase. More... | |
| class | Island |
| This is an internal class. More... | |
| class | JointCollection |
| struct | SolverIterations |
| struct | TimeStep |
| This is an internal structure. | |
| struct | SolverPosition |
| This is an internal structure. | |
| struct | SolverVelocity |
| This is an internal structure. | |
| struct | SolverData |
| Solver Data. | |
| class | World |
| The world class manages all physics entities, dynamic simulation, and asynchronous queries. More... | |
Enumerations | |
| enum class | BodyType { Static , Kinematic , Dynamic } |
| The body type. More... | |
| enum class | Category { None = 0x00000000 , Cat1 = 0x00000001 , Cat2 = 0x00000002 , Cat3 = 0x00000004 , Cat4 = 0x00000008 , Cat5 = 0x00000010 , Cat6 = 0x00000020 , Cat7 = 0x00000040 , Cat8 = 0x00000080 , Cat9 = 0x00000100 , Cat10 = 0x00000200 , Cat11 = 0x00000400 , Cat12 = 0x00000800 , Cat13 = 0x00001000 , Cat14 = 0x00002000 , Cat15 = 0x00004000 , Cat16 = 0x00008000 , Cat17 = 0x00010000 , Cat18 = 0x00020000 , Cat19 = 0x00040000 , Cat20 = 0x00080000 , Cat21 = 0x00100000 , Cat22 = 0x00200000 , Cat23 = 0x00400000 , Cat24 = 0x00800000 , Cat25 = 0x01000000 , Cat26 = 0x02000000 , Cat27 = 0x04000000 , Cat28 = 0x08000000 , Cat29 = 0x10000000 , Cat30 = 0x20000000 , Cat31 = 0x40000000 , All = int.MaxValue } |
Functions | |
| delegate bool | QueryReportFixtureDelegate (Fixture fixture) |
Called for each fixture found in the query.
| |
| delegate float | RayCastReportFixtureDelegate (Fixture fixture, Vector2 point, Vector2 normal, float fraction) |
| Called for each fixture found in the query. You control how the ray cast proceeds by returning a float: return -1: ignore this fixture and continue return 0: terminate the ray cast return fraction: clip the ray to this point return 1: don't clip the ray and continue More... | |
| delegate void | EndContactDelegate (Contact contact) |
| This delegate is called when a contact is deleted More... | |
| delegate bool | BeginContactDelegate (Contact contact) |
| This delegate is called when a contact is created More... | |
| delegate void | PreSolveDelegate (Contact contact, ref Manifold oldManifold) |
| delegate void | PostSolveDelegate (Contact contact, ContactVelocityConstraint impulse) |
| delegate void | FixtureDelegate (World sender, Body body, Fixture fixture) |
| delegate void | JointDelegate (World sender, Joint joint) |
| delegate void | BodyDelegate (World sender, Body body) |
| delegate void | ControllerDelegate (World sender, Controller controller) |
| delegate bool | CollisionFilterDelegate (Fixture fixtureA, Fixture fixtureB) |
| delegate void | BroadphaseDelegate (int proxyIdA, int proxyIdB) |
| delegate bool | BeforeCollisionEventHandler (Fixture sender, Fixture other) |
| delegate bool | OnCollisionEventHandler (Fixture sender, Fixture other, Contact contact) |
| delegate void | AfterCollisionEventHandler (Fixture sender, Fixture other, Contact contact, ContactVelocityConstraint impulse) |
| delegate void | OnSeparationEventHandler (Fixture sender, Fixture other, Contact contact) |
|
strong |
| delegate bool tainicom.Aether.Physics2D.Dynamics.BeginContactDelegate | ( | Contact | contact | ) |
This delegate is called when a contact is created
| delegate void tainicom.Aether.Physics2D.Dynamics.EndContactDelegate | ( | Contact | contact | ) |
This delegate is called when a contact is deleted
| delegate bool tainicom.Aether.Physics2D.Dynamics.QueryReportFixtureDelegate | ( | Fixture | fixture | ) |
Called for each fixture found in the query.
| delegate float tainicom.Aether.Physics2D.Dynamics.RayCastReportFixtureDelegate | ( | Fixture | fixture, |
| Vector2 | point, | ||
| Vector2 | normal, | ||
| float | fraction | ||
| ) |
Called for each fixture found in the query. You control how the ray cast proceeds by returning a float: return -1: ignore this fixture and continue return 0: terminate the ray cast return fraction: clip the ray to this point return 1: don't clip the ray and continue
| fixture | the fixture hit by the ray |
| point | the point of initial intersection |
| normal | the normal vector at the point of intersection |


| Overall Base Quality Score: |
[_BASE-QUALITY-SCORE_] ± [_BASE-QUALITY-SCORE-STD_] |
| Q30 Base Quality Score: | [_Q30-BASE-QUALITY-SCORE_] ± [_Q30-BASE-QUALITY-SCORE-STD_] |
| Quality Value Threshold | ≥Q30 | ≥Q25 | ≥Q20 | ≥Q15 | ≥Q10 | ≥Q5 |
|---|---|---|---|---|---|---|
| Count of Bases | [_COUNT-OF-BAESE-Q30_] | [_COUNT-OF-BAESE-Q25_] | [_COUNT-OF-BAESE-Q20_] | [_COUNT-OF-BAESE-Q15_] | [_COUNT-OF-BAESE-Q10_] | [_COUNT-OF-BAESE-Q5_] |
| Percentage % | [_PCT-OF-BAESE-Q30_] | [_PCT-OF-BAESE-Q25_] | [_PCT-OF-BAESE-Q20_] | [_PCT-OF-BAESE-Q15_] | [_PCT-OF-BAESE-Q10_] | [_PCT-OF-BAESE-Q5_] |
| Quality Value Threshold | ≥Q30 | ≥Q25 | ≥Q20 | ≥Q15 | ≥Q10 | ≥Q5 |
|---|---|---|---|---|---|---|
| Percentage of Reads % | [_PCT-OF-READS-Q30_] | [_PCT-OF-READS-Q25_] | [_PCT-OF-READS-Q20_] | [_PCT-OF-READS-Q15_] | [_PCT-OF-READS-Q10_] | [_PCT-OF-READS-Q5_] |
| Average Read Quality Histogram ([_AVG-READ-QUAL-HISTO-DATA_], [_AVG-READ-QUAL-HOSTO-D3_] ) |
| Average Base Position Quality Plot ( [_AVG-BASE-POS-QUAL-HISTO-DATA_], [_AVG-BASE-POS-QUAL-HISTO-D3_] ) |
| Insert Size Statistics | ||||||||
|
| Insert size histogram ( [_INSERT-SIZE-HISTO-DATA_], [_INSERT-SIZE-HISTO-D3_] ) |
| Read GC Histogram ([_READ-QC-HISTO-DATA_], [_READ-QC-HISTO-D3_] ) |
| Read 1 Nucleotide Composition Frequency Plot ([_NUC-COMP-FREQ-R1-DATA_], [_NUC-COMP-FREQ-R1-D3_]) | Read 2 Nucleotide Composition Frequency Plot ([_NUC-COMP-FREQ-R2-DATA_], [_NUC-COMP-FREQ-R2-D3_]) |
| Contaminant | Value | Contamination DB Description |
|---|---|---|
| Artifacts | [_CONTAM-ART-SEA-PCT_]% | Illumina sequencing artifacts and adapters not including DNA or RNA spike-ins |
| DNA spike-ins | [_DNA-SPIKEIN-SEAL_PCT_]% | DNA spike-in sequences |
| RNA spike-ins | [_RNA-SPIKEIN-SEAL_PCT_]% | RNA spike-in sequences |
| Fosmid | [_CONTAM-FOSMID-SEAL-PCT_]% | fosmid sequences |
| Mitochondria | [_CONTAM-MITO-SEAL-PCT_]% | mitochondria sequences |
| Chloroplast | [_CONTAM-CHLO-SEAL-PCT_]% | chloroplast sequences |
| PhiX | [_CONTAM-PHIX-SEAL-PCT_]% | control sequences |
| rRNA | [_CONTAM-RRNA-SEAL-PCT_]% | ribosomal RNA sequences |
| Non-synthetic Contaminants | [_CONTAM-NON-SYN-SEAL-PCT_]% | common microbial contamination found in the sequencing process |
| Synthetic Contaminants | [_CONTAM-SYN-SEAL-PCT_]% | synthetic sequencess used in library construction appearing as systematic contaminants |