The exact words are lifted from VoiceOver on Mac OS, but are good for a general guide.
| What it is | What it looks like | What it sounds like |
|---|---|---|
input wrapped in label
|
Username, edit text. | |
No for and id attributes
|
edit text. | |
With for and id attributes
|
Username, edit text. | |
Required with aria-required="true"
|
Username, required, edit text. | |
Required with aria-required="true" , error state using aria-invalid
|
Username, required, invalid data, edit text. | |
Error message in label
|
Username, Please enter your username, edit text, invalid data. | |
Error message before input , linked with aria-describedby
|
Username, invalid data, edit text. (pause) Please enter your username. | |
Error message after input , linked with aria-describedby
|
Username, invalid data, edit text. (pause) Please enter your username. |


Greatship Global Energy Services
Greatship Global Energy Services Pte. Ltd. (GGES) was incorporated in 2006. GGES shall focus on drilling services, with the intention of becoming a globally reputed drilling contractor.
GGES made its first investment in a new-building 350-foot jack-up rig ("Greatdrill Chitra") at Keppel FELS, Singapore. Greatdrill Chitra was delivered to GGES on October 19, 2009. In addition to this owned rig, the company has also in-chartered a new-built rig of the same design ("Greatdrill Chetna") on a bare-boat basis for a period of 3 years till March 2012.
Directors
- Mr. V. Sheshashayee (Executive Director)
- Mr. P R Naware
- Mr. Jaya Prakash
- Mr. Arangannal
Auditors: Shanker Iyer & Co.
Bankers: The Royal Bank of Scotland, Singapore
Greatship Global Offshore Services
Greatship Global Offshore Services Pte. Ltd (GGOS) was incorporated in 2007, with the intention of developing it into a best-in-class offshore construction services provider. The aim of this company is to operate in the more specialized domain of offshore and sub-sea construction, which requires specialized support vessels, including multi-purpose platform supply and support vessels (MPSSVs), multi-purpose support vessels (MSVs), diving support vessels and ROV support vessels.
GGOS, by 2011, will own and operate seven modern, state-of-art offshore vessels which include 1 AHTSVs, 3 MPSSVs, 2 MSVs and 1 ROVSVs.
All our vessels are built to the highest standards of safety and operational efficiency and conform to existing and envisaged IMO and Class rules, and are capable of operating in offshore waters across the world.
Directors
- Mr. V. Sheshashayee (Executive Director)
- Mr. P R Naware
- Mr. Jaya Prakash
- Mr. Arangannal
Auditors: Shanker Iyer & Co.
Bankers: The Royal Bank of Scotland, Singapore
Greatship Global Holdings Ltd.
Greatship Global Holdings Ltd. was incorporated on May 30th 2007.
Directors
- Mr. Ravi K. Sheth
- Mr. P R Naware
- Ms. Veronique Magny Antoine
- Ms. Priscille Koenig
- Ms. Rezah Cotobally (Alternate to Ms. Priscille Koenig)
- Mr. Shameel Rumjaun (Alternate to Ms. Veronique Magny Antoine)
Auditors: UHY Heeralall
Bankers: HSBC Bank, Mauritius
Greatship DOF Subsea Projects Private Limited
Greatship DOF Subsea Projects Private Limited (GDOF) was incorporated as the Wholly Owned Subsidiary of the Company in 2008.
The Joint venture agreement with DOF Subsea ASA, pursuant to which GDOF was incorporated, has been terminated by mutual consent.
Directors
- Mr. Ravi K. Sheth
- Mr. P R Naware
Auditors: Kalyaniwalla and Mistry
Bankers: The Royal Bank of Scotland, Mumbai
Greatship Subsea Solutions Singapore
Greatship Subsea Solutions Singapore Pte. Ltd. (GSS) was incorporated as a wholly owned subsidiary of GGOS on August 12, 2010. The Company has been incorporated with the intention of chartering of offshore supply and support vessels and providing offshore oilfiled services relating to subsea operations.
Directors
- Mr. V. Sheshashayee
- Mr. Arangannal
Auditors: Shanker Iyer & Co.
Bankers: The Royal Bank of Scotland, Singapore
Greatship Subsea Solutions Australia
Greatship Subsea Solutions Australia Pty Limited (GSA) was incorporated as a wholly owned subsidiary of GSS on August 17, 2010. The Company has been incorporated with the intention of commencing the offshore construction/ subsea services business.
Directors
- Mr. Christopher Mark Eastwell
- Mr. V. Sheshashayee
- Mr. Alok Mahajan
Greatship Global Offshore Management Services
Greatship Global Offshore Management Services Pte. Ltd. (GMS) was incorporated as a wholly owned subsidiary of GGOS on December 9, 2010. The Company has been incorporated with the intention of providing ship management services.
Directors
- Mr. V. Sheshashayee
- Mr. P. V. Suresh
- Mr. Arangannal
Auditors: Shanker Iyer & Co.
Greatship (UK) Limited
Greatship (UK) Limited (GUK) was incorporated as a wholly owned subsidiary of the Company on October 29, 2010. The Company has been incorporated with the intention of owning, chartering and operating of offshore supply and support vessels.
Directors
- Mr. Michael Brace


SendIT is a website that allows one to send and receive pacrcels from different parts of the country.


Toggle navigation
MOZZO
Dashboard
Dashboard
Total Reviews!
Rating
Competition
Sentiment Analysis
Actions
Latest Reviews


Post-commit test task guides
These guides provide steps for common post-commit test failure tasks.
Finding someone to triage a post-commit test failure
To find the proper person to triage a test failure, you can use these suggestions:
- If you can triage it yourself, go for it.
- Look at the GitHub blame for the files with problematic code.
- Ask in the Beam Slack chat.
- Write to the dev list<EMAIL_ADDRESS>Rolling back a commit
Rolling back is usually the fastest way to fix a failing test. However it is is often inconvenient for the original author. To help the author fix the issue, follow these steps when you rollback someone’s change.
- Rollback the PR.
- Create a JIRA issue that contains the following information:
- the reason for the rollback
- a link to the test failure’s JIRA issue
- triage information
- any other relevant details
- Assign the new JIRA issue to the original PR author.
- Consider re-opening the JIRA issue associated with the original PR (if there is one).
- Send a notification email with information about the rollback, links to the
original PR and the rollback PR, and the reasons for the rollback to:
-<EMAIL_ADDRESS>- the original PR author and the committer of the PR
- Close the test failure JIRA issue. Your work is done here!
Disabling a failing test
If a test fails, our first priority is to rollback the problematic code and fix the issue. However, if both: rollback and fix will take awhile to implement, it is safer to temporarily disable the test until the fix is ready.
Use caution when deciding to disable a test. When tests are disabled, contributors are no longer developing on top of fully tested code. If you decide to disable a test, use the following guidelines:
- Notify the<EMAIL_ADDRESS>mailing list. Describe the problem and let everyone know which test you are disabling.
- Implement the fix and get the test back online as soon as possible.
While the test is disabled, contributors should not push code to the failing test’s coverage area. The code area is not properly tested until you fix the test.


complete your tasks with
Add New Task
New task
×
Task Name
Looks good!
Task Name needs to be 8 characters or more
Task Description:
Looks good!
Task Description needs to be 15 characters or more
Assigned to
Select...
Jane Taas
Tash Moon
Nigel Quinlan
Aaron Byrom
Nick Matenaar
Robin Klaus
Looks good!
Please choose one option
Due Date
Looks good!
Please choose a date which is today or in the future
Status
Select...
To do
In progress
Review
Done
Looks good!
Please choose one option


>
An introduction to the concepts used by the ProseMirror library, with examples.
A full listing and description of the public API exported by the library, per module.
Code examples that show how to implement common use cases.
The version history of the project, listing all releases and the changes they made.
About the concept of the project and the collaborative editing technique.
A discussion board for asking questions and giving feedback.


portfolioportfolioportfolioportfolioportfolio
About
blog
get in touch
portfolio
About
blog
get in touch
portfolio
About
blog
get in touch
blog
«
1
2
3
4
5
»
Loading state


Optimized bcrypt in JavaScript with zero dependencies. Compatible to the C++ bcrypt binding on node.js and also working in the browser.
Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the iteration count can be increased to make it slower, so it remains resistant to brute-force search attacks even with increasing computation power. (see)
While bcrypt.js is compatible to the C++ bcrypt binding, it is written in pure JavaScript and thus slower (about 30%), effectively reducing the number of iterations that can be processed in an equal time span.
The maximum input length is 72 bytes (note that UTF8 encoded characters use up to 4 bytes) and the length of generated hashes is 60 characters.
The library is compatible with CommonJS and AMD loaders and is exposed globally as dcodeIO.bcrypt
if neither is available.
On node.js, the inbuilt crypto module’s randomBytes interface is used to obtain secure random numbers.
npm install bcryptjs
In the browser, bcrypt.js relies on Web Crypto API’s getRandomValues interface to obtain secure random numbers. If no cryptographically secure source of randomness is available, you may specify one through bcrypt.setRandomFallback.
or
require.config({
paths: { "bcrypt": "/path/to/bcrypt.js" }
});
require(["bcrypt"], function(bcrypt) {
...
});
To hash a password:
var bcrypt = require('bcryptjs');
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync("B4c0/\/", salt);
// Store hash in your password DB.
To check a password:
// Load hash from your password DB.
bcrypt.compareSync("B4c0/\/", hash); // true
bcrypt.compareSync("not_bacon", hash); // false
Auto-gen a salt and hash:
To hash a password:
var bcrypt = require('bcryptjs');
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash("B4c0/\/", salt, function(err, hash) {
// Store hash in your password DB.
});
});
To check a password:
// Load hash from your password DB.
bcrypt.compare("B4c0/\/", hash, function(err, res) {
// res === true
});
bcrypt.compare("not_bacon", hash, function(err, res) {
// res === false
});
// As of bcryptjs 2.4.0, compare returns a promise if callback is omitted:
bcrypt.compare("B4c0/\/", hash).then((res) => {
// res === true
});
Auto-gen a salt and hash:
Note: Under the hood, asynchronisation splits a crypto operation into small chunks. After the completion of a chunk, the execution of the next chunk is placed on the back of JS event loop queue, thus efficiently sharing the computational resources with the other operations in the queue.
Sets the pseudo random number generator to use as a fallback if neither node’s crypto
module nor the Web Crypto API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it is seeded properly!
| Parameter | Type | Description |
|---|---|---|
| random | function(number):!Array.<number> | Function taking the number of bytes to generate as its sole argument, returning the corresponding array of cryptographically secure random byte values. |
| @see | http://nodejs.org/api/crypto.html | |
| @see | http://www.w3.org/TR/WebCryptoAPI/ |
Hint: You might use isaac.js as a CSPRNG but you still have to make sure to seed it properly.
Synchronously generates a salt.
| Parameter | Type | Description |
|---|---|---|
| rounds | number | Number of rounds to use, defaults to 10 if omitted |
| seed_length | number | Not supported. |
| @returns | string | Resulting salt |
| @throws | Error | If a random fallback is required but not set |
Asynchronously generates a salt.
| Parameter | Type | Description |
|---|---|---|
| rounds | number | function(Error, string=) | Number of rounds to use, defaults to 10 if omitted |
| seed_length | number | function(Error, string=) | Not supported. |
| callback | function(Error, string=) | Callback receiving the error, if any, and the resulting salt |
| @returns | Promise | If callback has been omitted |
| @throws | Error | If callback is present but not a function |
Synchronously generates a hash for the given string.
| Parameter | Type | Description |
|---|---|---|
| s | string | String to hash |
| salt | number | string | Salt length to generate or salt to use, default to 10 |
| @returns | string | Resulting hash |
Asynchronously generates a hash for the given string.
| Parameter | Type | Description |
|---|---|---|
| s | string | String to hash |
| salt | number | string | Salt length to generate or salt to use |
| callback | function(Error, string=) | Callback receiving the error, if any, and the resulting hash |
| progressCallback | function(number) | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per MAX_EXECUTION_TIME = 100 ms. |
| @returns | Promise | If callback has been omitted |
| @throws | Error | If callback is present but not a function |
Synchronously tests a string against a hash.
| Parameter | Type | Description |
|---|---|---|
| s | string | String to compare |
| hash | string | Hash to test against |
| @returns | boolean | true if matching, otherwise false |
| @throws | Error | If an argument is illegal |
Asynchronously compares the given data against the given hash.
| Parameter | Type | Description |
|---|---|---|
| s | string | Data to compare |
| hash | string | Data to be compared to |
| callback | function(Error, boolean) | Callback receiving the error, if any, otherwise the result |
| progressCallback | function(number) | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per MAX_EXECUTION_TIME = 100 ms. |
| @returns | Promise | If callback has been omitted |
| @throws | Error | If callback is present but not a function |
Gets the number of rounds used to encrypt the specified hash.
| Parameter | Type | Description |
|---|---|---|
| hash | string | Hash to extract the used number of rounds from |
| @returns | number | Number of rounds used |
| @throws | Error | If hash is not a string |
Gets the salt portion from a hash. Does not validate the hash.
| Parameter | Type | Description |
|---|---|---|
| hash | string | Hash to extract the salt from |
| @returns | string | Extracted salt part |
| @throws | Error | If hash is not a string or otherwise invalid |
Usage: bcrypt <input> [salt]
If the input has spaces inside, simply surround it with quotes.
Based on work started by Shane Girish at bcrypt-nodejs (MIT-licensed), which is itself based on javascript-bcrypt (New BSD-licensed).
New-BSD / MIT (see)


xeogl
using
GLTFModel
and
ZSpaceEffect
components to view a glTF model in zSpace VR
click a node in the explorer below to fly to its
Entity


Iran student leader ‘regrets’ 1979 US Embassy attack
ISTANBUL: Interior Minister Suleyman Soylu said on Saturday Turkey would send captured Daesh members back to their home countries, and he complained about European inaction on the matter.
“That is not acceptable to us. It’s also irresponsible,” he said of Europe leaving Turkey to deal with the prisoners alone. “We will send the captured Daesh members to their countries,” he told reporters.
Turkey has captured some escaped Daesh members in northeastern Syria over the last month after it launched a military incursion there.


I'm a recruiter and engineer, who supports companies acquire the best talents for their projects.
After working professionally as a software engineer since 2005, I acquired technical skills that help me source and identify other engineers and designers faster than most other recruiter colleagues, who mostly have a background in business or psychology.
I started in 2011 to recruit other engineers and designers for projects that I managed, basically working as a contractor and employer at the same time.
In 2014, I additionally then started recruiting experts, who worked directly for other managers and companies with an extremely high success rate, thereby eventually enabling me to predominantly focus on recruiting.
Though I am currently mainly focused on recruiting, let me also elaborate on the other roles, that presently occupy me on a smaller scale, as an engineer and as the managing director of Bolingo respectively ...
As a software contractor and employer, I acquire software engineering contracts and implement them with my network of specialists. I then create a competent, dynamic and creative team of these specialists and ensure that they communication excellently, tackle challenges fast, adapt well to changing requirements and constantly come up with new ideas.
I've been contracted by and implemented projects for companies of all sizes from small startups, NGOs to billion dollar mega corporations. Some examples are Deutsche Telekom AG, Triplesense GmbH, Home24 AG (Rocket Internet AG), RTL Group, Hivos People Unlimited, Villeroy & Boch AG and DieCrema GmbH.
As the managing director of Bolingo, a small company specialized in the production of live musical events like parties and concerts, I supervise the event managers who produce the events and create the language that addresses best the Bolingo community and fan base. I also direct designers who create the visual language for the brand. I started Bolingo back in 2012 in Cologne, Germany because of my passion for Afrobeats.
I originate from Bamenda, Cameroon and am currently based in Berlin, Germany.


The size in megabytes of the encrypted volumes created by TKLBAM's back-end Duplicity. The default is fine for most usage scenarios.
Slow and unreliable network connections may benefit from a lower volume size. Amazon S3 doesn't support resuming partial uploads for a stored object so if the network breaks during upload, Duplicity will restart the upload for that backup volume.


"The scanning station is South East of me. It's a computer on a table with a scanner next to it." She says, pointing.
"The scan program is up on the screen. Put your documents face up if you use the feed tray. Be sure to save your documents to the desktop so you can find them later. You can send your scan to the printer or attach it to an email. You can even save it to a personal flash drive if you have one. Once you are finished, be sure to log off the computer using the red log off icon on the desktop."
Sounds like a lot, you say to her.
"Well, if you need any help, once you are all set up, just let me know."
| Go North | ||
| Go West | Go East | |
| Go South |


1
2
3
4
5
6
7
8
9
10
11
12
To arrange sortable items as a grid, give them identical dimensions and float them using CSS.


I designed the weather app while I was learning to code in React. I found an open API through Dark Skies that allows you to input any longitude and latitude coordinates and find the weather information for that specific area. I designed this app to allow the user to search a location by either coordinates or the address. The current weather conditions are displayed using illustrated graphics. There are two alternate color schemes for day and night. The colors are dimmer for daytime and brighten as the sun goes down.


Colin M. Henry
I'm a political scientist working on problems
at the intersection of political violence and digital communication technologies.
I use computational methods, network analysis, and digital ethnography to answer
questions about political extremism, social media platforms, community structure,
and our relationship to technology. Download my CV (PDF) here.
Current status: I'm a PhD candidate in the Department
of Political Science at Vanderbilt University. Expected completion 8/23.
Dissertation project: Three papers exploring the structural sources of
political extremism in online communities. I argue that community competition, shaped by the architecture
of platform governance, drives community radicalization. I use computational and digital ethnographic
methods (and two novel datasets) to support my argument.
Read more about my dissertation here.
Read more about my dissertation here.
Peer reviewed publications
Digital Footprints and Data-Security Risks for Political Scientists
PS: Political Science & Politics, Volume 55, Issue 4, October 2022, pp. 804 - 808
with Dr. Cassy Dorff and Dr. Anita GohdesDoes Violence Against Journalists Deter Detailed Reporting? Evidence From Mexico
Journal of Conflict Resolution, September 2022
with Dr. Cassy Dorff and Dr. Sandra LeyWorking papers
Foreign Fighters and Wartime Sexual Violence (under review)
Community Sorting Across Social Media Platforms
(working paper)
Community Competition and Political Extremism
(working paper)
Community Detection on Multimodal Platforms: #DiedSuddenly on TikTok (in progress)
with Dr. Melissa Baker and Dr. Peter Carey
with Dr. Melissa Baker and Dr. Peter Carey
Public writing
"How violence against journalists affects the news"
Political Violence at a Glance, December 2022
with Dr. Cassy Dorff and Dr. Sandra Ley


colorful - Terminal string styling done right, in Python
Almost three weeks ago I've published an initial release of colorful on PyPI and GitHub and it already got some attention by having a few stars over 200 on GitHub.
colorful is a Python package which provides an expressive and easy to use API to style strings to output in your terminal. Hence the short description Terminal string styling done right, in Python.
That's neither a new invention nor the first package in the Python ecosystem which provides similar support. Thus, not a big deal ... until you want to:
- have full 24bit true color support
- choose between other available color modes like the 8 or 256 ANSI colors
- nest styled strings
- not mess up the
len()
on your styled strings
All these features were things on my wishlist for quite some time. So I've decided to have a look at some popular packages like colorama, termcolor and blessings and see if I can come up with some patches which would contribute the above mentioned features. After some time digging into the docs and code of those projects I just couldn't fit my features and ideas into their architecture, design or set of already available features - I wanted to have a clean and human-ready API without having to deal with a legacy one.
A day or two later I did git init colorful
and started hacking on it.
In the beginning I just wanted to have some quick prototype to have a proof-of-concept for my API ideas. So I didn't even bother about termcap or terminfo at all which turned out to be not that bad of a decision. You'll read later why.
Let's have a look at some of the initial API ideas:
# Use method names to style strings, like many other support (blessings, coleur, ..)
s = colorful.bold_red('Spam and eggs')
# Use string formatting
s = f'{colorful.bold_red}Spam and eggs{colorful.reset}'
# combining and piping
s = colorful.bold & colorful.red | 'Spam and eggs'
# nesting
colorful.red('red {0} red'.format(colorful.blue('blue')))
colorful.red('red' + colorful.blue(' blue ', nested=True) + 'red')
# string length
assert len(s) == len('Spam and eggs')
# change the color mode
colorful.use_true_colors()
colorful.use_256_ansi_colors()
colorful.disable()
All these features were easier to implement than I initially thought. Most of the time I just had to implement
the correct data model protocols like __str__
, __len__
, __add__
, __or__
on my classes to make my API work.
What helped a lot were my pytest tests which I've writting in advanced during the thinking process of how one should use colorful. I recommend everyone to do the same: to think about how a user of your module or package would like to interact with it. That's key when designing an API!
Once I've had my tests passing I started writing some documentation and with that some new feature ideas came up:
- support for X11 color names
- support for custom color names assigned to custom RGB values
- support for predefined styles
With those ideas colorful gained some new features:
# use X11 rgb.txt color names
s = colorful.lightCoral_on_snow('Spam and eggs')
# define custom color palettes
colorful.update_palette({'mint': '#c5e8c8'})
s = colorful.mint('Spam and eggs')
# use predefined color styles
colorful.use_style('solarized')
s = colorful.red_on_green('Spam and eggs')
At the moment colorfuls API was already extended with helper functions like colorful.print()
or colorful.format()
and more.
I recommend you to have a look at the documentation here: https://github.com/timofurrer/colorful
"done right", doesn't that imply using terminfo?
colorful uses hardcoded ANSI escape sequences to create styled strings. In the beginning this was just meant to be used in the prototype and replaced with proper ANSI codes from the appropriate terminfo database once I'm happy with the API. However, terminfo turned out to be quite, ..., "outdated". For example a major feature I wanted to have is true colors. But terminfo doesn't support true colors - and probably it won't be implemented any time soon, as you can read here.
This wasn't the only thing I've missed:
- no support for true colors
- where is the no bold code (22) stored in the db?
- where is the reset to default fore- / background color codes (39/49) stored in the db?
- there were some more I don't remember ...
Another drawback when using terminfo would have been the dependency to curses which could be a problem on Windows and for PyPy and other Python interpreters.
Easy to solve: I just sticked to hard coded ANSI escape code sequences - any ways, these days the escape codes are the same for almost all terminals commonly used.
Why you should use colorful in your next project
Most of the reasons why you should use colorful in your next terminal project did I already mention above.
But again, here they are:
- expressive and human friendly API
- full 24bit true color support (if your terminal supports that, too)
- support 8 and 256 ANSI colors
- support X11 color names
- easily nest styled strings
- correctly support string lengths
- support custom color palettes
- support predefined styles
- actively maintained
- thorough unit test suite
Again, the documentation on GitHub has more detailed information about each of these points.
Have fun with colorful !
python |


THE DEEP END OF THE OCEAN
Reviewed by Harvey Karten, Ph.D. Columbia Pictures/Mandalay Entertainment Director: Ulu Grosbard Writer: Stephen Schiff, book by Jacquelyn Mitchard Cast: Michelle Pfeiffer, Treat Williams, Jonathan Jackson, John Kapelos, Ryan Merriman, Whoopi Goldberg
They say that blood is thicker than water and that biology is destiny. This means that no matter what friends you make and what business acquaintances you bond with, you can ultimately trust only your own family.
They also say that no one should profit from the outcomes of a criminal act. If you innocently buy a Rolex watch which is later found to have been stolen by the seller, you are required to return the watch to its rightful owner.
These homilies underscore Ulu Grosbard's "The Deep End of the Ocean," adapted by Stephen Schiff from the best- selling novel by Jacquelyn Mitchard. The story centers on a boy not quite three years of age who suddenly disappears from a hotel lobby when his mother briefly turns her back. When he is found nine years later remembering nothing about his true parents, he is taken from his adoptive father's home and placed back with his real mom and dad. If blood is thicker than water, he should quickly acclimate to the new surroundings, content to be with his natural parents. The judicial system also considers that a boy who is kidnapped by a woman, later adopted by a man who is innocent of the crime. must return him in the same manner that we he would have to give up a stolen Rolex that he may have blamelessly purchased.
Though the seventy-year-old Ulu Grosbard has worked only sporadically in the film industry, he appears a wise choice to direct a movie of this genre. Thirty years ago he helmed a film adaptation of Frank Gilroy's play "The Subject Was Roses," about a young veteran's strained relationship with his parents, though three years later he proved inept in dealing with comedy when he directed Dustin Hoffman in "Who is Harry Kellerman and Why is He Saying Those Terrible Things About Me?" "The Deep End of the Ocean," like "Roses," is about strained relationships between a twelve-year-old kid, Ben, and his parents; between Ben and his older brother Vincent; and between Ben's adoptive father and the boy's natural parents. Anguish, tensions, and hostilities fill the screen, leaving little time even for Whoopi Goldberg's comic touches in a melodrama that goes clear over the border into the realm of TV soap opera.
The title of the film comes from a quote in Jacqueline Mitchard's 1996 book, a novel which proves only that the public's taste for conventional, tear-jerking family stories is insatiable. "Are we at the deep end, Mom?" wonders little Ben, to which the mother replies, "This is the ocean, Ben. There is no deep end of the ocean." "It looks too deep," counters the kid. "Don't be afraid," Mom reassures him. "Mama would never let the ocean snatch you away."
Despite this promise made by Beth (Michelle Pfeiffer) to her child, Ben (Michael McElroy), she leaves the boy briefly in the care of his seven-year-old brother, Vincent (Cory Buck) as she straightens out hotel reservations at a high-school reunion in Chicago. The kid vanishes. Though half the Chicago police force search frantically for the lad, he does not turn up--for nine years. When the 12-year-old Ben (Ryan Merriman) does turn up in a coincidence far too improbable to believe, he is ordered to return to his natural folks against his will. Given a similar situation, wouldn't you rebel against leaving a man who has loved and sheltered you for nine years only to be put into a strange home of people you do not remember and with whom you spent only one-third of that time? The question that pervades the film is: Will the kid do the right thing and return to the man who has shown him kindness and affection for nine years? Or will he follow his genes back to his "natural" home?
The dialogue is filled with fatuous daytime-TV dialogue.  In another situation, Beth's friend declares, "I would never do a thing to hurt you." Ben's adoptive father George (John Kapelos) looks with pity on his boy's sorrowful appearance and angrily informs his real parents, "He's never had a sad day in his life....today he's the saddest boy in the world." Even the attempts at comedy by Whoopi Goldberg as police detective Candy Bliss are feeble.
Michelle Pfeiffer does what she can with a banal script to evoke sympathy from the movie audience while Treat Williams is underutilized as the demanding father. The best performances are from young Ryan Merriman as the bewildered but highly intelligent and articulate Ben, who is as good at throwing baskets on the family court as he is in expressing his feelings without even a single use of words such as "like," "you know what I'm saying," and "totally." Jonathan Jackson is fine as the typical teenager who has to deal with the sibling envy that led him to lose his brother nine years back and which even now compels him to persuade the boy to run away from home.
Though the film is superior to the hopelessly cloying "Message in a Bottle," "The Deep End of the Ocean" drowns in its own mawkishness after feeble attempts now and then to come up for air.
Rated PG-13. Running Time: 106 minutes. (C) 1999 Harvey Karten
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


New Kaya Web Site Setup
Create Admin User
First Name:
Last Name:
Email:
We'll never share your email with anyone else.
User Name:
Name used when logging in.
Password:
Please use a secure password.
Create Web Page Template
Template Name:
Content:
Create Home Page
Page Title:
Description:
Content:


This plot animates the bars bottom to top and the line series left to right upon initial page load. Since the animateReplot: true option is set, the bars and line will also animate upon calls to plot1.replot( { resetAxes: true } ).
animateReplot: true
plot1.replot( { resetAxes: true } )


Carousel custom previews demo (7 previews with height = 100px and auto width).
| Input (.html) | Value (.ts) |
|---|---|
id |
Value:
NUMERIC UNIQUE ID Unique id
|
images |
Value:
Image[] Array of
Image objects |
carouselConfig |
Value:
undefined Default full width carousel with height 400px, image cover, arrows, keyboard navigation,
but without modal gallery
|
playConfig |
Value:
undefined Both autoPlay and pauseOnHover are enabled with 5000ms of delay
|
carouselImageConfig |
Value:
undefined No description, and swipe not inverted
|
dotsConfig |
Value:
undefined It will show dots inside the current image
|
previewConfig |
Value:
{ number: 7, size: { width: 'auto', height: '100px' } } It will show 7 clickable previews (height 100px) with arrows
|
infinite |
Value:
undefined Infinite sliding is enabled by default
|
accessibilityConfig |
Value:
undefined (an object with all default english accessibility values by default)
|


Google Maps translation feature will help users navigate foreign countries
by Shereesa MoodleyGoogle Maps will now feature a translation tool to help users navigate in foreign countries.
“Simply tap the new speaker button next to the place name or address, and Google Maps will say it out loud, making your next trip that much simpler,” the company explained on its website.
The feature will allow Maps users to learn the names of new places and better communicate with locals.
“And when you want to have a deeper conversation, Google Maps will quickly link you to the Google Translate app,” Google further noted.
According to the company, Maps and Translate will work together to automatically detect the preferred language for translation.
The in-app translation feature, with support for 50 languages, will roll out on Maps for both iOS and Android this month.
Earlier this week, the app also received new public profile management tools for users.
Feature image: Google


NOTE
: You are not currently logged in. If you'd like to start your own chat room please
log in
ROOM URL
:


--- title: Image Box layout: examples base: "../" ---
fill-full
Image will always fill the container meaning not all the image will be seen at all times. Enlarging of image will occor if container is larger than image, the height and width of the image will be the same or greater than the container at all times.fill-max
Image will always fill the container meaning not all the image will be seen at all times. If image is smaller than container it will be positioned centrally.fit-full
Image will always fit inside the container meaning all the image will be seen at all times. Enlarging of image will occor if container is larger than image, either the height or width of the container and image will be the same at all times.fit-max
Image will always fit inside the container meaning all the image will be seen at all times. If image is smaller than container it will be positioned centrally.


3.1 Basic Recursion
To begin, let's
consider a simple problem that normally we might not think of
in a recursive way. Suppose we would like to compute the
factorial of a number n. The factorial of n, written n!, is the product of all numbers
from n down to 1. For example,
4! = (4)(3)(2)(1). One way to calculate this is to loop
through each number and multiply it with the product of all
preceding numbers. This is an iterative approach, which can be
defined more formally as:
n! = (n)(n -
1)(n - 2) . . . (1)
Another way to look at this problem is to
define n! as the product of
smaller factorials. To do this, we define n! as n times the factorial of n - 1. Of course, solving (n - 1)! is the same problem as n!, only a little smaller. If we then
think of (n - 1)! as n - 1 times (n - 2)!, (n - 2)! as n - 2 times (n - 3)!, and so forth until n = 1, we end up computing n!. This is a recursive approach, which can be
defined more formally as:
Figure
3.1 illustrates computing 4! using the recursive approach
just described. It also delineates the two basic phases of a
recursive process: winding and unwinding. In the winding phase, each recursive
call perpetuates the recursion by making an additional
recursive call itself. The winding phase terminates when one
of the calls reaches a terminating
condition. A terminating condition defines the
state at which a recursive function should return instead of making another recursive
call. For example, in computing the factorial of n, the terminating conditions are
n = 1 and n = 0, for which the function simply
returns 1. Every recursive function must have at least one
terminating condition; otherwise, the winding phase never
terminates. Once the winding phase is complete, the process
enters the unwinding phase, in which
previous instances of the function are revisited in reverse
order. This phase continues until the original call returns,
at which point the recursive process is complete.
Example
3.1 presents a C function, fact, that accepts a number
n and computes its factorial recursively. The
function works as follows. If n is less than
0, the function returns 0, indicating an error. If
n is or 1, the function returns 1 because 0!
and 1! are both defined as 1. These are the terminating
conditions. Otherwise, the function returns the result of
n times the factorial of n -
1. The factorial of n - 1 is computed
recursively by calling fact
again, and so forth. Notice the similarities between this
implementation and the recursive definition shown earlier.
Example 3.1.
Implementation of a Function for Computing Factorials
Recursively /*****************************************************************************
* *
* -------------------------------- fact.c -------------------------------- *
* *
*****************************************************************************/
#include "fact.h"
/*****************************************************************************
* *
* --------------------------------- fact --------------------------------- *
* *
*****************************************************************************/
int fact(int n) {
/*****************************************************************************
* *
* Compute a factorial recursively. *
* *
*****************************************************************************/
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return 1;
else
return n * fact(n - 1);
}
To understand how recursion really works, it
helps to look at the way functions are executed in C. For
this, we need to understand a little about the organization of
a C program in memory. Fundamentally,
a C program consists of four areas as it executes: a code
area, a static data area, a heap, and a stack (see Figure
3.2a). The code area contains the machine instructions
that are executed as the program runs. The static data area
contains data that persists throughout the life of the
program, such as global variables and static local variables.
The heap contains dynamically allocated storage, such as
memory allocated by malloc. The
stack
contains information about function calls. By convention, the
heap grows upward from one end of a program's memory, while
the stack grows downward from the other (but this may vary in
practice). Note that the term heap as it is used in this context
has nothing to do with the heap data structure presented in Chapter
10.
When a function is called in a C program, a
block of storage is allocated on the stack to keep track of
information associated with the call. Each call is referred to
as an activation. The block of storage placed on the stack
is called an activation record
or, alternatively, a stack
frame. An activation record consists of five regions: incoming
parameters, space for a return value, temporary storage used
in evaluating expressions, saved state information for when
the activation terminates, and outgoing parameters (see Figure
3.2b). Incoming parameters are the parameters passed into
the activation. Outgoing parameters are the parameters passed
to functions called within the activation. The outgoing
parameters of one activation record become the incoming
parameters of the next one placed on the stack. The activation
record for a function call remains on the stack until the call
terminates.
Returning to Example
3.1, consider what happens on the stack as one computes
4!. The initial call to fact
results in one activation record being placed on the stack
with an incoming parameter of n
= 4 (see Figure
3.3, step 1). Since this activation does not meet any of
the terminating conditions of the function, fact is recursively called with n set to 3. This places another
activation of fact on the
stack, but with an incoming parameter of n = 3 (see Figure
3.3, step 2). Here, n = 3
is also an outgoing parameter of the first activation since
the first activation invoked the second. The process continues
this way until n is 1, at which
point a terminating condition is encountered and fact returns 1 (see Figure
3.3, step 4).
Once the n = 1
activation terminates, the recursive expression in the n = 2 activation is evaluated as
(2)(1) = 2. Thus, the n = 2
activation terminates with a return value of 2 (see Figure
3.3, step 5). Consequently, the recursive expression in
the n = 3 activation is
evaluated as (3)(2) = 6, and the n = 3 activation returns 6 (see Figure
3.3, step 6). Finally, the recursive expression in the
n = 4 activation is evaluated
as (4)(6) = 24, and the n = 4
activation terminates with a return value of 24 (see Figure
3.3, step 7). At this point, the function has returned
from the original call, and the recursive process is
complete.
The stack is a great solution to storing
information about function calls
because its last-in, first-out behavior (see Chapter
6) is well suited to the order in which functions are
called and terminated. However, stack usage does have a few
drawbacks. Maintaining information about every function call
until it returns takes a considerable amount of space,
especially in programs with many recursive calls. In addition,
generating and destroying activation records takes time
because there is a significant amount of information that must
be saved and restored. Thus, if the overhead associated with these concerns becomes
too great, we may need to consider an iterative approach.
Fortunately, we can use a special type of recursion, called
tail recursion, to avoid these
concerns in some cases. |


Summary
Subtotal
Discounts
Shipping
Total
Pay instantly with Beem It
Please scan the QR code with your Beem It app
We will send out a receipt to your registered email soon
We did not receive your payment. Please try again


Music Selector
Randomly select a piece of classical music from The Talk Classical Community's Favorite and Most Highly Recommended Works.
Loading...
Randomly select a piece of classical music from The Talk Classical Community's Favorite and Most Highly Recommended Works.


Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing. Vanquish the impossible from which we spring extraplanetary, inconspicuous motes of rock and gas citizens of distant epochs rich in heavy atoms tesseract a mote of dust suspended in a sunbeam.
Emerged into consciousness. Not a sunrise but a galaxyrise billions upon billions globular star cluster concept of the number one take root and flourish tendrils of gossamer clouds ship of the imagination. Globular star cluster Tunguska event permanence of the stars, tingling of the spine rich in mystery, culture across the centuries Flatland rich in mystery, of brilliant syntheses Hypatia descended from astronomers of brilliant syntheses prime number a billion trillion.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing. Vanquish the impossible from which we spring extraplanetary, inconspicuous motes of rock and gas citizens of distant epochs rich in heavy atoms tesseract a mote of dust suspended in a sunbeam.
Emerged into consciousness. Not a sunrise but a galaxyrise billions upon billions globular star cluster concept of the number one take root and flourish tendrils of gossamer clouds ship of the imagination. Globular star cluster Tunguska event permanence of the stars, tingling of the spine rich in mystery, culture across the centuries Flatland rich in mystery, of brilliant syntheses Hypatia descended from astronomers of brilliant syntheses prime number a billion trillion.
This text should only be viewed by mobile devices.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.
Galaxies Drake Equation, the carbon in our apple pies. Cosmic fugue, billions upon billions two ghostly white figures in coveralls and helmets are soflty dancing.


I believe that self-description is just a perception' so it is changed a person by person, I am sharing with you what I think about me and my goals in life, but it can be different than how you or others see me. My name is Sana, married and a mother for two beautiful children. I born and raised in Sudan then moved to Dubai 8 years ago, living in a foreign country is challenging, but being with different people has influenced me into appreciating different cultures and beliefs. I am a doctor, I have MBBS in medicine and MSC in haemoglobinopathy. I believe that “Nothing is Impossible”, because I had a major milestone in my career, shifting from being a doctor to a designer, what a mind-blowing journey I decided to start at DIDI. I am very fortunate to have the courage to change my career and follow my passion in design because many people still don't understand the importance of accepting who they are or do what they are passionate about in life. Art, product and multimedia design are my passion in life. I am passionate about almost anything visually appealing, and I consider myself a "visual learner". Without a doubt; passion is the secret recipe for success, and this what I discovered about myself in DIDI university and I didn't experience in my previous carrier or universities. I am eager to succeed in my design career path, learning more about design, and mixing product design with the multimedia design will complete for me all the pieces of the puzzle I need to establish my new carrier.My biggest goal from studying multimedia is to learn about advanced technologies such as AI and AR, get the maximum knowledge about Arduino programming and generative art and this will tremendously help me with my future goal as a product designer who wants to combine technology with products. All these multimedia course expectations come with a lot of concerns such as time management of assignments as learning coding can be daunting and requires a lot of time and dedication. I am very optimistic and so excited about this course and can't wait to start this exciting and challenging journey.
Stay tuned for my future crazy creations ;)
Note: The image is for the digital artists Nguyen Thanh Nhan, and it's named "CRY ME A RIVER" somehow, I believe this digital art is portraying me and I want to use coding to create amazing digital art and portraits by the end of this course.


An open-source initiative that focuses on addressing machine learning limitations using machine learning. [ML]² is a space for machine learning enthusiasts to collaborate and find solutions for such limitations.
| Algorithm | Dataset Name | Dope (acc/r2) | Sklearn (acc/r2) |
|---|
| Feature | Descriptiom | Status |
|---|


abstract fun findKeyFactory(scheme: SignatureScheme): KeyFactory
Find the corresponding KeyFactory based on the SignatureScheme.
IllegalArgumentException - if the requested key type is not supported.
IllegalArgumentException


Code Style Guide¶
This section defines a style guide which should be followed by all code that is written in Drake. Being consistent with this style will make the code easier to read, debug, and maintain. To ensure your code is style compliant, consider using tools for complying with coding style.
See also the brief Code Review Checklist, where a list of the most frequent problems are collected.
Note: Many of the files in the repository were written before this style guide, or did not follow it precisely. If you find style errors, go ahead and change it and submit a pull request.
Table of contents
C++ Style¶
The Drake C++ style guide (which is derived from the Google C++ style guide) can be found on its own page. Its source lives in the styleguide repository.
Python Style¶
Drake strictly follows PEP 8 – Style Guide for Python Code except for the specific clarifications, exceptions, and additional rules noted below. Since PEP 8 incorporates PEP 257 – Docstring Conventions, Drake follows its recommendations as well.
Drake also follows the RobotLocomotion fork of the Google Python Style Guide. Please refer to that page for the sections that are adhered to, and the relevant exceptions.
See tools for complying with coding style for details about the automated style checks.
Clarifications¶
- External, third-party, and auto-generated source files are not to be checked for style.
- Always prefer long, human-readable variable/method/class names to short acronyms.
Exceptions¶
- Lines containing a long URL may be longer than 80 columns if necessary to avoid splitting the URL.
Additional Rules¶
When importing in-tree modules, always use absolute import paths; explicit relative import paths are disallowed. See the PEP 8 discussion of imports for more detail.
Sometimes
__init__.py
files are necessary, for Python’simport
mechanism; these files should be non-empty (via a copyright notice, for example). Rationale: 0-byte files can be mistakenly perceived as the result of some error or accident.When using the
logging
module, avoid its lazy-formatting syntax. Rationale: exceptions raised in lazy formatting get printed tostderr
, but are otherwise ignored, and thus may escape notice.Executable Python files should be limited to only scripts which are not run via Bazel-generated Python proxy scripts [1]. If a script qualifies, use the following “shebang” line:
#!/usr/bin/env python3
Rationale:
/usr/bin/env
enables aPATH
search for the Python 3 executable. This is also recommended by PEP 394.
| [1] | Generally, this means scripts that run via bazel run ,
bazel test , or ./bazel-bin/... . |
Java Style¶
We also strictly follow the Google Java Style Guide. Here are some additional comments:
- Every class and method should have a brief _javadoc_ associated with it.
- All Java classes should be in packages relative to the Drake root,
- e.g.: package drake.examples.Pendulum
LCM Style¶
- LCM types are under_scored with a leading lcmt_ added. If the type is specific to a particular robot, then it begins with lcmt_robotname_.
- Variable names in LCM types follow the rules above.
package.xml Style¶
Robot Operating System (ROS) organizes code and data
into packages. Each package is located in its own directory, which contains a
file called package.xml
. The official instructions on what this file should
contain is given here. Drake uses
this same file for defining and finding packages. Specifically, it is searched
for by
populatePackageMap().
Note that package.xml
files are necessary even if you’re not using Drake
with ROS because the model files used by Drake (e.g., URDF and SDF), frequently
refer to resources like mesh files via a package://
syntax, whose full paths
are resolved by the package.xml
files.
When adding a model to Drake
(typically in drake/examples/),
you will need to add a package.xml
file to the example’s directory to enable
modeling files like URDF and SDF to refer to resources like mesh files contained
within the example’s directory. Please ensure that your package.xml
file
contains every
required field.
The following minimal package.xml
file can get you started:
<!--
This XML file is used by:
drake/systems/plants/xmlUtil.cpp
Method:
searchDirectory()
-->
<package format="2">
<name>package_name</name>
<version>0.0.0</version>
<description>
A description of your package.
</description>
<maintainer<EMAIL_ADDRESS>Users</maintainer>
<license>BSD</license>
</package>
In the above example, replace “package_name” with the name of your package. This
is typically the name of the directory holding the package.xml
file.
Shell Script Style¶
We follow the Google Shell Style Guide.
Version numbers¶
We’ll adopt the following convention for version numbers in Drake: The version number will have the format W.X.Y.Z where
- W = major release number
- X = minor release number
- Y = development stage*
- Z = build
Development stage is one of four values:
- 0 = alpha (buggy, not for use)
- 1 = beta (mostly bug-free, needs more testing)
- 2 = release candidate (rc) (stable)
- 3 = release
Z (build) is optional. This is probably not needed but could just refer to the revision of the repository at the time of snapshot. Numbered versions should be referenced via tags.


The great wall of paper is web platform where Lazy loaded wallpapers and portraits are hosted and where
artists(street) can market their art and share their art with the world.
users can also get free wallpapers for their Desktops and laptops
any queries can be raised at our socials
Kindly note that:
we do no t owm any any of the images. It's just like our personal favourite collection,hope you lkie 'em'
Credits to the original authors/owners
As far as possible if we know the sources we will try to credit the source so every one grows.
If any of the owners from which the iamges are forwarded have any isseues kindly contacts us via our Bot and we will help you resolve them or take down the images.
Thanks and hope you enjoy the collection share with friends and family


My GitHub Consits of the following Repositories. Mostly of which Repositories are related to Web Development followed by Ethical Hacking and then App Development and Some Miscellaneous Projects.
Miscellaneous Projects and Repositories mostly contain Python Projects, Coding Challlenges, and Some Other Material.
Here are all my Projects and Repositories related to Web Development.
View AllHere are all my Projects and Repositories related to Ethical Hacking.
View AllHere are all my Projects and Repositories related to App Development.
View AllCopyright © 2020 Avinash Ranjan


2015 - Methods of Quantitative Analysis in the Social and Policy Sciences(2302-Instructor) quiz1 quiz2 quiz3 quiz4 Exam1 Practice Exam Exam2 Makeup Exam Examples(R) week9(R) week10(R) week11(R) week12(R) week13(R) week9(STATA) week10(STATA) week11(STATA) week12(STATA) week13(STATA)
2013 - Recitation for Quantitative Methods(6313) & Applied Regression(6316) week1 week2 week3 week4 week5 week6 week7 week8 week9 week10
2012 - Recitation for Quantitative Methods(6313) week1 week2 week3 week4 week5 week6 week7 week8 week9
2011 - Recitation for Quantitative Methods(6313) week1 week2 week3 week4 week5 week6 week7 week8 week9 week10


{% extends 'mainTemplate.html' %} {% load static %} {% block body %}
The TA works with the ATM and DATM to build training programs, establish training procedures, and recommend instructors and mentors.
The EC is responsible for the creation, planning, advertising, and coordination of events with neighboring facilities, virtual airlines, VATUSA, and VATSIM.
The FE is responsible for the creation of sector files, radar client files, training scenarios, written documents, and other ARTCC resources as directed by the ATM.
The WM is responsible for the operation and maintenance of ARTCC IT services such as the website, Teamspeak server, and other tasks as required.


The NExScI TAP Service¶
The primary expected audience for this document are services providers, usually those with existing relational DBMSs containing tables of astronomical data. A secondary audience would be end users of the service as we explain the details of connecting to the service and submitting queries. For example, the URL
is a complete synchronous TAP query that returns a list of all known exoplanets and their coordinates.
What is NExScI TAP?¶
Tabular data in astronomy (and other sciences) is commonly housed in relational databases. This may be final reduced data like astronomical catalogs or searchable metadata for image or spectra or anything else. Research projects very often start with database searches of these tables, often followed by the download of associated data files.
The International Virtual Astronomy Alliance (IVOA) Table Access Protocol (TAP) provides a standard interface specification for such queries. TAP defines how to compose the request using ADQL (a dialect of the standard Structured Query Language SQL), how to submit the request to a remote server (either in foreground or, for slow queries, in background), and how to retrieve results when they are ready.
The NExScI TAP service is a Python implementation of the protocol using open-source and extensible code. It is easy to install and configure and easy to extend to other DBMSs. NExScI TAP uses Python DB-API 2.0 to connect to DBMS servers. Currently connections to Oracle and SQLite3 have been tested with PostgresSQL and MySQL planned in the near future. If you have a particular DBMS you are interested in, please contact us.
Because queries against spatial regions on the sky are so common in astronomy, ADQL extends SQL with standard spatial constraint functions. In order to support these extensions, NExScI TAP includes a formalism for fast spatially-indexed searches which doesn’t require modification of the underlying DBMS.
Structure of this Documentation¶
NExScI TAP is aimed at operations of all scales, from a single table that a researcher wishes to share to the largest mission archives.
This documentation focuses initially on installation and configuration, then overviews TAP operations. There are several appendices covering the structure of the service, and delving into the details of the spatial indexing and the translation of ADQL into the local DBMS SQL.
For those who prefer to understand how things work before they start running them, most of the appendices have been written to make sense as stand-alone documents.
The NASA Exoplanet Science Institute is operated by the California Institute of Technology, under contract with the National Aeronautics and Space Administration under the Exoplanet Exploration Program.


| Time Slot | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
|---|---|---|---|---|---|---|---|
| 9.00 - 9.30 | Fitness Club Live Fit | Fitness Club Live Fit | Fitness Club Live Fit | Fitness Club Live Fit | Fitness Club Live Fit | Special Day Workshops maybe held and a weekday leave will be given instead | |
| 9.30 - 10.00 | Touchtyping & blogging | Touchtyping & blogging | Touchtyping & blogging | Touchtyping & blogging | Touchtyping & blogging | ||
| 10 - 1 | Programming Theory/ Practicals | Programming Theory/ Practicals | English - BC Elementary | English - BC Elementary | Programming Theory/ Practicals | ||
| 1 - 2 | Lunch Break - Badminton, Carom | ||||||
| 2 - 4 | Programming Theory/ Practicals | Personal Coaching | Programming Theory/ Practicals | Programming Theory/ Practicals | Personal Coaching | 14.00 - 16.00 BC Intermediate |
|
| 4 - 4.15 | Tea Break | ||||||
| 4.15 - 5 | Uki Gavel Club | Uki Fitness Club | Tech Talk | Uki Fitness Club | Uki Gavel Club |


To complete your request, check and update your profile, enter any missing information and agree the End-user Licence Agreement at the bottom of the form.
Make sure your password contains 6-20 character. Combine numbers, symbols and upper cases to increase strength
Thanks for registering to my Vmware. You're almost done.
We sent you an email with instructions for completing your registration for<EMAIL_ADDRESS>The messgae should arrive within 10 minutes. If you provided the wrong email address, please go back and register with the correct address.
If you do not receive the email:
To send the email instruction again, click below or Contact Support
Enter your password to complete activation for<EMAIL_ADDRESS>You have succesfully activated My VMware account. If you are not automatically redirected within 15 seconds, click "Continue to My VMware" to proceed.


Due to its high accuracy rate, it is suggested to use our model post-test results
Contact our immediate emergenccy helpline to get in touch with hospitals around you
Due to the COVID-19 pandemic, lesser contact is much more preffered
Anytime, Anywhere, All you need is a stable internet connection


You need to have the webLogLevel set to Info to get the additional debug messages delivered to the Log output area below.
You need to set the "webLogLevel" above to see things here!
Clear log Status: Not connected!
Restart Reset Wifi Reset Config


Start New Quotation / My Quotation
1Saba Siddiq (Change Profile)
Avl Limit : $ 0.00
Contact Us
Your Hotel Search
W.e.f 31.03.2014, Government of Dubai is applying "Tourism Dirham" a fee ranging from AED 7-20 per room per night, which the guests availing the stay will have to pay to the hotel directly as applied before check-out.
Sort Results on
- Price
- Star
- Offers/Promotions
- Showing 381 Results
Summit Hotel
Show MapProperty Location
With a stay at Summit Hotel Dubai (Deira), you’ll be minutes from Al Ghurair Centre and close to Deira City Centre. This 4-Star more details
Pay at hotel options also available$1165.86
Minimum Total Price
(Incl. Taxes)
Emirates Concorde Hotel & Apartments
Show MapProperty Location
In the heart of Dubai, Emirates Concorde Hotel & Suites is close to Dubai and Spice Souk.This 4-Star hotel is within close proximi more details
Pay at hotel options also available$1275.78
Minimum Total Price
(Incl. Taxes)
Tulip Creek Hotel Apartments
Show MapPreferred Hotel
Property Location
Wih a stay at Tulip Creek Hotel Apartments in Dubai (Deira), you’ll be minutes from Deira City Centre and close to Dubai Creek.This 4-Star more details
Pay at hotel options also available$1280.04
Minimum Total Price
(Incl. Taxes)


If this option is off, ajc is used in all cases.
If this option is on, javac is used in addition to or instead of ajc. For example, javac will be used to compile the
modules that contain no aspects. As a result, the compilation may become much faster.
See also, Optimize
compilation performance: Use ajc in combination with javac and Fine-tune
the use of ajc at a module level.


Liz is a writer of plays, films, and video games based in Seattle, WA. She holds a BA in Film Studies from Mount Holyoke College and an MFA in Dramatic Writing from Carnegie Mellon University, where she studied under Rob Handel. Her awards include 2nd place in the Alfred P. Sloan Screenplay Competition (2019), Eugene O’Neill NPC Semi-Finalist (2019), and Theater Masters’ Take Ten Finalist (2018). Her residencies include Sewanee Writers’ Conference, Hangar Theatre A.I.R.S, and Adams State University's Rare A.I.R. programs. In 2018, her play The Death of Odysseus was published by Samuel French as a part of Theater Masters’ Take Ten Vol. 4.
She currently works for Bungie, Inc as a narrative designer on the MMORPG Destiny 2. Her credits include Destiny 2: Beyond Light, Season of the Chosen, and Witch Queen. She is also a proud member of the playwrights' collective, Parley, who produced her most recent play Dreams of the Nth Empire (available for free viewing on parleyproductions.com).
Two spritely avatars of childish impulse and instinctual restraint have been tasked with making their world spic'n'span. Brat and Angel push and pull against one another in a wordless dance of dualities as a game-show clock counts down on their chore time. This show was performed as part of Parley's site-specific production APOSIOPESIS.
Driven together by their increasingly apocalyptic dreams, a trio of soothsayers band together to turn humanity from the disastrous course set by the empire in which they live. The only problem is they can’t quite figure out how to pull that off. All too aware of the sword of Damocles hovering over their heads, SIBYL, ORACLE, and PROPHET cast desperately into the past for wisdom on conjuring a new future. Meanwhile, the present –– with all the distractions of daily life –– challenges their perceptive powers, threatening to derail the whole endeavor.
1977. Voyagers 1 & 2 are bound for the stars, each carrying a golden phonograph record containing the sounds & images of Earth... just in case any intelligent life forms out there are wondering who we are. The problem is, we don't exactly know ourselves. Three Millennials attempt to answer this by recreating the project in 2018 –– a process that ultimately forces them to confront the fact that even if we aren't alone in the universe, that doesn't mean we won't be lonely anymore. A phantasmagoric play about science, communication, human imperfection & existential smallness.
What do a fast-talking thirteen-year-old, an avant-garde theatre director, a trans accountant, and a devoutly-Christian ingenue have in common? When an edgy warehouse production of Hedda Gabler draws these four radically different women into orbit with each other, they are continually forced to reevaluate themselves and their strategies of survival. How do you untangle who you are when the world refuses to stop dictating what you should be?
The stars of soap opera Nouveau Riche are thrown for a loop when the show's execs fire the whole production team in favor of a highfalutin New York director who promises to return the soap to its daytime glory. With a clandestine affair, a dire diagnosis, and a destiny-altering secret thrown into the mix, the line between reality and television gets blurrier and blurrier.
Roommates Pete and Jasper have a pretty good thing going. That is, until Jasper makes it his mission to rescue the dying bee outside of their apartment. When a conversation about video games, the ecological importance of bees, and the music of Father John Misty takes an unexpected turn, the two young men find themselves opening up to the scary and exciting possibilities of where their friendship could go.
When she left home three years ago, Rose sorta expected that everything would stay the same. Now as a college graduate with zero job prospects, she moved back to find that her sister has come out of the closet as her brother, her mother has moved in with another woman, and her distant father just so happens to be in town. Oh yeah, and her ex-best friend is back too. The only thing that hasn’t changed is Gramma Alma’s drinking, but that’s little comfort. When the tensions of this screwed-up blended family prove to be too much, Rose lets loose the very secret that drove her away in the first place, forcing everyone to reconsider where their loyalties lie.
 When her stepdad-slash-vice-principal tries to disrupt her lone-wolf habits, she gets drawn into an ethically dubious scheme by her computer-expert crush to win the science fair’s cash prize. However, as the project takes on a life of its own, this simulation of a zombie-high apocalypse winds up thrusting Lu into the most dangerous red zone of them all: the spotlight of the entire school.
Romance novelist Sam Quentin knew nothing about science until dark matter expert Dr. Trish McKay came into her life. Cut to a few years later and Sam still doesn’t know much, only that her brilliant & beautiful wife fervently wishes to understand the universe, taking on the formidable challenge of finding direct evidence of dark matter. After Trish's untimely death, Sam’s faith in any order to the universe, along with the rest of her life, is completely obliterated. But with the help of her mother-in-law Patricia and a persistent hallucination appearing in the form of famous astronomer Vera Rubin, Sam dives into the heart of her late wife’s work while finding her way through the darkest parts of her grief.


Most dependencies from Ganeti quick installation guide, including qemu-img (marked there as optional) plus (for Python):
For older developement (Ganeti < 2.4) docbook was used instead of pandoc.
Note that for pylint, at the current moment the following versions must be used:
$ pylint --version
pylint 0.26.0,
astng 0.24.1, common 0.58.3
The same with pep8, other versions may give you errors:
$ pep8 --version
1.3.3
Both these versions are the ones shipped with Ubuntu 13.04.
To generate unittest coverage reports (make coverage), coverage needs to be installed.
Installation of all dependencies listed here:
$ apt-get install python-setuptools automake git fakeroot
$ apt-get install pandoc python-epydoc graphviz python-sphinx
$ apt-get install python-yaml
$ cd / && easy_install \
logilab-astng==0.24.1 \
logilab-common==0.58.3 \
pylint==0.26.0 \
pep8==1.3.3 \
mock==1.0.1 \
coverage
For Haskell development, again all things from the quick install document, plus:
Under Debian Wheezy or later, these can be installed (on top of the required ones from the quick install document) via:
$ apt-get install libghc-quickcheck2-dev libghc-hunit-dev \
libghc-test-framework-dev \
libghc-test-framework-quickcheck2-dev \
libghc-test-framework-hunit-dev \
libghc-temporary-dev shelltestrunner \
hscolour hlint
Or alternatively via cabal:
$ cabal install QuickCheck HUnit \
test-framework test-framework-quickcheck2 test-framework-hunit \
temporary hscolour hlint shelltestrunner
Run the following command (only use PYTHON=... if you need to use a different python version):
$ ./autogen.sh && \
./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var
Note that doing development on a machine which already has Ganeti installed is problematic, as PYTHONPATH behaviour can be confusing (see Issue 170 for a bit of history/details; in general it works if the installed and developed versions are very similar, and/or if PYTHONPATH is customised correctly). As such, in general it’s recommended to use a “clean” machine for ganeti development.
Please adhere to the Code style guide while writing code for Ganeti.
There are a few things which can help writing or debugging the Haskell code.
You can run the Haskell linter hlint via:
$ make hlint
This is not enabled by default (as the htools component is optional). The above command will generate both output on the terminal and, if any warnings are found, also an HTML report at doc/hs-lint.html.
When writing or debugging TemplateHaskell code, it’s useful to see what the splices are converted to. This can be done via:
$ make HEXTRA="-ddump-splices"
Or, more interactively:
$ ghci
λ> :set -ddump-splices
λ> :l src/Ganeti/Objects.hs
And you will get the spliced code as the module is loaded.
To build profiling code you must install the ghc-prof (or gch6-prof) package, and all the relevant libraries with their -prof counterparts. If installing libraries through cabal the config file should include library-profiling: True or the -p flag should be used. Any library already installed can be updated by passing --reinstall as well.
Due to the way TemplateHaskell works, it’s not straightforward to build profiling code. The recommended way is to run make hs-prof, or alternatively the manual sequence is:
$ make clean
$ make src/htools HEXTRA="-osuf .o"
$ rm src/htools
$ make src/htools HEXTRA="-osuf .prof_o -prof -auto-all"
This will build the binary twice, per the TemplateHaskell documentation, the second one with profiling enabled.
The binary files generated by compilation and the profiling/coverage files can “break” tab-completion in the sources; they can be ignored, for example, in bash via .bashrc:
FIGNORE='.o:.hi:.prof_o:.tix'
or in emacs via completion-ignored-extensions (run M-x customize-var completion-ignored-extensions).
When developing code, running the entire test suite can be slow. Running individual tests is possible. There are different Makefile targets for running individual Python and Haskell tests.
For Python tests:
$ export PYTHONPATH=$PWD
$ python ./test/py/ganeti.mytest
For Haskell tests:
$ make hs-test-pattern
Where pattern can be a simple test pattern (e.g. comma, matching any test whose name contains comma), a test pattern denoting a group (ending with a slash, e.g. Utils/), or more complex glob pattern. For more details, search for glob patterns in the documentation of test-framework).
For individual Haskell shelltests:
$ make hs-shell-name
which runs the test test/hs/shelltests/htools-%name%.test. For example, to run the test test/hs/shelltests/htools-balancing.test, use:
$ make hs-shell-balancing
For combined Haskell shelltests:
$ make hs-shell-{name1,name2,...}
for example:
$ make hs-shell-{balancing,basic}
Checking for the correct style of the NEWS file is also possible, by running:
$ make check-news
Ganeti is mostly developed and tested on Debian-based distributions, while still keeping adaptability to other Linux distributions in mind.
The doc/examples/ directory contains a number of potentially useful scripts and configuration files. Some of them might need adjustment before use.
This script, in the source code as daemons/daemon-util.in, is used to start/stop Ganeti and do a few other things related to system daemons. It is recommended to use daemon-util also from the system’s init scripts. That way the code starting and stopping daemons is shared and future changes have to be made in only one place.
daemon-util reads extra arguments from variables (*_ARGS) in /etc/default/ganeti. When modifying daemon-util, keep in mind to not remove support for the EXTRA_*_ARGS variables for starting daemons. Some parts of Ganeti use them to pass additional arguments when starting a daemon.
The reload_ssh_keys function can be adjusted to use another command for reloading the OpenSSH daemon’s host keys.


Lightning Payments
Transcript By: Bryan Bishop
Tags: Lightning
Category: Conference
Lightning payments (and more) on the web
Will O’Beirne
Video: https://youtu.be/wd-dNd2Wck4
CL: Thank you Elizabeth and Stacy for that great talk. Who runs a lightning node here? So a lot of you. Are you guys excited about lightning? Great, we have like four more talks on lightning. Next we have Will O’Beirne who will be talking about lightning payments on the web. Big round of applause.
Introduction
Hey y’all. We’re doing a DIY setup here. Just bare with me. Alright. It was great to hear from Elizabeth Stark. Today I am going to be covering a less technical more user experience thing, actually using lightning on the web for payments and a few other things. I’m going to talk about bitcoin payments and where we are going next.
Background
I work on a browser extension called Joule. It plugs into the browser and makes the lightning experience on the web better. Before that, we have to talk about bitcoin payments.
Bitcoin payments on the web
Bitcoin was envisioned as a p2p cash system but there’s some problems. You need to send an address, but it might be the wrong address, and you might send the same payment twice. Depending on who you sent it to, they might not want to fix your problem. You also have to deal with long confirmation times, and there’s explicit expirations on those payments. If you set a low fee or the mempool is too bloated, then the transaction might not go through. There are also high fees making small-mid size purchases infeasible. So this means small prices aren’t a good use case for bitcoin payments. Also, you either need a new address with new UTXOs for every address, or you had to set the same address, which degrades privacy.
Lightning webapps
Thankfully lightning improves a lot of these problems. What do lightning payments on the web look like? Payments are done through invoices. The server provides an invoice and the user pays to that specific invoice. They have a set amount, an expiration date for the payment, and where it’s going, and it only works once. You will always send to the right person within the right time limit and never spend twice. Once the payment goes through, it goes through instantly, right away.
Unfortunately lightning payments do come with problems, like sometimes you can have routing issues where you can’t find a route to your server and the server won' tknow that you are experiencing that problem. They have no idea what’s going on, it’s totally opaque. So you would have to switch to another mobile app if that’s the case. It’s still high friction.
High friction
High friction is bad. When you have to stop a user, it’s bad UX. Users might bounce from lightning micropayments on a website. Bulk-purfchasing tokens or long-term subscriptions are also bad. You want to pay only for the content you want. This is a good practice.
Custodial nodes
Another trend in lightning is custodial nodes. The payment process is annoying, and you deposit to a central node. So you make one payment upfront, then they control that database and when you want to withdraw the money, you give it an invoice and then they do the payout. None of this is on the network which is fine, but you’re locking up your liquidity on these sites for every site you have deposits at. So this is problematic. Also, it doesn’t take advantage of the network effects of the lightning network. It’s still a hub-and-spoke model of paying central services.
Purchase permanence
There’s this variable purchase permanence…. say you need to have a login like a username and password to login to some service. But many purchases are so small that they are just tied to the device. Here’s something about yalls.org and you bought an article on the desktop. It’s a small payment, it’s not that frustrating, but there’s these things we have paid for but can’t get access to again. Sometimes these payments are ephemeral and small and so meaningless that once you close the tab maybe you don’t care anymore.
Summary
There’s a lot of improvements over bitcoin payments, but compared to paypal, a lot of the problems are still there. There’s a lot of friction in these. Payments between users are still managed centrally, and micropayments are still not viable user experiences. Also, you still need traditional authorizaiton on websites.
So we have ended up with something better than bitcoin payments. But it’s hard to see why you would use this over paypal or something.
WebLN
I am working on WebLN to make this better. It’s a standard for providing permissioned access to community web applications and your lightning node. The idea is that the user client injects an API into javascript, and the website can ask for user permission to do more direct payments. We’re improving the user expeirence and getting rid of the friction, but we’re still preserving privacy because the user still has to give permission. It’s not a direct connection to your node, it runs through your browser which keeps some privacy in-tact.
In-app interactions
API interface allows for node interactions entirely in-app. It’s a much more instantaneous experience. No alt-tabbing or copy-paste. If something goes wrong with your payment, then the application– like a routin failure or someone has a low balance or something or some connectivity issue– the application can assist in fixing what’s going on. And you have just lowered the friction of these payments, so it’s not so bad.
p2p
There’s also enabling the p2p use case. There’s a lot of ways to facilitate p2p payments. We automate invoice generation, we just pass the invoices to the server, and we just facilitate payments between users. It’s either in your node or in the node of the person you’re paying. This is a much more decentralized attitude and leverages the network we’re building.
Identity and proofs
You can use your node identity to establish who you are in the network. The user can opt-in to provide their LN node identity and then prove that identity with signatures. You can also provide old payment preimages as proofs to recover past purchases. They don’t have to recognize who you are, only that a previous payment was valid. You could have users authenticate with a node, instead of paying for that website or some pseudo-unique identity like email/password then you can just check are they a good member on the network because they already have an identity for their LN node. Or maybe you give them a discount because they are helping out on LN liquidity.
Confirm-free experience for payments
In previous UX, there’s a popup to confirm. But this here, the idea is to not ask the user if the amount is below the threshold. The app could potentially request information before a high usage activity. But otherwise, it pays automatically. So the user can setup the allownace beforehand. This gives us a true micropayment experience that wasn’t previously possible becaus ethe user experience was so bad.
Programmability
Nodes have APIs and they are on 24/7. We can use that power to have the node talk to the server and not have a user involved. I launched Tippa yesterday. You upload some authorization to your node, and then whenever someone wants to make a tip, the server doesn’t hold on to it for you. It’s similar to cookies, it’s a fancy cookie really. I can give permissioned access, like you can only generate invoices and not identify who I am. So there’s a lot of endless possibilities using this.
Client and node agnostic
All of these features are client and node agnostic. The user client now comes with this stuff. It is tailored for better experiences. There’s the Joule extension and the BlueWallet phone application. This stack can be used with any LN node, I’m currently using lnd but that’s not a requirement. Also, more people are building on top of this today.
Hopefully we end up with happy users who are having good experiences on the web and they will make a lot of payments on the web.


1 Furthermore, the natives said that this lake drains underground into the Libyan Syrtis, and extends under the mountains that are above Memphis, having the inland country on its west.
2 When I could not see anywhere the earth taken from the digging of this lake, since this was curious to me, I asked those who live nearest the lake where the stuff was that had been dug out. They told me where it had been carried, and I readily believed them, for I had heard of a similar thing happening in the Assyrian city of Ninus.
3 Sardanapallus king of Ninus had great wealth, which he kept in an underground treasury. Some thieves plotted to carry it off; they surveyed their course and dug an underground way from their own house to the palace, carrying the earth taken out of the passage dug by night to the Tigris, which runs past Ninus, until at last they accomplished their end.
4 This, I was told, had happened when the Egyptian lake was dug, except that the work went on not by night but by day. The Egyptians bore the earth dug out by them to the Nile, to be caught and scattered (as was to be expected) by the river. Thus is this lake said to have been dug.


Installation¶
Installing OpenSMOG¶
The OpenSMOG library can be installed via conda or pip, or compiled from source (GitHub).
Install via conda¶
The code below will install OpenSMOG from conda-forge.
conda install -c conda-forge OpenSMOG
Install via pip¶
The code below will install OpenSMOG from PyPI.
pip install OpenSMOG
Install OpenMM¶
The OpenSMOG library uses OpenMM API to run the molecular dynamics simulations. These requirements can be met by installing the following packages from the conda-forge channel:
conda install -c conda-forge openmm
The following are libraries required for installing OpenSMOG:
Python (>=3.6)
NumPy (>=1.14)
ElementTree XML (>=2.2.0)
Installing SMOG2¶
The inputs OpenSMOG simulations are generated using SMOG2 > 2.4. Here, there is a quick installation guide based on conda (Linux and Windows-WSL only).
First, just create a new environment and activate it:
conda create --name smog2.4 perl
conda activate smog2.4
Next, it is necessary an installation of a few Perl modules:
conda install -c bioconda perl-xml-simple perl-xml-libxml java-jdk
conda install -c eumetsat perl-pdl
perl -MCPAN -e 'install XML::Validator::Schema'
Add the Perl and smog2 path into the configure.smog2 file.
Hint
Use the following command line to find out which installed Perl is being used.
which perl
Then load and test the smog2 installation:
source configure.smog2
./test-config


Stop me if you've heard this one...
- "I didn't change anything. [2 hours later] Well, yeah, I changed that."
- "It works on my machine."
- "We just hired somebody new."
- "Here's your new laptop. Spend a day or two setting it up like your old one.
- "We need to rebuild that server."
- "We're doing a deployment. On Friday. At 5pm."
Agents of Entropy
- Cowboys
- "Fuck it. We'll do it live."
- Laziness
- Expediency
- Broken windows
- Heisenberg
- Endless, time eating bullshit, tracking down changes, differences, etc.
- Michael Denny
Sleepless Nights
- Ask for a complete list of the differences between your dev and production environments.
- How do you know you found them all?
- How will you know when that list changes?
DevOps - Origins (2006)
- Cheap, utility computing (AWS) +
- Short time to market (Rails) +
- Web scale (ZOMG! We went viral!) =
- Big scaling issues for small teams with no budget
-
And for everybody else:
DevOps for Webslingers
- Division between infrastructure and application now blurred or artificial
- Same is true of the division between developers and system administrators
- If you own a computer, you're a sysadmin. Everything else is a matter of scale.
- If you maintain vhosts in Apache, or DNS entries, you're a dev.
- Developers share operational responsibilities.
- Sysadmins can think strategically.
- Cooperation. Kumbaya.
- This is not new for most webdevs. Now it has a name.
Infrastructure as Code
- We have tools to design, build, deploy, and maintain complex software.
- Every piece of software is unique, but we use standard patterns and tools to make it.
- We can use those same tools to build IT infrastructure the way we build software.
- We can model, build, deploy, and manage infrastructure using mature tools.
- A lot of our infrastructure is code these days anyway. Might as well use coding tools.
Benefits
- Repeatability – Known inputs, known outputs
- Automation – Software deployment tools
- Agility – Change, forward or back, is cheap
- Scalability – Repeatability + Automation
- Reassurance – live documentation
- Disaster recovery – bare metal + code
- Auditing – what changed, when, by whom?
Benfits (con't)
- Tiny cycle time – wide change is as cheap as narrow change
- Testable – code can be tested automatically
- Verifiable – current state can be queried
- Higher quality – continuous improvement, not continuous troubleshooting
- Predictable – testable + verifiable
- Lower stress – we've done this 100 times
Principles
- Modularity – break it down; eliminate overlap
- Cooperation – encourage reuse instead
- Composability – Lego
- Extensibility – easier to enhance small stuff
- Flexibility – small scope + unlimited power
Principles (con't)
- Repeatability – known inputs, known outputs
- Declaration – what, not how
- Abstraction – function, not implementation
- Idempotence – run many times; change once
- Convergence – services come into line with policy; system tends to correctness
Chef = Infrastructure as Code
- Configuration server (Chef Server)
- Infrastructure parts are clients (Chef Client)
- Workflow:
- Write configuration code locally
- Push configuration code to the Chef server
- Node phones home; configuration updated from server
- Lather, rinse, repeat
Why Chef?
- Modern. CFEngine, I'm looking at you.
- Cross-platform
- Free & Open Source, with support for hire
- Very popular; big community; getting bigger
- Under active development
- I don't have to say "Puppet" in meetings.
- All Ruby, all the time
Parts of Chef
- Chef Server
- Knife (CLI client)
- WebUI
- Nodes and Chef Client
- Recipes
- Cookbooks
- Roles and Environments
- Users and Organizations
Nodes and Clients
- Nodes are the systems you are managing with Chef.
- Nodes are typically servers.
- Nodes are why we want to use Chef.
- Clients are things which connect to the Chef server, using the Chef API.
- Clients include nodes configured through Chef, as well as workstations which are used to manage Chef.
Recipes
- Recipes are the files where you write and store chunks of configuration.
- Recipes get applied to nodes.
- This is were the awesome lives.
- The configuration is code.
- The code can be version controlled.
- All the tools we use to manage code can be used to manage configuration.
Recipes as Policy
- A recipe is really a "policy".
- Applying a recipe to a node brings the node into compliance with policy as defined in the recipe.
- Recipes only do stuff if stuff needs to be done.
- Recipes can be applied as often as you'd like, without damaging the node.
- When in doubt, apply your recipe(s). Your node(s) will now be in a known state.
Cookbooks
- Cookbooks are exactly what they sound like: collections of recipes.
-
They can also contain supporting files, such as:
- files containing attributes
- configuration file templates
- files to be uploaded as-is
- The MySQL cookbook for example, contains recipes for both client and server, plus an attributes file to set sane defaults.
Cookbooks are Sharable
Roles
- Roles are collections of configuration applied to nodes with something in common.
- The role "high_school_file_server" would keep configuration in sync across all its members.
- Nodes can have more than one role, and roles can stack or nest together.
- We might have a node with the roles "base", "ubuntu", "webserver", "php", "wordpress", "my_site".
Environments
- Environments are the other way we group things.
- These "things" are mostly specific values within the configuration of a node, such as a cookbook version number.
- Environments typically include "production", "staging", "development", and "testing".
Roles vs. Environments Example
- Two nodes in the same role, but different environments, might be running two different versions of the same cookbook.
- One node, in the "production" environment, runs a stable version of the "my-application" cookbook.
- The other node, in the "development" environment, runs an untested version.
- Everything else is the same, so there are no surprises when we move from dev to prod.
Users
- Users are what you think they are: humans who connect to Chef.
- Like clients, they have keys that they can use to connect to Chef programmatically.
- Users also have passwords that they can use to log in to the various web pages that the Chef server exposes.
Organizations
- Users can be associated with organizations.
- Your organization may represent your entire company, or the department you work in, or any other grouped set of infrastructure you plan on managing.
- Membership gives you certain rights to interact with and manage your organization.
- Users can be associated with more than one organization.
The Big Picture
<Thank You!>


Be honest. What is it that you expect from a romantic book?
Is it tragedy? Like Romeo and Juliet? Or do you prefer a tale of heartbreak like Scarlet O'Hara's in Gone with the wind? Perhaps you crave for a clashing of two strong willed, fiercely independent souls like Jane Eyre and Edward Fairfax Rochester?
Is Romance for you drama, tension and desperate optimism of tragic heroes and heroines? Do you like the feeling of drowning melancholy when it is clear that the time has come to say good by and good luck? Would you rate a book depending upon the number of pages that were soiled by your overflowing tears?
Annoying voice in the background:"Stop blabbering!"
Excuse me. But sometimes all this drama drains away my life force. I feel a bit restless and acutely aware of that churning feeling in the belly that telegraphs to my senses it's unfulfilled desire to digest food since 6 in the morning.
I mean to say it's quite sad that Scarlet and Rhett could never live happily ever after but one has to move on in life. It's also quite tragic that Edward had to to almost go blind before he could come to his senses and accept the fact that Jane was the chosen one for him. But we must admit that we're all powerless in the hands of fate.
Do tell though, are all romantic stories supposed to be sad and droopy? Could there not be a tale of love that is uplifting,optimistic and full of life?
 Ah, I was saying why can't there be love stories with laughter and joy instead of thunder and lightning.
"You know how it is with some girls. They seem to take the stuffing right out of you. I mean to say, there is something about their personality that paralyses the vocal cords and reduces the contents of the brain to cauliflower."
That question has kept me awake on many a nights pacing up and down in my balcony. Wasn't there a saying, by Freud or someone equally brainy, about a fellow being able to see the stars when it gets pitch dark?
Any way what I mean to say that during one of these torturous, sleepless nights I stumbled upon the work of PG Wodehouse. I hadn't heard of the fellow before. And to be honest his name didn't make much of an impression on me. It wasn't very writer-ly if you know what I mean?
Annoying voice in the background: "I don't"
Well consider the name Shakespeare. You come across his book and you immediately say to yourself "There that's a writer I've heard about! All of my friends have read his books. My teachers had his books on their shelves. Any book by him must be good"
But when you gaze upon one of Wodehouse's books you are at a loss to make any sense out of it
And it does not help when you've got quotations like these littered across the internet.
" I remember when I was a kid at school having to learn a poem of sorts about a fellow named Pig-something--a sculptor he would have been, no doubt--who made a statue of a girl, and what should happen one morning but that the bally thing suddenly came to life. A pretty nasty shock for the chap, of course."
It's no use feeling bad about it. On the surface the books of PG wodehouse seem to be nonsensical. But if you're willing to dive in a little deeper, if you can look past all the absurdity, you'll discover in PG Wodehouse one of the greatest Romantic writers of our times. Granted that his words don't evoke that sense of quiet suffering as Charlotte Bronte's and maybe his plot wasn't as dramatic as Shakespeare's but he was the best at creating this warm glowing feeling that left you happy at the end of each chapter.
"I felt like one of those chappies in the novels who calls off the fight with his wife in the last chapter and decides to forget and forgive."
PG Wodehouse had his own style of course. Don't go in expecting poetic declarations of love and rosy descriptions of beloveds. Often you'd have an eligible bachelor running away from female interest. This is especially true in Jeeves and Wooster stories where Bertie does not take kindly to his aunts' insistence to set him up with a partner. Of course the situation isn't helped in anyway by Jeeves who outright refuses to to work for a married couple being, as he called himself, a bachelor's butler.
"Honoria, you see, is one of those robust, dynamic girls with the muscles of a welterweight and a laugh like a squadron of cavalry charging over a tin bridge. A beastly thing to face over the breakfast table. Brainy, moreover."
This difference of opinion between the characters form the crux of plot in Wodehouse's stories. The situation would be something like a fellow going into a restaurant, ordering a cheese sandwich and expecting a nice conventional breakfast that he'd like to have peacefully, but is served banana peel salad instead because the chef thinks that he'd be pleasantly surprised by the Sunday morning special delicacy.
There might be some folks who enjoy these kind of things but in Wodehouse's stories such behaviour is not looked upon with affection and gratitude despite the polite reassurances offered.
"Contenting myself, accordingly, with a gesture of loving sympathy, I left the room. Whether she did or did not throw a handsomely bound volume of the Works of Alfred, Lord Tennyson, at me, I am not in a position to say. I had seen it lying on the table beside her, and as I closed the door I remember receiving the impression that some blunt instrument had crashed against the woodwork, but I was feeling too pre-occupied to note and observe."
Tiffs between sweethearts were handled with delicacy. Even though the love was not reciprocated at all times, there was never all that sobbing and breaking of perfectly good wine glasses that causes one to break a cold sweat just at the thought of approaching a temperamental romantic interest.
"Jeeves, I'm engaged." "I hope you will be very happy, sir."  I'm engaged to Miss Bassett."
If you're tired of all those heavy, brooding love stories that leave you with a sinking feeling, once they end, give PG Wodehouse a try. Romance can be funny.
-Akshat Jiwan Sharma