more researchhttps://untappd.akamaized.net/photos/2019_03_16/ae7cd807e1b9edeb5fa2afa505663c9f_raw.jpg #westcoastANN https://untappd.akamaized.net/photos/2019_03_16/f3a18b88d0311d6e597abda33bc87ec1_raw.jpg and some degrade for good measure https://untappd.akamaized.net/photos/2019_03_16/44dd750e9eb034eda2a31c8abb6da86b_raw.jpg this is the funkiest beer i’ve had in some time! the purple kriek conclusion: i think my target will like some sante beers
got caught on a call. finally here's the hardcore pr0n ripps1 hittin' me hard the little'uns (and casey glass) highland park black project springdale (ooh passionfruit, loved the couple of other passionfruit things I've had) https://i.imgur.com/4W4JOSB.jpg the bigunns une anne brewery (I really like flanders/oude bruin) the commons casey https://i.imgur.com/9XKfw0S.jpg and... more casey (holy shit, preserves) upright (whaaaaaaaaaaaaaaaa) HF (double-whaaaaaaaaaaaaaaaaaaa) https://i.imgur.com/rbXl21x.jpg doggamn. this is amazing. new ticks. so excited, chilling couple the smaller guys now. thank you!
First some mood music: [youtube] https://www.youtube.com/embed/ZyJzylk8d_M Second some prerequisite LO crushers: https://www.talkbeer.com/community/attachments/img_20190403_170251__01-jpg.6140/ Somehow still cold enough to crack a Pilz while I unwrap the rest. Third a few of the Hill Country's finest: https://www.talkbeer.com/community/attachments/img_20190403_170417__01-jpg.6141/ White grapes and spent fruit funk? Yes pls. Fourth we have some of the Northeast's best: https://www.talkbeer.com/community/attachments/img_20190403_170544-jpg.6142/ CD19? Fifth but certainly not least...nectar of the Pajottenland: https://www.talkbeer.com/community/attachments/img_20190403_170632__01-jpg.6143/ Uh...what?!? Wow Sean. Amazing box. Popped my Loon cherry too (in BiFs). Thanks brother!  One of the best collection of favorite breweries, styles and long time wants. I’m looking at you gin aged stone fruit fantasy. Upright Anniversary De Garde Nectarine Cuvée Upright Sole Composition BFNA 2018 [imgur iframe pic] https://s9e.github.io/iframe/imgur.min.html#BNLEfli The Botanique Hommage Special Herbs [imgur iframe pic] https://s9e.github.io/iframe/imgur.min.html#wwtNqLL The Boysenberry The Kriekenblossem The Peach [imgur iframe pic] https://s9e.github.io/iframe/imgur.min.html#TGiDLIe Trio of Turbulent Consequence Cassis, Huckleberry and Pearl!? [imgur iframe pic] https://s9e.github.io/iframe/imgur.min.html#bEEftSF Thank you magnificent bastards
Since I'm sure its obvious at this point, here are my final hints since im shipping out early next week: Spoiler https://www.gannett-cdn.com/-mm-/7e44fc10b5cd429bc7b6dd726e5bdd97b549c836/c=0-118-1200-796/local/-/media/2018/07/13/USATODAY/USATODAY/636670681425161437-USAT-Jan-17-30.jpg?width=580&height=326&fit=crop https://www.thepublicdiscourse.com/wp-content/uploads/2017/03/Bellevue_Hospital_front_gate_jeh.jpg https://6d4be195623157e28848-7697ece4918e0a73861de0eb37d08968.ssl.cf1.rackcdn.com/1527_200w.jpg https://d3njjcbhbojbot.cloudfront.net/api/utilities/v1/imageproxy/https://coursera-university-assets.s3.amazonaws.com/b4/339da416653830d015f5a179f864e1/square_logo_large.png?auto=format%2Ccompress&dpr=1&w=180&h=180 https://bloximages.chicago2.vip.townnews.com/hometownsource.com/content/tncms/assets/v3/editorial/0/25/025049b0-2b4d-11e9-beef-0b32e8743727/5c5cefa8449a2.image.jpg https://media0.giphy.com/media/1JYu3qbhYAiis/giphy.gif?cid=790b76115caf4c7c3133492f598e6055 https://media0.giphy.com/media/39BdZTuSxb1PtfF4vf/giphy.gif?cid=790b76115cb07c8e494f38622eb8c626 https://media1.giphy.com/media/9QmldqOBxeBZC/giphy.gif?cid=790b76115cb07ca8626d50523207095e
Last hints https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSkZNqAUaDo0QqSjmbTVnHWk1wPTgcPz8B5zROGdEap2Z6X9CvgZg https://www.talkbeer.com/community/attachments/upload_2019-4-12_9-6-9-jpeg.6475/ https://www.talkbeer.com/community/attachments/upload_2019-4-12_9-18-34-jpeg.6477/ Shipping Monday
Come home from traveling and a huge box from NeedsMoreDog sitting there waiting for me!! First off Boon Vats!! Always love these especially 110! https://i.imgur.com/zyoRk9v.jpg Next up Tombstone Snozzberry Berliner (sounds amazing!!) JK Snorkel which I haven't had in years!, RB Home Sour Home which is a RB I've always loved!, Fantome Sorachi (new Fantome tick!) and The Referend Bier Blendery Cascando (new brewery tick!). https://i.imgur.com/inn0abu.jpg Finally some Arizona gems!! https://i.imgur.com/COLqZes.jpg Arizona Wilderness Strawberry Crater (sounds amazing!), Tombstone Fruits of Passion (have only had one IPA from these guys!), AZ Wilderness Sonoran Prince (peach and oak ) Tombstone Funky Bunch Blackcurrant oak brett saison! love anything blackcurrants!! and finally Az Wilderness Camp Coolship Kachina Peaks oak aged collab between about 20 of the best breweries in the nation!! Thank you so much NeedsMoreDog can't wait to dive into these! Already have them in the fridge!
Goddamn averagjoe3 this may be the best box I've ever gotten and absolutely packed with beer https://i.imgur.com/TZoHdUDl.jpg First off some tasty ASS cherries and apricots and some new to me Trillium sours https://i.imgur.com/VEgxlncl.jpg I'm looking forward to ticking bad boys these again. Love that Allagash funk https://i.imgur.com/6dzGv6Cl.jpg The gangs all here, I love all of these beers and they're all in the fridge. Maybe I'll cuvee tomorrow.    In my best Brad Pitt voice. https://i.imgur.com/HT1aKX1.jpg First up, some delicious-looking Perennial beers I’ve never tried. Campers Reserve which is a funky, hoppy version of Hommel Bier, and La Boheme B2, a Flanders with cherries aged in wine barrels. Excited for both and a big fan of Perennial from what I’ve had. https://i.imgur.com/hJnIQkY.jpg Next, these sexy bois. I’ve never had 2nd Shift (I don’t think?) but they sound awesome! A bunch of tasty sours and funky beats and an extra can of BA maple stout, definitely my favorite adjunct in a dark beer. Super excited for these! https://i.imgur.com/92EZL21.jpg Lastly, the headshot from Side Project. This brewery makes incredible beer. I haven’t had most of these, but I do have the weirdest boner right now. Burke sounds amazing, and I loooove ciders too. https://i.imgur.com/Wc9d3c1.jpg Hot damn this is some Missouri heat! This is an amazing box, thank you Chris! I am super, super excited about all these. Best BIF is best.
https://www.talkbeer.com/community/attachments/oiumjuckrtyhjcwezjyaig-jpg.6755/ Blurry Picture is Blurry... 61 Kilometers, Never heard of this beer but its description sounds delicious Oude Geuze and A&G Cuvee are always welcome here and a nice Vienna Lager for me tomorrow after I cut the grass for the first time this year. https://www.talkbeer.com/community/attachments/8ze9nzypt3g400pqml-1aa-jpg.6756/ Si Se Pude Muscat Premiere Fantome in Flowers - Actually my first Fantome. Sanity in Wits https://www.talkbeer.com/community/attachments/nxwrclimr0s5fmgerrchgq-jpg.6757/ A visit in July- Pinot Noir Tilquin Westly- West Ashley was one of my first sours years ago and it blew me away. Excited for this one Our Congregation https://www.talkbeer.com/community/attachments/hh1gdrnctfqaxbpu-qsogq-jpg.6758/ And on top of this stellar box- cornboy threw in some records for me to spin tonight. Some Wilson Pickett and ZZ Hill. Hell of box cornboy
https://www.talkbeer.com/community/attachments/b3ccc09c-e092-404a-82c5-24813b0b10a9-jpeg.6760/ https://www.talkbeer.com/community/attachments/ecf77d23-dfef-4c39-b1ef-cd0c47d87f77-jpeg.6761/ Totally missed these. Thanks a ton cornboy
Awesome box from RuckIt https://www.talkbeer.com/community/attachments/15560645348366998339355625705705-jpg.6964/ https://www.talkbeer.com/community/attachments/1556064600301576897199639323505-jpg.6965/ https://www.talkbeer.com/community/attachments/15560646781053059217363587534472-jpg.6966/ Just an awesome box, always wanted to try hommage and finally get to. And super excited for the cherry apple cider! That soignee sounds incredible. Thanks man.


Frozen 2 enchants parents and kids
by Anselmo JasonThe release of Disney’s Frozen 2 has reignited the hysteria over the franchise among Indonesian parents and their children. Frozen 2 premiered in Indonesia on Nov. 20 to no insignificant amount of hype, considering the first film’s impact on children everywhere around the world. In 2014, not a year after Frozen was first released, there was a wave of collective obsession toward the film that swept throughout the world. During that period of time, children could often be heard singing musical numbers from the film, most notably “Do You Want to Build a Snowman?” and “Let It Go”. The songs were heard virtually everywhere, from television to radio to school activities. Whether sung by Idina Menzel at live performances or sung in the bathroom, there was no escaping the songs of Frozen. But it wasn't just the songs. Children also took to d...
LOG IN
Don't have an account? Register here
Forgot Password ?
Log in with your social account


Your doctor will want to know about your past reactions to penicillin and may examine you to identify or exclude other medical problems. Unless you require penicillin — either because it's the only effective antibiotic for a life-threatening condition or because you're allergic to other antibiotics and have few treatment options — your doctor may prescribe another antibiotic.
Your doctor may recommend you be tested for penicillin allergy if:
Because of the risk of anaphylaxis, testing for penicillin allergy should only be done by an allergist in a hospital or doctor's office.
Skin test
This test, which can determine your sensitivity to the drug, involves the following:
If the skin tests to penicillin are negative, your doctor may recommend penicillin or a related antibiotic. If the skin test to penicillin is positive, most likely your doctor will recommend that you continue to avoid penicillin and related antibiotics.


posted by BGB, June 15, 2013
Our chef has been busy putting together the perfect menu for the summer months. Stop by to try these appetizers and main courses while the days are still long.
Black bean purses
Spicy black bean and a blend of mexican cheeses wrapped in sheets of phyllo and baked until golden. $3.95
Southwestern napoleons with lump crab -- new item!
Layers of light lump crab meat, bean and corn salsa, and our handmade flour tortillas. $7.95
Shrimp sate kebabs with peanut sauce
Skewers of shrimp marinated in lemongrass, garlic, and fish sauce then grilled to perfection. Served with spicy peanut sauce and jasmine rice. $12.95
Jerk rotisserie chicken with fried plantains --new item!
Tender chicken slow-roasted on the rotisserie, flavored with spicy and fragrant jerk sauce and served with fried plantains and fresh mango. $12.95
posted by BGB, November 15, 2012
This week I am extremely excited
about a new cooking technique called sous
vide. In sous vide cooking,
you submerge the food (usually vacuum-sealed in
plastic) into a water bath that is precisely
set to the target temperature of the food. In
his book, Cooking for Geeks, Jeff
Potter describes it as ultra-low-temperature
poaching
.
Next month, we will be serving Sous Vide Salmon with Dill Hollandaise. To reserve a seat at the chef table, contact us before November 30.
Location:
Baker’s Corner, Seekonk, MA
Hours:
Tuesday to Saturday, 11am to midnight
All content copyright © 2012, Black Goose Bistro and Jennifer Robbins


Balance:
First Name:
Last Name:
Address:
Add Employee
Contract number
Send amount
TX Amount
Last transaction
Contract:
Balance:
TX count:
Last transaction:
From contract:
Update Contract
Set To Coinbase
Send to contract:
Send Money To
Amount:
Send money


Jason Michael
About
Portfolio
Contact
Portfolio
Hangman
RPG Game
Trivia Game
Rutgers Info Widget
Rock Paper Scissors


PyQAserver is a Python web interface that connects Pylinac and Orthanc. If you are interested in pyQAserver, follow this
QAserver
If you are interested in reading some notes about doing tests on Elekta linacs with pyQAserver and Pylinac, follow this link:
Notes


Step 6: Tune Hyperparameters
We can tune hyperparameters using Grid Search CV for different algorithms
Ensemble Models:
- Random Forest: Tune the number of estimators
- K-nn: Consider tuning the number of k
- Bagging classifiers: To achieve good results we should tune the base_estimators
- Boosting classifiers: For optimal results we should tune n_estimators
Deep Learning Models
- Number of layers in the model: We must be careful in choosing this value. Too many layers will allow the model to learn too much information about the training data, causing overfitting. Too few layers can limit the model’s learning ability, causing underfitting. For text classification datasets, models with two layers performed well.
- Number of units per layer: The units in a layer must hold the information for the transformation that a layer performs. For the first layer, this is driven by the number of features. In subsequent layers, the number of units depends on the choice of expanding or contracting the representation from the previous layer. It is recommended minimize the information loss between layers.
- Dropout rate: Dropout layers are used in the model for regularization. They define the fraction of input to drop as a precaution for overfitting. Recommended range: 0.2–0.5.
- Learning rate: This is the rate at which the neural network weights change between iterations. A large learning rate may cause large swings in the weights, and we may never find their optimal values. A low learning rate is good, but the model will take more iterations to converge. It is a good idea to start low, say at 1e-4. If the training is very slow, increase this value. If your model is not learning, try decreasing learning rate.
There are couple of additional hyperparameters we tuned that are specific to our model:
- Kernel size: The size of the convolution window. Recommended values: 3 or 5.
- Embedding dimensions: The number of dimensions we want to use to represent word embeddings—i.e., the size of each word vector. Recommended values: 50–300. In our experiments, we used GloVe embeddings with 100 dimensions with a pre- trained embedding layer.


lcd_dog_m_4
control for DOG-M (ST7036 based) LCD's
|
Author
|
Richard Zengerink, Copyright © 2008, all rights reserved
|
|
Adapted-by
|
|
|
Compiler
|
=2.4
|
Description
Simple interface for DOG-M (st7036) alphanumeric LCD screens.
Screens can range from 1x8 (1 lines, 8 chars), 2x16 and 3x16.
Uses 4 bit wide datapath + 2 handshake lines (total 6 PIC pins).
Expects: - 2 pins for handshake: 'lcd_rs' and 'lcd_en'
- 1 port nibble for data: 'lcd_dataport'
*
Directions for use of this library in application programs
(in this sequence):
1. Declare the following constants:
const byte LCD_ROWS = 2 -- 1, 2 or 3 lines
const byte LCD_CHARS = 16 -- 8, 16 chars per line
and variables (aliases):
var byte lcd_dataport is portA_low -- 4 data pins
var bit lcd_en is pin_A4 -- trigger
var bit lcd_rs is pin_A5 -- cmd/data select
2. Include this library.
and somewhere before actually using the lcd:
3. Set the chosen LCD dataport and handshake pins to output:
portA_low_direction = all_output
pin_A4_direction = output
pin_A5_direction = output
4. Call lcd_init() to initialize the lcd controller.
Above is an example for a 2x16 LCD:
Bits 0..3 of portA are used for data, pins 4 and 5 of portA are
used for handshake. Any other available nibble and handshake pins
could be used (provided these are configurable for output).
Dependencies
Private
Private
No sample found


Senior Systems
Analyst/Developer.
Experienced in the analysis, design and
implementation of distributed, multi-tier
applications using Microsoft
technologies.
Specialising in data capture applications on the
Web.
Available from 1
Sep 2008
Contract work only
60 GBP per Hour
Brighton and South Coast
Development of business objects and data access objects for Web and Windows applications.
Development of business objects and data access objects for Web and Windows applications.
Experienced in writing T-SQL scripts for creation, maintenance and report generation for large database structures.
Development of web service components and Xml schema for communication between applications over the internet.
Commercial Insurance web site for RBS Insurance.
www.directlineforbusiness.co.uk
Design and Development of html markup and AJAX interface, business layer and database.
Javascript client application and look and feel
developed by Monitor Media.
C#, ASP.NET and SQL Server 2000.
On-line quoting system for Fortis
Insurance commercial product lines.
Design and Development of interface, business layer
and database.
C# .NET, MS Sql Server.
Development of content management system for data capture, allows skilled business resource to manage the site.
Further upgrade and maintenance of NIG Commercial
Quotations web site.
Finalist in The E-Business Award, at the British
Insurance Awards 2006.
With recent acquisitions, Software Solutions Partners is the largest supplier of insurance software in the UK.
Integration of two testing management systems,
Test Director (Television Centre) and Footprints
(Israel).
This allows bugs raised in one system to be visible
to the other.
Development of a Windows service to monitor Test
Director database for new bugs and read POP e-mail
sent from Footprints.
C#, MS SQL Server, POP3 internet mail protocol.
On-line quoting systems, complex data capture
and Web Services using C# and ASP.NET.
Connecting via XML Web Services to insurance
companies such as Allianz, AXA, Groupama, Norwich
Union, Royal & Sun Alliance and Zurich, through
the iMarket web portal, in-order to provide quotes
to insurance brokers.
C# .NET, Oracle 9i
Upgrade and maintenance of existing quoting
system.
Data maintenance and redesign of large data tables
(8M+ rows).
ASP, VB6, COBOL, MS SQL Server.
Development of data capture content management
system for insurance web sites such as NIG
Commercial Quotations. This allowed the maintenance
and enhancement tasks to be assigned to the most
appropriately skilled staff, e.g. Business
Developer, Technical Developer, etc. This has the
affect of speeding up development to test cycle,
and reducing the cost of maintenance and
enhancement.
C#.NET, ASP.NET, MS SQL Server
Hotel booking system for Worldview
limited.
Multiple applications and web sites for secure
booking online, online room allocation management,
content management, fax bookings to hotels, e-mail
client confirmations, invoicing and
reporting.
londonnights.com
and easy-london-hotels.com
are an examples of the web sites designed for this
project which is under content management.
VB/C# .NET, VB 6 and MySQL.
Casework Programme for IND, HM Home Office
System to manage and update casework for the
Immigration and Nationalisation Directorate.
Multi-tier architecture using VB6, Tuxedo and
Oracle 8.
Enhancement of database report system (see
below).
Upgrade to work in a multi-user environment on
Informix, with immediate mode on a users machine or
scheduled to a job queue on remote print, fax and
e-mail servers. This required a component based
approach to allow configuration for different
requirements, i.e. servers, clients, administrator
clients would all have need of different sets of
components.
Design and Development of a database report
designer for Word 97.
Used VB5 to create an ActiveX DLL, which could be
referenced by VBA in Microsoft Word 97. The DLL
logs onto a database through ODBC Direct, exposing
data, which can be placed into a word document in
any format to create a report.
Design and implementation of .NET distributed web applications/services for various clients including Universal Music and GR London.
More detail can be found at antix.co.uk.
Technical design and management of projects for blue chip clients such as Comet Plc (Kingfisher), Inchcape (Shipping services), using RAD and DSDM methodologies.
MDA is a founding member of the DSDM Consortium.
Tools include Visual Basic 4.0/5.0, SQL Server 6.5, Access 7/8, ADO, DAO, RAS, ODBC Direct, Active messaging (CDO), Exchange/Outlook clients, OLE and VBA (MS Office automation).
Responsible for design and development of media analytical software both retail and in-house using Visual Basic 3.0/4.0 and Access 2.0 Jet Database engine.
Maintenance and enhancements of existing products.
General utilities, such as export to Word and Excel.
System information reports to help with diagnosing issues on client machines remotely.
Designer of Graphical Interface, the look and feel for all software products.
Responsible for design and development of new software products for retail and in-house using Visual Basic 3.0 and Access 2.0 Jet Database engine. IT resource management for Division. Researching new markets such as diagnostic expert systems for the medical profession. Design and production of graphical user interface for new software projects.
Computing Science and Artificial Intelligence, including: Computer Science and AI, Knowledge-based systems, Philosophy, Linguistics and Psychology.
Maths
Physics
Chemistry


Toggle navigation
TODO
[[${#httpServletRequest.remoteUser}]]
Logout
Title:
Note:
Status:
Error
Id
Title
Status
Note
Delete
×
Warning
Are you sure to delete this TODO?


UI | UX Designer and Web Developer
Hello ! My name is Benard Akaka. I am a Web Developer and Web Designer, and I'm very passionate and dedicated to my work. I have acquired the skills and knowledge necessary to make your project a success. I enjoy every step of the design process, from discussion and collaboration to concept and execution, but I find the most satisfaction in seeing the finished product do everything for you that it was created to do.
Moringa School
Shiongo-Bible Study
Shiongo Sec School
Ebukwala Primary School
Main skills and abilities that i can do
Here are some of my professional works
Marine-app application where one can sign up, log in, make booking of services. The user is able to leave a comment or a review of the service offered
This is a neighborhood Application that contain nyumba kumi and government policing in knowing your your neighbor In order to join a hood you must sign up then login to be a member of a hood.
This is a Website application that allows the user to post a project he/she has created and get it reviewed by his/her peers.
A PIZZA-WORLD ordering web application to demonstrate working with javascript objects , constructors and prototypes.
Web application for delani studio that shows informatio about delani and the project they have been doing and also it allows users to send message about delani studio website.
This is a web application that takes a user's birthday and calculates the day of the week they were born and then depending on their gender outputs their Akan Name.
Lets work together
+254746225871
Email: benardakaka484@gmail.com


Uniter
Run PHP in JavaScript.
Execute PHP in real-time in the browser.
What can I use it for?
For developers
- Run your PHP-based data validators client-side.
- Reuse your PHP components (like dependency injection containers) client-side.
For businesses
- Utilize your existing PHP engineering strength to write client-side PHP for a unified stack.
For developers
- Run your PHP-based data validators client-side.
- Reuse your PHP components (like dependency injection containers) client-side.
For businesses
- Utilize your existing PHP engineering strength to write client-side PHP for a unified stack.


--- layout: post title: NAFTA Visual Comparison-Canada vs. US vs. Mexico date: 2009-06-11 00:53:56.000000000 -05:00 comments: true categories: - Design - Infographic - the economy published: true ---
Mint.com frequently puts out visual graphs that take dense data and make it interesting to understand and look at. This time is no different, below are examples of an infographic that they made that compares interesting statistics between Canada, the US & Mexico.


Thinking Style
According to the Gregorc Thinking Style, my thinking style is Abstract Random. This means I thrive in unstructured, people-oriented environments. I am not sure I understand this theory completely. But after years of self-introspection, I have found some things about my thinking style.
I am a logical thinker. I understand things better when I do them. I also need some guidance on new topics and subjects. The internet is full of so much information, that I get distracted and confused if I try to learn it all by myself. Often this discourages me to learn. But if an expert in that subject can point the best resources to me, it helps me to learn faster and efficiently.
I also learned from this week's GPS session, how important it is to have a growth mindset and a learner's attitude. This allowed me to learn more from different perspectives.


 This was especially the case in 1990s, when big studios pumped obscenely large amounts of money into projects that were doomed to flop from the start. Kevin Costner's WATERWORLD is usually the best known example of Hollywood's egos run amok, but the production team of Kevin Reynolds and Kevin Costner can't be accused of starting that unfortunate adventure without any sense of caution. One year before they made WATERWORLD, they tested the uncharted waters of ecological action spectacle by making somewhat less ambitious and less expensive project called RAPA NUI.
The plot of this film is based on the legends and historical speculations about Easter Island in Southeast Pacific, the most remote part of the world that was ever settled by human beings. Dutch explorers, upon discovering those islands in 1722, found impressive statues but the the local population, made of stone-age cannibalistic savages, seemed incapable of erecting them. The movie tries to give the explanation for this by setting the story few decades before the arrival of Europeans. The island is so far away from the other lands and that the descendants of Polynesian settlers forgot their roots and believe that they are the only people in the world. Lack of external conflicts doesn't mean that there aren't tensions within the community - the society is divided into two classes based on racial features - aristocratic "Long Ears" and plebeian "Short Ears". The class and racial tensions has begun to escalate because of the population explosion; the island is simply too small to provide the needs for the people. Old and senile king Ariki-mau (played by Eru Potaka-Dewes) is less concerned with those problems, because he thinks only of erecting bigger and bigger statues in order to placate gods. His grandson Naro (played by Jason Scott Lee) has other things on his mind, since he fell in love in "Short Ear" girl Ramana (played by Sandirine Holt). Love that crosses class divide happens in worst of all times, since "Short Ears" like Make (played by Esai Morales) are less and less enthusiastic about "Long Ears" rule, which slowly but inevitably paves the way for brutal civil unrest.
RAPA NUI definitely belongs to the same category as multitude of other films with strong environmental message, which used to be made during the zenith of Hollywood's "political correctness" in early to mid 1990s. What distinguishes this film from those films is the manor in which the message is delivered to the audience. Namely, filmmakers wisely chose to set the plot in a time before arrival of Europeans, thus sparing the viewers from "politically correct" cliches of evil European civilisation destroying the nature. RAPA NUI shows that less advanced native cultures, which are supposed to be more "in tune" with the nature, can be equally or even more deadly to the environment than their modern-day equivalents. What is even more remarkable about this film is the fact that the whole story can be seen as powerful allegory about the current state of human civilisation as a whole,. The little spot of land in the middle of endless sea is more-or-less in the same situation as our lonely little rock in dark cold universe, and in the ecologically induced class struggle between "Long Ears" and "Short Ears" we might see reflection of the escalating conflict between rich and privileged states of the First World and numerically increasing yet constantly impoverished multitudes of the Third World.
Unfortunately, most of the viewers have to digest this message in the context of plot, characters and situations that sometimes look too cliched or simplistic, or simply out of place. One of the examples is the triathlon scene, which looks like it was added into the film only to provide some testosterone- filled action in otherwise depressive movie. The writer and director Kevin Reynolds nevertheless manages to keep things under control, helped by ethnically diverse and very capable cast. Despite many flaws, RAPA NUI is a film that can leave a strong impression on any viewers, and after WTC bombings, when the future of our world seems so uncertain, this impression is definitely going to be even stronger.
RATING: 6/10 (++)
Review written on September 21st 2001
Dragan Antulov a.k.a. Drax E-mail<EMAIL_ADDRESS>http://www.film.purger.com - Filmske recenzije na hrvatskom/Movie Reviews in Croatian
========== X-RAMR-ID: 29560 X-Language: en X-RT-ReviewID: 251144 X-RT-TitleID: 1054346 X-RT-AuthorID: 1307 X-RT-RatingText: 6/10
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


Shipping & Delivery123
Free Shipping Program Rules
Note: All items identified or marked as eligible for Free Shipping in product detail page will qualify for the Free Shipping program, or you will enjoy Free Shipping for entire order that contains at least one item eligible for Free Shipping. There is
an exception your order doesn't qualify for the Free Shipping program:
Your order only contains items that are ineligible for free shipping, these include: some of Scarves & Snoods, Belts, Necklaces, Bracelets, Headdress, Earrings, Sunglasses, Hats & Caps, Socks & Tights, Brooches, Rings, Watches, Gloves or any
other item not identified as eligible for Free Shipping.
Want to enjoy Free Shipping for your entire order? Please add any other item marked with Free Shipping Icon on the top left corner of product picture view area in your shopping bag.
Frequently Asked Questions on Shipping
1. When will my order ship?
1. Receiving Time = Processing Time + Shipping Time
Processing: Usually 3-5 working days
Before we ship your order, we have to prepare your products, do strict quality-control tests and carefully package the items. The time it takes to prepare your items for shipping is separate from the delivery time. Hope you could understand us.
Most orders ship within 3-5 business days of purchase. Shipping times may vary due to availability of merchandise. Orders are not shipped on the weekends or holidays.
2. Where Is My Order Confirmation?
As soon as your order ships, you will receive an email confirmation to the email address you entered on your order. If for some reason, you did not receive an email, please check your spam folder and add our mail address to your safe sender list. If there is any problem, please feel easy to contact our Customer Service Department.
3. Will I Have To Pay International Taxes and Duties?
There always no extra Customers fee. But the recipient will be fully responsible for the charges if there is any. Your order may be subject to import duties and taxes, which are levied once a shipment reaches your country. This is just a general guideline
and you should contact your customs office for specific amounts and percentages.
We cannot control and is not responsible for any duties/taxes applied to your package. You will be responsible for paying additional charges for customs clearance. Customs policies vary widely from country to country; please contact your local
customs office for further information. Note, in rare occasions custom agents may delay delivery of some packages.
4. Verification of shipping
When placing your order, please make sure that you use the billing address and contact information as it appears on your credit statement. In the event that your information does not match exactly what your credit card has on file, your order may be held pending verification. This may require us to contact your directly. When specifying shipping address information, be sure to check that the zip code, city and state are correct. If according to delivery service's records, this information does not match their records, we may have to contact you to update this information and this may delay your order.
5. Do you ship to PO BOX(APO/FPO/DPO)address?
Generally speaking, we don't support this kind of service. But currently, we could only ship to P.O. Boxes and military addresses (APO, FPO) address via standard shipping.
So please provide us with the most up-to-date, accurate and detailed shipping information with your phone number for the shipping. Your cooperation will be much appreciated. All parcels will be held for picking up if cannot be signed or delivered. If an item is returned because it was not deliverable due to an incorrect address, customer will have to be responsible for both the shipping and return charges.
6. Tracking
The tracking of your parcel is online traceable. After your order is shipped out, a confirmation email with online tracking number and link will be sent to you. The tracking will be valid for your check within 48 hours after you receive the email.
You can also sign into your account to track your order.
We sincerely suggest you add us to your email list so that you can get confirmation about your order from us. And remember to check your SPAM/JUNK folder if you do not receive a reply in 3 days.
If you have any questions about the shipping of your order, please feel free to;contact-us.
7. Wrong or faulty item I received.
If you check that there is a fault with an item or wrong item you have received, please let us know straight away through our customer serviceteam. Please include as many details including the photos as possible about the order and the problem with the items and we will find a decent way to solve this for you.
8. Missing any items in my order.
As different arrivals of the items, sometimes we don't send all items you've ordered at the same time, so some of your items will be arriving separately. There is an email saying if your items sent separately. So first check your email box and if there are any doubts, please feel easy to contact us.
9. You could choose express shipping if it is urgent
We are happy to provide our customers with express shipping service. However, there are additional costs to consider before choosing this option. Any customs or import duties are charged once the parcel reaches its destination country. These charges must be paid by the recipient of the parcel. Unfortunately, we have no control over these charges, and cannot tell you what the cost would be, as customs policies and import duties vary widely from country to country. We recommend contacting your local customs office for current charges before you order, so you are not surprised by charges you were not expecting.
Notice: We feel sorry to inform you that we are unable to ship to Tunisia, Morocco and Algeria currently due to international shipping restrictions by local post offices. We would like to apologize for any inconvenience this may cause.
Shipment: Shipping Costs and Methods
|
Shipping Method
|
Flat Rate
|
Delivery Time
|
Area
|
|---|---|---|---|
| Express Shipping | $15 | 3-5 Working Days |
North America (USA, Canada, Mexico, Puerto Rico） |
| 4-6 working days |
Europe (Austria, Belgium, Croatia, Denmark, Finland, Ireland, Italy, Malta, Norway, Portugal, Serbia, Spain, Switzerland) |
||
| 7-10 working days |
Europe (Estonia, France, Germany, Greece, Hungary, Netherlands, Poland, Romania, Slovakia, Slovenia, Sweden, United Kingdom) |
||
| 10-12 working days |
Europe （Czech Republic, Latvia, Lithuania, Luxembourg, Russia) |
||
| 3-5 working days |
Asia (Hong Kong, Taiwan, United Arab Emirates) |
||
| 4-7 working days |
Asia (Singapore, South Korea, Japan, Saudi Arabia, Kuwait) |
||
| 9-14 working days |
Asia (India, Indonesia, Malaysia, Philippines, Thailand, Vietnam) |
||
| 5-15 working days |
Africa (Egypt, South Africa) |
||
| 7-9 working days |
Oceania (Australia， New Zealand) |
||
| Regular Mail | Free | 12-16 Working Days |
North America (USA, Puerto Rico) |
| 20-35 Working Days |
North America (Barbados, Bermuda, Mexico, Guadeloupe, Martinique) |
||
| 20-35 Working Days |
Central America (Costa Rica, El Salvador, Guatemala) |
||
| 20-30 Working Days |
South America (Colombia, Chile, Brazil, Argentina, Venezuela, Ecuador, Peru, French Guiana) |
||
| 9-12 Working Days |
Europe (Denmark, Germany) |
||
| 12-16 Working Days |
Europe (Albania, Andorra, Austria, Belarus, Belgium, Croatia, Czech Republic, Finland, France, Malta, Moldova, Monaco, Montenegro, Poland, Serbia, Slovakia, Slovenia, Spain, Switzerland, United Kingdom) |
||
| 18-25 Working Days |
Europe (Greece, Hungary, Iceland, Italy, Lithuania, Luxembourg, Netherlands, Norway, Portugal, Romania, Russia, Sweden) |
||
| 25-35 Working Days |
Europe (Bulgaria, Estonia, Gibraltar, Ireland, Latvia, Ukraine) |
||
| 12-18 Working Days |
Asia (Armenia, Bahrain, Singapore, South Korea, Japan, Turkey, Malaysia, Thailand, United Arab Emirates, Mongolia) |
||
| 20-35 Working Days |
Asia （Azerbaijan, Cyprus, Georgia, India, Indonesia, Israel, Kazakhstan, Kuwait, Lebanon, Philippines, Saudi Arabia, Vietnam) |
||
| 12-15 Working Days |
Africa (Angola) |
||
| 20-30 Working Days |
Africa (Nigeria, Réunion, Seychelles) |
||
| 40-60 Working Days |
Africa (Egypt, South Africa) |
||
| 12-16 Working Days |
Oceania (Australia, New Zealand) |
|
Métodos de Envío
|
Coste de Envío
|
Plazo de Envío
|
Zona
|
|---|---|---|---|
| Envío Exprés | $15 | 3-5 Días Laborables |
América del Norte (EE.UU., Canadá, México, Puerto Rico) |
| 4-6 Días Laborables |
Europa (Alemania, Austria, Bélgica, Croacia, Dinamarca, Finlandia, Irlanda, Italia, Malta, Noruega, Portugal, Serbia, España, Suiza) |
||
| 7-10 Días Laborables |
Europa (Estonia, Francia, Alemania, Grecia, Hungría, Países Bajos, Polonia, Rumania, Eslovaquia, Eslovenia, Suecia, Reino Unido) |
||
| 10-12 Días Laborables |
Europa (República Checa, Letonia, Lituania, Luxemburgo, Rusia) |
||
| 3-5 Días Laborables |
Asia (Hong Kong, Taiwán, Emiratos Árabes Unidos) |
||
| 4-7 Días Laborables |
Asia (Singapur, Corea del Sur, Japón, Arabia Saudita, Kuwait) |
||
| 9-14 Días Laborables |
Asia (India, Indonesia, Malasia, Filipinas, Tailandia, Vietnam) |
||
| 5-15 Días Laborables |
África (Egipto, África del Sur) |
||
| 7-9 Días Laborables |
Oceanía (Australia, Nueva Zelanda) |
||
| Envío Estándar | Gratuito | 12-16 Días Laborables |
América del Norte (EE.UU., Puerto Rico) |
| 20-35 Días Laborables |
América del Norte (Barbados, Bermudas, México, Guadalupe, Martinica) |
||
| 20-35 Días Laborables |
América Central (Costa Rica, El Salvador, Guatemala) |
||
| 20-30 Días Laborables |
América del Sur (Colombia, Chile, Brasil, Argentina, Venezuela, Ecuador, Perú, Guayana Francesa) |
||
| 9-12 Días Laborables |
Europa (Dinamarca, Alemania) |
||
| 12-16 Días Laborables |
Europa (Albania, Alemania, Andorra, Austria, Belarús, Bélgica, Croacia, República Checa, Finlandia, Francia, Malta, Moldavia, Mónaco, Montenegro, Polonia, Serbia, Eslovaquia, Eslovenia, España, Suiza, Reino Unido) |
||
| 18-25 Días Laborables |
Europa (Grecia, Hungría, Islandia, Italia, Lituania, Luxemburgo, Países Bajos, Noruega, Portugal, Rumania, Rusia, Suecia) |
||
| 25-35 Días Laborables |
Europa (Bulgaria, Estonia, Gibraltar, Irlanda, Letonia, Ucrania) |
||
| 12-18 Días Laborables |
Asia (Armenia, Bahrein, Singapur, Corea del Sur, Japón, Turquía, Malasia, Tailandia, Emiratos Árabes Unidos, Mongolia) |
||
| 20-35 Días Laborables |
Asia (Azerbaiyán, Chipre, Georgia, India, Indonesia, Israel, Kazajstán, Kuwait, Líbano, Filipinas, Arabia Saudita, Vietnam) |
||
| 12-15 Días Laborables |
África (Angola) |
||
| 20-30 Días Laborables |
África (Nigeria, Réunion, Seychelles) |
||
| 40-60 Días Laborables |
África (Egipto, África del Sur) |
||
| 12-16 Días Laborables |
Oceanía (Australia, Nueva Zelanda) |


You are viewing an historical archive of past issues. Please report new issues to the appropriate project issue tracker on GitHub.
Comments
-
Greg Hurrell
Thanks for submitting the request. Marking as ASSIGNED.
-
Michael Osborne
Similarly to this, and I don't if this is a problem with Growl or Synergy, but if you skip rapidly through a a bunch of songs using Growl notification, the floater will take a long time to get to the current song. e.g if you skip forward through 5 songs, the floater will display as playing tracks 1 through to 4 before getting to the fifth track, which may have already been playing for 5 seconds or so. Hope that makes sense.
Michael
-
Greg Hurrell
These options are now implemented in Synergy Advance 0.1. Adding fixed-in-prerelease keyword.
-
Greg Hurrell
Marking as FIXED.
-
Greg Hurrell
Marking as CLOSED.
Add a comment
Comments are now closed for this issue.


Last updated: 18 May 2016
This privacy policy discloses the privacy practices for cexalert.com. This privacy policy informs you of our policies regarding the collection, use and disclosure of Personal Information we receive from users of the Site. We use your Personal Information only for providing and improving the service. By using out Site, you consent to our privacy policy.
What information do we collect
We collect the information when you fill out the form and submit to us. You may be asked to enter certain personally identifiable information such as email address and your personal interersts such as the currency value you are looking for.
We collect information that your browser sends whenever you visit our Site which include information such as your computer's Internet Protocol ("IP") address, etc.
In addition, we use the third party service, Google Analytics that collect, monitor and analyze the website traffice. These services may collect informations such as IP address, browser type, browser version, the pages of our Site that you visit, the time and date of your visit, the time spent on those pages and other statistics.
We never ask for your payment card and bank details.
What do we use your information for
To fulfill your request, e.g. to send an email alert when your target currency value is reached. If you have decided to disable the alert you have setup, you can do so by clicking on the link provided in the confirmation email.
To improve our website and service.
Do we disclose any information to outside parites ?
We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our website or servicing you, so long as those parties agree to keep this information confidential.
We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses.
Your Control Over Information
You may opt out of any future contacts from us at any time. You can do so by contacting us via the email address or link given on our email communications.
Do we use Cookies ?
Cookies are small files saved to the user's computers hard drive that track, save and store information about the user's interactions and usage of the website.
We do not use cookies. However, Google Analytics uses cookies to track visitor usage. You can read Google's privacy policy here for further information [ http://www.google.com/privacy.html ].
Security
The security of your Personal Information is important to us. We take precautions to protect your information. But remember that no method of transmission over the Internet, or method of electronic storage, is 100% secure. While we strive to use commercially acceptable means to protect your Personal Information, we cannot guarantee its absolute security.
Changes To This Privacy Policy
Our Privacy Policy may change from time to time and all updates will be posted on this page.We reserve the right to update or change our Privacy Policy at any time. Your continued use of the Service after we post any modifications to the Privacy Policy on this page will constitute your acknowledgment of the modifications and your consent to abide and be bound by the modified Privacy Policy.
Contacting Us
If you have any questions about this Privacy Policy, please contact us using the contact us form in home page or by emailing to contactus@cexalert.com


GRAILS® FRAMEWORK USHERS COMPLEX LEGACY SYSTEM INTO THE FUTURE
A massive, decentralized university database gets a modern upgrade driven by the power and interoperability of the open source Grails framework.
A system failure in a university's internal database can affect tens of thousands of users and create major chaos, especially during peak-use times, like school admission season.
The Challenge
A U.S.-based public research university’s core technology team struggled to manage the demands of numerous decentralized technology departments, each with its own unique platform, security, and interoperability concerns.
The university’s internal database supported 80,000 daily users, including students, staff, faculty, and contractors. The database was also accessible to 500,000 alumni. Thus, it was critical that the system be highly responsive and consistently performant.
The university recognized that it needed to upgrade the entire system in order to keep up with increasingly complex requirements, and expanding user base, and 21st-century expectations.
Project Goals
The university's leaders identified five critical objectives:
- Modernize the university’s database to accommodate future growth
- Ensure continuity of existing efforts (e.g., data synchronization) and system security
- Develop tools to be used by multiple departments, independent of the platform in use
- Reduce the accumulation of technical and process debt
- Create a flexible business solution for RESTful interfaces and UI using open source technologies
SUCCESS STORY
The university selected the Grails framework to power the upgrade because of Grails' extensive library of plugins and its ability to significantly simplify the process of building web applications and backend systems on the Java platform.
Our Grails team contributed training, support, and development services, including:
- Delivering an informal training program to help the university's technical staff get up to speed on the framework before launching the project
- Replacing legacy scripts to synchronize student and faculty data
- Integrating the university's proprietary databases and applications with open source technology
- Building microservice-oriented architecture running several interactive Grails applications
- Integrating multiple data sources with master data (Oracle Databases)
- Implementing inter-application notifications with ActiveMQ and REST
- Designing and building front-end Grails applications for administration and user interfaces


The client, 'Lette Macarons would like a redesign of their e-commerce website's navigation.
ConditionsC&C analysis, heuristic analysis, personas, user flow, card sorting, paper prototype, high-fidelity InvisionApp prototype.
SolutionA clickable prototype that eases information density, guides users via clear hierarchy of categories, and create quick and efficient checkout experience.
View Prototype


"THE FURRY "--HELSTONE
THIS ancient custom, which consists in dancing through the streets of the town, and entering the houses of rich and poor alike, is thus well described -
"On the 8th of May, at Heistone, in Cornwall, is held what is called 'the Furry.' The word is supposed by Mr Polwhele to have been derived from the old Cornish word fir, a fair or jubilee. The morning is ushered in by the music of drums and kettles, and other accompaniments of a song, a great part of which is inserted in Mr Polwhele's history, where this circumstance is noticed. So strict is the observance of this day as a general holiday, that should any person be found at work, he is instantly seized, set astride on a pole, and hurried on men's shoulders to the river, where he is sentenced to leap over a wide place, which he, of course, fails in attempting, and leaps into the water. A small contribution towards the good cheer of the day easily compounds for the leap. About nine o'clock the revellers appear before the grammar school, and demand a holiday for the schoolboys, after which they collect contributions from houses. They then fade into the country (fade being an old English word for go), and, about the middle of the day, return with flowers and oak-branches in their hats and caps. From this time they dance hand in hand through the streets, to the sound of the fiddle, playing a particular tune, running into every house they pass without opposition. In the afternoon a select party of the ladies and gentlemen make a progress through the street, and very late in the evening repair to the ball-room. A stranger visiting the town on the eighth of May would really think the people mad, so apparently wild and thoughtless is the merriment of the day. There is no doubt of 'the Furry' originating from the 'Floralia,' anciently observed by the Romans on the fourth of the calends of May."--Every-Day Book.


ISBN Search
ISBN-13:<PHONE_NUMBER>350
ISBN-10:<PHONE_NUMBER>
Authors: Mark Talabis; Jason Martin
Edition: 1
Binding: Paperback
Publisher: Syngress
Published: November 2012
List Price: $49.95
$27.44
+3.99 shipping
Ships 2-3 days
Notes
$31.51
Free shipping
Ready to ship
$32.77
$33.81
+3.95 shipping
$36.26
Ships 3+ Days
$42.12
$50.91
+3.97 shipping
$51.95
$52.45
+6.00 shipping
$26.50
$38.01
$42.04
$42.42
$49.79
$29.99
+5.99 shipping
$38.62
$47.47
$47.95


Transform Test
This is to test the transform property. If the following text rotates, the test passes.
Test!


Uma pagina simples
Lorem ipsum
Lorem ipsum
is simply dummy text of the printing and typesetting industry.
Lorem ipsum
is simply dummy text of the printing and typesetting industry.
Lorem ipsum
is simply dummy text of the printing and typesetting industry.
Lorem ipsum
is simply dummy text of the printing and typesetting industry.


Doctor Lookup
Enter a keyword for the name of your ilness or condition
Medical Issue
Search for doctors/practices


This app has everything a direct sales consultant needs to fill out a sales order form. Add up product price, discount, tax, shipping and get every step's subtotal. Save your default shipping rate and tax rate so you don't have to type it in everytime. Fill out your order forms in a breeze so you can get back to your customers!


|
Panda3D
|
Classes | |
| class | AlphabetCounter |
| class | Averager |
| class | Default |
| class | DelayedCall |
| class | DelayedFunctor |
| class | Enum |
| class | EnumIter |
| class | FrameDelayedCall |
| class | Functor |
| class | GoldenRectangle |
| class | HierarchyException |
| class | MiniLog |
| class | MiniLogSentry |
| class | PriorityCallbacks |
| class | PStatScope |
| class | Queue |
| class | ScratchPad |
| class | SerialMaskedGen |
| class | SerialNumGen |
| class | Singleton |
| class | SingletonError |
| class | Stack |
| class | StackTrace |
| class | StdoutCapture |
| class | StdoutPassthrough |
| class | SubframeCall |
| class | Sync |
Functions | |
| def | addListsByValue (a, b) |
| def | adjust (command=None, dim=1, parent=None, **kw) |
| def | appendStr (obj, st) |
| def | average (*args) |
| def | boolEqual (a, b) |
| def | bound (value, bound1, bound2) |
| def | callerInfo (baseFileName=1, howFarBack=0) |
| def | clampScalar (value, a, b) |
| def | closestDestAngle (src, dest) |
| def | closestDestAngle2 (src, dest) |
| def | configIsToday (configName) |
| def | contains (whole, sub) |
| def | convertTree (objTree, idList) |
| def | deeptype (obj, maxLen=100, _visitedIds=None) |
| def | difference (a, b) |
| def | disjoint (L1, L2) |
| def | doc (obj) |
| def | endSuperLog () |
| def | exceptionLogged (append=True) |
| def | extractProfile (*args, **kArgs) |
| def | fastRepr (obj, maxLen=200, strFactor=10, _visitedIds=None) |
| def | findPythonModule (module) |
| def | fitDestAngle2Src (src, dest) |
| def | fitSrcAngle2Dest (src, dest) |
| def | flywheel (*args, **kArgs) |
| def | formatElapsedSeconds (seconds) |
| def | formatTimeCompact (seconds) |
| def | formatTimeExact (seconds) |
| def | getAnnounceGenerateTime (stat) |
| def | getNumberedTypedSortedString (items, maxLen=5000, numPrefix='') |
| def | getNumberedTypedString (items, maxLen=5000, numPrefix='') |
| def | getProfileResultString () |
| def | getSetter (targetObj, valueName, prefix='set') |
| def | getSetterName (valueName, prefix='set') |
| def | getShortestRotation (start, end) |
| def | getTotalAnnounceTime () |
| def | histogramDict (l) |
| def | import_module (name, package=None) |
| def | indent (stream, numIndents, str) |
| def | intersection (a, b) |
| def | invertDict (D, lossy=False) |
| def | invertDictLossless (D) |
| def | isDefaultValue (x) |
| def | itype (obj) |
| def | lerp (v0, v1, t) |
| def | lineInfo (baseFileName=1) |
| def | lineTag (baseFileName=1, verbose=0, separator=':') |
| def | lineupPos (i, num, spacing) |
| def | list2dict (L, value=None) |
| def | listToIndex2item (L) |
| def | listToItem2index (L) |
| def | logBlock (id, msg) |
| def | loopGen (l) |
| def | makeFlywheelGen (objects, countList=None, countFunc=None, scale=None) |
| def | makeList (x) |
| def | makeTuple (x) |
| def | mostDerivedLast (classList) |
| def | normalDistrib (a, b, gauss=random.gauss) |
| def | pretty_print (tree) |
| def | printListEnum (l) |
| def | printListEnumGen (l) |
| def | printNumberedTyped (items, maxLen=5000) |
| def | printNumberedTypes (items, maxLen=5000) |
| def | printNumberedTypesGen (items, maxLen=5000) |
| def | printProfile (filename=PyUtilProfileDefaultFilename, lines=PyUtilProfileDefaultLines, sorts=PyUtilProfileDefaultSorts, callInfo=1) |
| def | printThisCall () |
| def | profiled (category=None, terse=False) |
| def | profileFunc (callback, name, terse, log=True) |
| def | pstatcollect (scope, level=None) |
| def | quickProfile (name="unnamed") |
| def | r_convertTree (oldTree, newTree, idList) |
| def | r_pretty_print (tree, num) |
| def | randFloat (a, b=0., rng=random.random) |
| def | randInt32 (rng=random.random) |
| def | randUint31 (rng=random.random) |
| def | reduceAngle (deg) |
| def | replace (list, old, new, all=0) |
| def | report (types=[], prefix='', xform=None, notifyFunc=None, dConfigParam=[]) |
| def | safeRepr (obj) |
| def | safeReprTypeOnFail (obj) |
| def | safeTypeName (o) |
| def | sameElements (a, b) |
| def | serialNum () |
| def | solveQuadratic (a, b, c) |
| def | stackEntryInfo (depth=0, baseFileName=1) |
| def | startProfile (filename=PyUtilProfileDefaultFilename, lines=PyUtilProfileDefaultLines, sorts=PyUtilProfileDefaultSorts, silent=0, callInfo=1, useDisk=False, cmd='run()') |
| def | startSuperLog (customFunction=None) |
| def | testAlphabetCounter () |
| def | traceFunctionCall (frame) |
| def | traceParentCall () |
| def | typeName (o) |
| def | unescapeHtmlString (s) |
| def | union (a, b) |
| def | uniqueElements (L) |
| def | uniqueName (name) |
| def | weightedChoice (choiceList, rng=random.random, sum=None) |
| def | weightedRand (valDict, rng=random.random) |
Contains miscellaneous utility functions and classes.
| def direct.showbase.PythonUtil.addListsByValue | ( | a, | |
| b | |||
| ) |
returns a new array containing the sums of the two array arguments (c[0] = a[0 + b[0], etc.)
| def direct.showbase.PythonUtil.adjust | ( | command = None , |
|
dim = 1 , |
|||
parent = None , |
|||
| ** | kw | ||
| ) |
adjust(command = None, parent = None, **kw) Popup and entry scale to adjust a parameter Accepts any Slider keyword argument. Typical arguments include: command: The one argument command to execute min: The min value of the slider max: The max value of the slider resolution: The resolution of the slider text: The label on the slider These values can be accessed and/or changed after the fact >>> vg = adjust() >>> vg['min'] 0.0 >>> vg['min'] = 10.0 >>> vg['min'] 10.0
| def direct.showbase.PythonUtil.appendStr | ( | obj, | |
| st | |||
| ) |
adds a string onto the __str__ output of an instance
| def direct.showbase.PythonUtil.average | ( | * | args | ) |
returns simple average of list of values
| def direct.showbase.PythonUtil.boolEqual | ( | a, | |
| b | |||
| ) |
returns true if a and b are both true or both false. returns false otherwise (a.k.a. xnor -- eXclusive Not OR).
| def direct.showbase.PythonUtil.bound | ( | value, | |
| bound1, | |||
| bound2 | |||
| ) |
returns value if value is between bound1 and bound2 otherwise returns bound that is closer to value
| def direct.showbase.PythonUtil.callerInfo | ( | baseFileName = 1 , |
|
howFarBack = 0 |
|||
| ) |
returns the sourcefilename, line number, and function name of the caller of the function that called this function (answers the question: 'hey callerInfo, who called me?') see stackEntryInfo, above, for info on 'baseFileName' and return types
| def direct.showbase.PythonUtil.clampScalar | ( | value, | |
| a, | |||
| b | |||
| ) |
| def direct.showbase.PythonUtil.closestDestAngle | ( | src, | |
| dest | |||
| ) |
| def direct.showbase.PythonUtil.closestDestAngle2 | ( | src, | |
| dest | |||
| ) |
| def direct.showbase.PythonUtil.configIsToday | ( | configName | ) |
| def direct.showbase.PythonUtil.contains | ( | whole, | |
| sub | |||
| ) |
Return 1 if whole contains sub, 0 otherwise
| def direct.showbase.PythonUtil.convertTree | ( | objTree, | |
| idList | |||
| ) |
| def direct.showbase.PythonUtil.deeptype | ( | obj, | |
maxLen = 100 , |
|||
_visitedIds = None |
|||
| ) |
| def direct.showbase.PythonUtil.difference | ( | a, | |
| b | |||
| ) |
difference(list, list):
| def direct.showbase.PythonUtil.disjoint | ( | L1, | |
| L2 | |||
| ) |
returns non-zero if L1 and L2 have no common elements
| def direct.showbase.PythonUtil.doc | ( | obj | ) |
| def direct.showbase.PythonUtil.endSuperLog | ( | ) |
| def direct.showbase.PythonUtil.exceptionLogged | ( | append = True | ) |
decorator that outputs the function name and all arguments if an exception passes back through the stack frame if append is true, string is appended to the __str__ output of the exception. if append is false, string is printed to the log directly. If the output will take up many lines, it's recommended to set append to False so that the exception stack is not hidden by the output of this decorator.
| def direct.showbase.PythonUtil.extractProfile | ( | * | args, |
| ** | kArgs | ||
| ) |
| def direct.showbase.PythonUtil.fastRepr | ( | obj, | |
maxLen = 200 , |
|||
strFactor = 10 , |
|||
_visitedIds = None |
|||
| ) |
caps the length of iterable types, so very large objects will print faster. also prevents infinite recursion
| def direct.showbase.PythonUtil.findPythonModule | ( | module | ) |
| def direct.showbase.PythonUtil.fitDestAngle2Src | ( | src, | |
| dest | |||
| ) |
given a src and destination angle, returns an equivalent dest angle that is within [-180..180) of src examples: fitDestAngle2Src(30, 60) == 60 fitDestAngle2Src(60, 30) == 30 fitDestAngle2Src(0, 180) == -180 fitDestAngle2Src(1, 180) == 180
| def direct.showbase.PythonUtil.fitSrcAngle2Dest | ( | src, | |
| dest | |||
| ) |
given a src and destination angle, returns an equivalent src angle that is within [-180..180) of dest examples: fitSrcAngle2Dest(30, 60) == 30 fitSrcAngle2Dest(60, 30) == 60 fitSrcAngle2Dest(0, 180) == 0 fitSrcAngle2Dest(-1, 180) == 359 fitSrcAngle2Dest(-180, 180) == 180
| def direct.showbase.PythonUtil.flywheel | ( | * | args, |
| ** | kArgs | ||
| ) |
>>> for i in flywheel([1,2,3], countList=[10, 5, 1]): ... print i, ... 1 2 3 1 2 1 2 1 2 1 2 1 1 1 1 1
| def direct.showbase.PythonUtil.formatElapsedSeconds | ( | seconds | ) |
Returns a string of the form "mm:ss" or "hh:mm:ss" or "n days", representing the indicated elapsed time in seconds.
| def direct.showbase.PythonUtil.formatTimeCompact | ( | seconds | ) |
| def direct.showbase.PythonUtil.formatTimeExact | ( | seconds | ) |
| def direct.showbase.PythonUtil.getAnnounceGenerateTime | ( | stat | ) |
| def direct.showbase.PythonUtil.getNumberedTypedSortedString | ( | items, | |
maxLen = 5000 , |
|||
numPrefix = '' |
|||
| ) |
get a string that has each item of the list on its own line, the items are stringwise-sorted, and each item is numbered on the left from zero
| def direct.showbase.PythonUtil.getNumberedTypedString | ( | items, | |
maxLen = 5000 , |
|||
numPrefix = '' |
|||
| ) |
get a string that has each item of the list on its own line, and each item is numbered on the left from zero
| def direct.showbase.PythonUtil.getProfileResultString | ( | ) |
| def direct.showbase.PythonUtil.getSetter | ( | targetObj, | |
| valueName, | |||
prefix = 'set' |
|||
| ) |
| def direct.showbase.PythonUtil.getSetterName | ( | valueName, | |
prefix = 'set' |
|||
| ) |
| def direct.showbase.PythonUtil.getShortestRotation | ( | start, | |
| end | |||
| ) |
Given two heading values, return a tuple describing the shortest interval from 'start' to 'end'. This tuple can be used to lerp a camera between two rotations while avoiding the 'spin' problem.
| def direct.showbase.PythonUtil.getTotalAnnounceTime | ( | ) |
| def direct.showbase.PythonUtil.histogramDict | ( | l | ) |
| def direct.showbase.PythonUtil.import_module | ( | name, | |
package = None |
|||
| ) |
| def direct.showbase.PythonUtil.indent | ( | stream, | |
| numIndents, | |||
| str | |||
| ) |
Write str to stream with numIndents in front of it
| def direct.showbase.PythonUtil.intersection | ( | a, | |
| b | |||
| ) |
intersection(list, list):
| def direct.showbase.PythonUtil.invertDict | ( | D, | |
lossy = False |
|||
| ) |
creates a dictionary by 'inverting' D; keys are placed in the new dictionary under their corresponding value in the old dictionary. It is an error if D contains any duplicate values. >>> old = {'key1':1, 'key2':2} >>> invertDict(old) {1: 'key1', 2: 'key2'}
| def direct.showbase.PythonUtil.invertDictLossless | ( | D | ) |
similar to invertDict, but values of new dict are lists of keys from old dict. No information is lost. >>> old = {'key1':1, 'key2':2, 'keyA':2} >>> invertDictLossless(old) {1: ['key1'], 2: ['key2', 'keyA']}
| def direct.showbase.PythonUtil.isDefaultValue | ( | x | ) |
| def direct.showbase.PythonUtil.itype | ( | obj | ) |
| def direct.showbase.PythonUtil.lerp | ( | v0, | |
| v1, | |||
| t | |||
| ) |
returns a value lerped between v0 and v1, according to t t == 0 maps to v0, t == 1 maps to v1
| def direct.showbase.PythonUtil.lineInfo | ( | baseFileName = 1 | ) |
returns the sourcefilename, line number, and function name of the code that called this function (answers the question: 'hey lineInfo, where am I in the codebase?') see stackEntryInfo, above, for info on 'baseFileName' and return types
| def direct.showbase.PythonUtil.lineTag | ( | baseFileName = 1 , |
|
verbose = 0 , |
|||
separator = ':' |
|||
| ) |
returns a string containing the sourcefilename and line number of the code that called this function (equivalent to lineInfo, above, with different return type) see stackEntryInfo, above, for info on 'baseFileName' if 'verbose' is false, returns a compact string of the form 'fileName:lineNum:funcName' if 'verbose' is true, returns a longer string that matches the format of Python stack trace dumps returns empty string on error
| def direct.showbase.PythonUtil.lineupPos | ( | i, | |
| num, | |||
| spacing | |||
| ) |
use to line up a series of 'num' objects, in one dimension, centered around zero 'i' is the index of the object in the lineup 'spacing' is the amount of space between objects in the lineup
| def direct.showbase.PythonUtil.list2dict | ( | L, | |
value = None |
|||
| ) |
creates dict using elements of list, all assigned to same value
| def direct.showbase.PythonUtil.listToIndex2item | ( | L | ) |
converts list to dict of list index->list item
| def direct.showbase.PythonUtil.listToItem2index | ( | L | ) |
converts list to dict of list item->list index This is lossy if there are duplicate list items
| def direct.showbase.PythonUtil.logBlock | ( | id, | |
| msg | |||
| ) |
| def direct.showbase.PythonUtil.loopGen | ( | l | ) |
| def direct.showbase.PythonUtil.makeFlywheelGen | ( | objects, | |
countList = None , |
|||
countFunc = None , |
|||
scale = None |
|||
| ) |
| def direct.showbase.PythonUtil.makeList | ( | x | ) |
returns x, converted to a list
| def direct.showbase.PythonUtil.makeTuple | ( | x | ) |
returns x, converted to a tuple
| def direct.showbase.PythonUtil.mostDerivedLast | ( | classList | ) |
pass in list of classes. sorts list in-place, with derived classes appearing after their bases
| def direct.showbase.PythonUtil.normalDistrib | ( | a, | |
| b, | |||
gauss = random.gauss |
|||
| ) |
NOTE: assumes a < b Returns random number between a and b, using gaussian distribution, with mean=avg(a, b), and a standard deviation that fits ~99.7% of the curve between a and b. For ease of use, outlying results are re-computed until result is in [a, b] This should fit the remaining .3% of the curve that lies outside [a, b] uniformly onto the curve inside [a, b] ------------------------------------------------------------------------ https://statweb.stanford.edu/~naras/jsm/NormalDensity/NormalDensity.html The 68-95-99.7% Rule ==================== All normal density curves satisfy the following property which is often referred to as the Empirical Rule: 68% of the observations fall within 1 standard deviation of the mean. 95% of the observations fall within 2 standard deviations of the mean. 99.7% of the observations fall within 3 standard deviations of the mean. Thus, for a normal distribution, almost all values lie within 3 standard deviations of the mean. ------------------------------------------------------------------------ In calculating our standard deviation, we divide (b-a) by 6, since the 99.7% figure includes 3 standard deviations _on_either_side_ of the mean.
| def direct.showbase.PythonUtil.pretty_print | ( | tree | ) |
| def direct.showbase.PythonUtil.printListEnum | ( | l | ) |
| def direct.showbase.PythonUtil.printListEnumGen | ( | l | ) |
| def direct.showbase.PythonUtil.printNumberedTyped | ( | items, | |
maxLen = 5000 |
|||
| ) |
print out each item of the list on its own line, with each item numbered on the left from zero
| def direct.showbase.PythonUtil.printNumberedTypes | ( | items, | |
maxLen = 5000 |
|||
| ) |
print out the type of each item of the list on its own line, with each item numbered on the left from zero
| def direct.showbase.PythonUtil.printNumberedTypesGen | ( | items, | |
maxLen = 5000 |
|||
| ) |
| def direct.showbase.PythonUtil.printProfile | ( | filename = PyUtilProfileDefaultFilename , |
|
lines = PyUtilProfileDefaultLines , |
|||
sorts = PyUtilProfileDefaultSorts , |
|||
callInfo = 1 |
|||
| ) |
| def direct.showbase.PythonUtil.printThisCall | ( | ) |
| def direct.showbase.PythonUtil.profiled | ( | category = None , |
|
terse = False |
|||
| ) |
decorator for profiling functions turn categories on and off via "want-profile-categoryName 1" e.g.:: @profiled('particles') def loadParticles(): ... :: want-profile-particles 1
| def direct.showbase.PythonUtil.profileFunc | ( | callback, | |
| name, | |||
| terse, | |||
log = True |
|||
| ) |
| def direct.showbase.PythonUtil.pstatcollect | ( | scope, | |
level = None |
|||
| ) |
| def direct.showbase.PythonUtil.quickProfile | ( | name = "unnamed" | ) |
| def direct.showbase.PythonUtil.r_convertTree | ( | oldTree, | |
| newTree, | |||
| idList | |||
| ) |
| def direct.showbase.PythonUtil.r_pretty_print | ( | tree, | |
| num | |||
| ) |
| def direct.showbase.PythonUtil.randFloat | ( | a, | |
b = 0. , |
|||
rng = random.random |
|||
| ) |
returns a random float in [a, b] call with single argument to generate random float between arg and zero
| def direct.showbase.PythonUtil.randInt32 | ( | rng = random.random | ) |
returns a random integer in [-2147483648..2147483647]. rng must return float in [0..1]
| def direct.showbase.PythonUtil.randUint31 | ( | rng = random.random | ) |
returns a random integer in [0..2^31). rng must return float in [0..1]
| def direct.showbase.PythonUtil.reduceAngle | ( | deg | ) |
Reduces an angle (in degrees) to a value in [-180..180)
| def direct.showbase.PythonUtil.replace | ( | list, | |
| old, | |||
| new, | |||
all = 0 |
|||
| ) |
replace 'old' with 'new' in 'list' if all == 0, replace first occurrence otherwise replace all occurrences returns the number of items replaced
| def direct.showbase.PythonUtil.report | ( | types = [] , |
|
prefix = '' , |
|||
xform = None , |
|||
notifyFunc = None , |
|||
dConfigParam = [] |
|||
| ) |
This is a decorator generating function. Use is similar to a @decorator, except you must be sure to call it as a function. It actually returns the decorator which is then used to transform your decorated function. Confusing at first, I know. Decoration occurs at function definition time. If __dev__ is not defined, or resolves to False, this function has no effect and no wrapping/transform occurs. So in production, it's as if the report has been asserted out. Parameters: types: A subset list of ['timeStamp', 'frameCount', 'avLocation'] This allows you to specify certain useful bits of info: - *module*: Prints the module that this report statement can be found in. - *args*: Prints the arguments as they were passed to this function. - *timeStamp*: Adds the current frame time to the output. - *deltaStamp*: Adds the current AI synched frame time to the output - *frameCount*: Adds the current frame count to the output. Usually cleaner than the timeStamp output. - *avLocation*: Adds the localAvatar's network location to the output. Useful for interest debugging. - *interests*: Prints the current interest state after the report. - *stackTrace*: Prints a stack trace after the report. prefix: Optional string to prepend to output, just before the function. Allows for easy grepping and is useful when merging AI/Client reports into a single file. xform: Optional callback that accepts a single parameter: argument 0 to the decorated function. (assumed to be 'self') It should return a value to be inserted into the report output string. notifyFunc: A notify function such as info, debug, warning, etc. By default the report will be printed to stdout. This will allow you send the report to a designated 'notify' output. dConfigParam: A list of Config.prc string variables. By default the report will always print. If you specify this param, it will only print if one of the specified config strings resolve to True.
| def direct.showbase.PythonUtil.safeRepr | ( | obj | ) |
| def direct.showbase.PythonUtil.safeReprTypeOnFail | ( | obj | ) |
| def direct.showbase.PythonUtil.safeTypeName | ( | o | ) |
| def direct.showbase.PythonUtil.sameElements | ( | a, | |
| b | |||
| ) |
| def direct.showbase.PythonUtil.serialNum | ( | ) |
| def direct.showbase.PythonUtil.solveQuadratic | ( | a, | |
| b, | |||
| c | |||
| ) |
| def direct.showbase.PythonUtil.stackEntryInfo | ( | depth = 0 , |
|
baseFileName = 1 |
|||
| ) |
returns the sourcefilename, line number, and function name of an entry in the stack. 'depth' is how far back to go in the stack; 0 is the caller of this function, 1 is the function that called the caller of this function, etc. by default, strips off the path of the filename; override with baseFileName returns (fileName, lineNum, funcName) --> (string, int, string) returns (None, None, None) on error
| def direct.showbase.PythonUtil.startProfile | ( | filename = PyUtilProfileDefaultFilename , |
|
lines = PyUtilProfileDefaultLines , |
|||
sorts = PyUtilProfileDefaultSorts , |
|||
silent = 0 , |
|||
callInfo = 1 , |
|||
useDisk = False , |
|||
cmd = 'run()' |
|||
| ) |
| def direct.showbase.PythonUtil.startSuperLog | ( | customFunction = None | ) |
| def direct.showbase.PythonUtil.testAlphabetCounter | ( | ) |
| def direct.showbase.PythonUtil.traceFunctionCall | ( | frame | ) |
return a string that shows the call frame with calling arguments. e.g. foo(x=234, y=135)
| def direct.showbase.PythonUtil.traceParentCall | ( | ) |
| def direct.showbase.PythonUtil.typeName | ( | o | ) |
| def direct.showbase.PythonUtil.unescapeHtmlString | ( | s | ) |
| def direct.showbase.PythonUtil.union | ( | a, | |
| b | |||
| ) |
union(list, list):
| def direct.showbase.PythonUtil.uniqueElements | ( | L | ) |
are all elements of list unique?
| def direct.showbase.PythonUtil.uniqueName | ( | name | ) |
| def direct.showbase.PythonUtil.weightedChoice | ( | choiceList, | |
rng = random.random , |
|||
sum = None |
|||
| ) |
given a list of (weight, item) pairs, chooses an item based on the weights. rng must return 0..1. if you happen to have the sum of the weights, pass it in 'sum'.
| def direct.showbase.PythonUtil.weightedRand | ( | valDict, | |
rng = random.random |
|||
| ) |
pass in a dictionary with a selection -> weight mapping. E.g.:: {"Choice 1": 10, "Choice 2": 30, "bear": 100} - Weights need not add up to any particular value. - The actual selection will be returned.
| appendStr |
| bound |
| clamp = bound |
| classobj |
| configIsToday |
| deeptype |
| dtoolSuperBase = None |
| exceptionLogged |
| exceptionLoggedNotify = None |
| fastRepr |
| flywheel |
| def ftc = formatTimeCompact |
| def fte = formatTimeExact |
| def getBase |
| def getRepository |
| tuple GoldenRatio = (1. + math.sqrt(5.)) / 2. |
| histogramDict |
| def imp = import_module('imp') |
| import_module |
| def importlib = imp.new_module("importlib") |
| invertDict |
| invertDictLossless |
| itype |
| lerp |
| logBlock |
| loopGen |
| makeList |
| makeTuple |
| list movedDumpFuncs = [] |
| list movedLoadFuncs = [] |
| list movedOpenFuncs = [] |
| def nullGen |
| def printReverseStack |
| def printStack |
| def printVerboseStack |
| profiled |
| dictionary profileFilename2file = {} |
| dictionary profileFilename2marshalData = {} |
| profileFilenameList = Stack() |
| profileFilenames = set() |
| pstatcollect |
| string PyUtilProfileDefaultFilename = 'profiledata' |
| int PyUtilProfileDefaultLines = 80 |
| list PyUtilProfileDefaultSorts = ['cumulative', 'time', 'calls'] |
| rad180 = math.pi |
| float rad270 = 1.5 * math.pi |
| int rad360 = 2. * math.pi |
| int rad90 = math.pi / 2. |
| report |
| safeRepr |
| safeReprNotify = None |
| safeTypeName |
| superLogFile = None |
| typeName |
| xrange = range |


Breathing is the set of adjustments that dancers make at various points during and between calls. The precise definition of when and how to apply these adjustments does not exist. It may be that no consistent set of rules could be defined. For example, a strong measure of the correctness of the program is the degree of similarity between actual dancers performing a call and the animation produced for the same call.
For example, one desired rule might be that the physical distance between dancers exactly matches the number of grid spots, or half-spots, that separate them in their formation.
Moreover, some calls alter In some cases a formation will change and dancers will typically not move at all, even though breathing rules imply that they should. For example, from a squared set, having the heads pass the ocean changes the set from a 4x4 arragnement to a 4x3, triple line/wave formation. The side dancers should move a half-position forward to keep their distance from the heads correct, but few dancers do.
In other cases, dancers move to alter the physical distance between themselves and at least one other dancer, even though they have not changed their logical relationship with one another. For example, from parallel waves, if you have the centers hinge, the end dancers will move a half position to make diamonds even though they are still ends of lines.
In creating Sets in Motion I have made every effort to compartmentalize the dancing rules so that the rules you have to write to define a call, while they may be more mathematical than the words in the Callerlab definition, still follow closely to the content of the original words. You should not have to be aware of a large number of additional rules and requirements when you sit down to write a new definition. The rules about how to perform calls that are general across calls for real dancers should be coded into the program in general and should not have to be incorporated explicitly into the call definitions themselves.
This has proven to be quite difficult. Humans are equipped with powerful intuitions about geometry that they do not think about and will subconsciously accumulate rules of behavior on the dance floor without ever having heard a specific rule described. Often these intuitions are incomplete when viewed over all square dance levels and situations, but work just fine for most circumstances. Humans are also adept at adorning general intuitions with specific exceptions, again without the need for explicit teaching.
I believe that the success of human intuition and the daunting nature of whatever explicit rules underly those intuitions have hobbled our ability to agree on a succinct set of rules to teach dancers. As a result, at almost any time and especially after we learn a new level, we can encounter a novel situation where our own internalized rules break down and direct us to the wrong spot.
Computer programs possess no intuition (at least none that seem to help the programs learn to dance, anyway). They must be given explicit instruction for every twitch a simulated dancer must emit. Whatever rules that are derived for this purpose can then at least be discussed and compared to our own experience to decide whether those rules correspond to actual square dancing.
The Callerlab Basic and Mainstream Definitions call out several rules related to breathing: the Same Position Rule, the Facing Couples Rule, the Ocean Wave Rule, the Squared Set Convention and the Circle Rule. Sets in Motion treats each of these rules somewhat differently.
The Same Position Rule is applied automatically. The definition of the rule begins "If two dancers are required to occupy the same position at the end of a call, ...". The difficulty arises when you consider that many calls are written in terms of other calls. Also, some calls such as Percolate when called from an Eight Chain Thru formation, seem to be defined in a way that could not work unless this rule is applied at points during the course of the Percolate itself. Of course, to complicate matters, other calls such as Plenty are danced without the Same Position Rule being applied in the middle of the second part (which are 2 split circulates). I have decided in Sets in Motion that the Same Position Rule is applied after each Part of each call, but not between actions within a single part of a call.
The Facing Couples and Ocean Wave Rules are not applied automatically. These rules are instead coded into the appropriate call definitions. I believe that this is consistent with the trend to add language to Callerlab definitions to clarify that a particular call uses these rules.
The Squared Set Convention and the related Circle Rule are also not applied automatically. Instead, a rather complex conditional test is written into the ANYONE ANYTHING (directional) call. These rules can only apply in situations where the caller is designating some dancers to do a call, so it seems only natural that the program not clutter general processing with tests that could only apply to a single definition anyway. The "ANYONE ANYTHING" call is itself not a Callerlab call according to their nomenclature, but rather a convenient way to build dancer designations into the general Sets in Motion framework.
You should understand that any rules described here are completely unofficial and represent my best understanding of how dancers should adjust their positions.
These are not considered the 'rules' of breathing, but rather the principles that motivate the rules I have formulated. The rules are an attempt to generalize the habit of describing the 'final formation' of a call as if it were a part of the definition, even when the call does not explicitly say so. Either the general rules exist, or some definitions need to be amended to allow for general rules. The alternative is an exhaustive enumeration of starting and finishing formations for all calls. Clearly, dancers do not need this enumeration to agree on what the final formations are, even in situations where they have never seen the call before.
To be sure, there are calls whose definitions specify no specific ending formation, relying on 'blending' with the next call to determine what to do. For now, Sets in Motion makes no attempt to figure out that blending process. The Caller's Guide describes those calls, how the program handles them, and what you can say to achieve the understood formation that real dancers would use.
For the overwhelming majority of calls, it is understood that the final formation of the call does not depend on the next words out of the caller's mouth.
Another consideration of these principles and rules is that they should apply wherever possible to asymmetric situations. Many situations can arise in asymmetric calling that would never appear in symmetric calling. While Callerlab does not explicitly say so, we assume that callers will generally designate dancers in symmetric groups and all call definitions are written to produce symmetric outcomes from symmetric starting formations. However, asymmetric calling is popular and a number of callers enjoy creating asymmetric choreography.
This may seem obvious, but most of the geometry Sets in Motion uses to arrange dancers relies on this fact. The distance between dancers in a couple or mini-wave is the same as that between parallel lines or waves. If a call, considered by itself, would push dancers out of this arrangement, breathing rules tell them how to adjust to restore these distances or tell them exceptions where they must violate this rule.
One corollary of this statement is that if you direct a subset of dancers to do a call that does not change their shape (between starting and ending formations), then the uninvolved never need to adjust their position. Conversely, if a subset call does change shape, then the uninvolved dancers will typically have to adjust in some manner.
Depending on the call and initial dancer arrangement sometimes the uninvolved dancers remain stationary and the involved dancers must adjust.
In general, breathing finds a compact arrangement of dancers that best maintains side-to-side and front-to-back distances that will make boxes square. There is no limit on the amount of lateral or longitudinal (front-to-back) motion a dancer must perform in order to satisfy these rules. For example, starting in a tidal wave, having the center 6 counter-rotate means that the very end dancers must end with only 1 dancer-distance between their inside hands. Before the call there were six dancers between them! They actually have to move further than most of the dancers involved in the call! And if the caller were to have the center 6 do another counter-rotate those ininvolved dancers would have to spread apart again just as far!
Every dancer has a 'personal space' that extends around them. The rules of breathing restore this space whenever a call would otherwise place them too close to another dancer.
The way to think of this space is as a diamond inscribed within a square. The diamond can never overlap with the diamond-shaped central zone of any other dancer's personal space. The points of this diamond at each side of the dancer represents the center of each hand. Thus, adjacent dancers have their diamonds just touching at the points. The diamond extends the same distance in front of their nose and behind them as well. Parallel lines or waves have personal-space diamonds touching just at the front and back points.
The large square around a dancer is a little more permissive. The only way the square around a given dancer can overlap with the personal diamond of another dancer is when they are standing at right angles, such as the centers of a star or thar. Thus, we can have up to four dancers touching hands at the same spot.
In general, if a call does not place dancers touching hands at right angles, the rules of breathing will not do so. If dancers are too far apart, they will move together until their personal-space squares are touching, but no closer.
The most complicated situations arise when one group of dancers is 'inside' and doing something different from whatever dancers are 'outside'. In general, the 'inside' dancers will hold their final positions and the 'outside' dancers will close in or spread apart, as needed.
<< This section is under construction and is incomplete. >>
The first rule of breathing that is not described by Callerlab, but is implemented by Sets in Motion can be called the Handhold Rule or less generally the Diamond Point Rule (the most common situation where it applies). This rule can, under the right circumstances, apply to all the dancers on the floor. Essentially, any dancer who finds themselves standing with a shoulder toward a dancer who has an appropriate hand-hold should step slightly forward or back to put their body in line with the hand-hold.
To find these "appropriate handholds" the only dancers that matter are dancers with one hand just touching a center line and the hand-hold that matters is any they have with their other hand. For example, at home positions, all dancers have one hand touching a center line (sides are touching the side-to-side center line and the heads are touching the front-to-back center line). However, none of these dancers has anyone by their other hand, so no one adjusts. Suppose now, though, that we have the sides face and the heads pass the ocean. Now the heads are all standing on the front-to-back center line, but the head girls are just touching the side-to-side center line.  So now the sides must step back to make diamond points by aligning themeselves exactly between the head boys and girls.
It doesn't matter whether the hand hold is in a couple or a mini-wave, nor does it matter that the hand-hold dancers are standing on the other center line. Suppose we have facing boy-boy-girl-girl lines and have the boys bend the line. We now have the right-hand dancer in each couple touching a center line. So each girl couple has to back up to align themselves with the boys and the boys have to back up slightly to align themselves with the girls. This creates one variation of the phantom formation (as illustrated in the Callerlab Approved Formations document - no. 62 in the August, 2009 version)..
When dancers make this adjustment, it does not alter the fact that they are part of a line formation, nor does it alter whether they are a center or an end of that line. This is why we say that diamond points are ends of lines, even though the points on the same end of the line are clearly standing too far apart from one another for lines.
Note that dancers who had to make this adjustment will undo this adjustment if some following call eliminates the hand-hold they were centered on. For example, calling "Centers Hinge" from twin diamonds should see the end dancers move closer together to make the parallel lines or waves that are the proper final formation after this call.


Common
SimpleProgrammer
C++
Fluent C++
Marius Bancila's blog
Bartek's coding blog
Andrzej's C++ blog
Python
Real Python
|
Python Tips
Java
Vanilla Java
JS
JavaScript playground


add_key - add a key to the kernel's key management facility
#include <sys/types.h>
#include <keyutils.h>
key_serial_t add_key(const char *type, const char *description,
const void *payload, size_t plen,
key_serial_t keyring);
No glibc wrapper is provided for this system call; see NOTES.
add_key() creates or updates a key of the given type and
description, instantiates it with the payload of length
plen, attaches it to the nominated keyring, and returns the
key's serial number.
The key may be rejected if the provided data is in the wrong
format or it is invalid in some other way.
If the destination keyring already contains a key that
matches the specified type and description, then, if the key
type supports it, that key will be updated rather than a new key being
created; if not, a new key (with a different ID) will be created and it will
displace the link to the extant key from the keyring.
The destination keyring serial number may be that of a
valid keyring for which the caller has write permission.
Alternatively, it may be one of the following special keyring IDs:
- KEY_SPEC_THREAD_KEYRING
- This specifies the caller's thread-specific keyring
(thread-keyring(7)).
- KEY_SPEC_PROCESS_KEYRING
- This specifies the caller's process-specific keyring
(process-keyring(7)).
- KEY_SPEC_SESSION_KEYRING
- This specifies the caller's session-specific keyring
(session-keyring(7)).
- KEY_SPEC_USER_KEYRING
- This specifies the caller's UID-specific keyring
(user-keyring(7)).
- KEY_SPEC_USER_SESSION_KEYRING
- This specifies the caller's UID-session keyring
(user-session-keyring(7)).
The key type is a string that specifies the key's type. Internally, the
kernel defines a number of key types that are available in the core key
management code. Among the types that are available for user-space use and can
be specified as the type argument to add_key() are the
following:
- "keyring"
- Keyrings are special key types that may contain links to sequences of
other keys of any type. If this interface is used to create a keyring,
then payload should be NULL and plen should be zero.
- "user"
- This is a general purpose key type whose payload may be read and updated
by user-space applications. The key is kept entirely within kernel memory.
The payload for keys of this type is a blob of arbitrary data of up to
32,767 bytes.
- "logon" (since Linux 3.3)
- This key type is essentially the same as "user", but it
does not permit the key to read. This is suitable for storing payloads
that you do not want to be readable from user space.
This key type vets the description to ensure that it is
qualified by a "service" prefix, by checking to ensure that the
description contains a ':' that is preceded by other characters.
- "big_key" (since Linux 3.13)
- This key type is similar to "user", but may hold a
payload of up to 1 MiB. If the key payload is large enough, then it
may be stored encrypted in tmpfs (which can be swapped out) rather than
kernel memory.
For further details on these key types, see
keyrings(7).
On success, add_key() returns the serial number of the key it created or
updated. On error, -1 is returned and errno is set to indicate the
cause of the error.
- EACCES
- The keyring wasn't available for modification by the user.
- EDQUOT
- The key quota for this user would be exceeded by creating this key or
linking it to the keyring.
- EFAULT
- One or more of type, description, and payload points
outside process's accessible address space.
- EINVAL
- The size of the string (including the terminating null byte) specified in
type or description exceeded the limit (32 bytes and 4096
bytes respectively).
- EINVAL
- The payload data was invalid.
- EINVAL
- type was "logon" and the description was
not qualified with a prefix string of the form
"service:".
- EKEYEXPIRED
- The keyring has expired.
- EKEYREVOKED
- The keyring has been revoked.
- ENOKEY
- The keyring doesn't exist.
- ENOMEM
- Insufficient memory to create a key.
- EPERM
- The type started with a period ('.'). Key types that begin with a
period are reserved to the implementation.
- EPERM
- type was "keyring" and the description
started with a period ('.'). Keyrings with descriptions (names) that begin
with a period are reserved to the implementation.
This system call first appeared in Linux 2.6.10.
This system call is a nonstandard Linux extension.
No wrapper for this system call is provided in glibc. A wrapper is provided in
the libkeyutils package. When employing the wrapper in that library,
link with -lkeyutils.
The program below creates a key with the type, description, and payload
specified in its command-line arguments, and links that key into the session
keyring. The following shell session demonstrates the use of the program:
$ ./a.out user mykey "Some payload"
Key ID is 64a4dca
$ grep '64a4dca' /proc/keys
064a4dca I--Q--- 1 perm 3f010000 1000 1000 user mykey: 12
#include <sys/types.h>
#include <keyutils.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
key_serial_t key;
if (argc != 4) {
fprintf(stderr, "Usage: %s type description payload\n",
argv[0]);
exit(EXIT_FAILURE);
}
key = add_key(argv[1], argv[2], argv[3], strlen(argv[3]),
KEY_SPEC_SESSION_KEYRING);
if (key == -1) {
perror("add_key");
exit(EXIT_FAILURE);
}
printf("Key ID is %lx\n", (long) key);
exit(EXIT_SUCCESS);
}
keyctl(1), keyctl(2), request_key(2), keyctl(3),
keyrings(7), keyutils(7), persistent-keyring(7),
process-keyring(7), session-keyring(7),
thread-keyring(7), user-keyring(7),
user-session-keyring(7)
The kernel source files
Documentation/security/keys/core.rst and
Documentation/keys/request-key.rst (or, before Linux 4.13, in the
files Documentation/security/keys.txt and
Documentation/security/keys-request-key.txt).
This page is part of release 5.05 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the latest
version of this page, can be found at https://www.kernel.org/doc/man-pages/.


Welcome back
to the social interactions study!
Brief description of interaction:
What time did the interaction start?
(Report your interactions
as soon as possible!)
How long did the interaction last?
(in minutes)
Where did the interaction occur?
Student home/own home
Family home
Work/School
Recreation (cafe, cinema, etc)
Other
How?
In person (face-to-face)
Per telephone
Via video (e.g. Skype)
Who was present?
One other
Multiple people,
primary other
Multiple people,
no primary other
How many alcoholic drinks were consumed?
(within 3hrs before or during the interaction)