Preparation time
30 mins to 1 hour
Cooking time
30 mins to 1 hour
Serves
Makes 18 breadsticks
Dietary
These stunning breadsticks are made with a mixture of white and rye flour dough with a distinct bay background flavour - with caraway seed, Kalamata olives and smoked peperoncino flakes added too. The sticks are decorated with black poppy seeds on one side and coarse semolina on the other before being twisted.
Put the flours, yeast, salt, olive oil and bay extract into a large bowl. Measure out 450g/1lb of water. Add enough of the water to make a soft, but not sticky dough. You may not need it all.
Knead well for 10 minutes by hand on a lightly floured work surface, or for five minutes if using an electric mixer fitted with a dough hook.
Put the dough in a bowl covered with lightly oiled cling film. Leave to rise for 15 minutes.
Set the oven to 150C/300F/Gas 2. Using an oven thermometer to measure the temperature, adjust the temperature to give a reading of 160C/325F in the centre of the oven.
Chop the olives into fine strips and set aside on kitchen paper to dry. (If you simply chop the olives randomly, the chunks have a tendency to fall out of the sticks. However if you cut them into fine strips, they go into the dough much better and stay in the sticks.)
Turn out the dough onto a lightly floured work surface and divide into four equal portions.
Push out into rectangles about 20cm/8in long. Roll flat with a rolling pin and, if you have them, rolling guides (these are plastic sticks that can be bought from specialist baking stores. You simply place the rolling guide sticks parallel to each other at a 90 degree angle to your rolling pin so that the rolling pin rolls initially over the guide sticks and enables the dough to be rolled to the same depth as the guides). You now want to aim to roll to 30cm/12in along one side. Cover loosely with a tea towel and leave to rest for five minutes.
Sprinkle one strip of dough with caraway seeds, olives and peperoncino flakes. Place another strip of dough on top and roll to 40cm/16in. Sprinkle with coarse semolina, clear up any excess that's on the work surface and turn the dough over. Sprinkle with poppy seeds and then clear up any excess seeds.
Mark strips using the wider width of the rolling guide and, using a large cook’s knife, cut 18 strips. Twist and leave on an oiled and floured baking tray with the end overhanging.
Repeat with the remaining dough. Leave to rest for 10 minutes. Trim to the length of the baking tray.
Bake until the breadsticks are lightly golden-brown and feel firm to the touch. Reduce the heat to 140C/275F/Gas 1 and check the breadsticks every 10 minutes, checking each time for colour and moisture.
Do the ‘spec check’. This is when you open the door every ten minutes which lets the moisture out. Whenever I open an oven door a blast of moisture condenses on my spectacles, which is generally a right pain. However, in the case of breadsticks it is quite handy, because it indicates that the sticks aren’t fully dried out. Once I can open the door without steaming up, I know the sticks are dry. Bake the sticks on the higher temperature until the colour is correct, then continue on the lower temperature until they pass the ‘spec check’. The total cooking time will be up to 40 minutes.
Remove from the oven and leave to cool on wire rack.


referenced
by Christina Chortaria at 2021-02-08 17:17:00.merged
by Christina Chortaria at 2021-02-08 17:17:00.closed
by Christina Chortaria at 2021-02-08 17:17:00.labeled
by James R. Griffin III at 2021-02-08 21:37:27.labeled
by James R. Griffin III at 2021-02-08 21:37:27.assigned
by James R. Griffin III at 2021-02-08 21:37:27.closed
by Trey Pendragon at 2021-02-08 17:46:34.I ran the publishing job from alma last week. There should be an event we can grab from aws logs to use as a fixture, and files on the sftp box. If you view the publishing job history and set the date range you can see when the job finished.
referenced
by None at 2021-02-08 19:06:04.base_ref_force_pushed
by None at 2021-02-08 19:06:02.Coverage increased (+0.4%) to 82.944% when pulling 9ea063beeb3685523afb9e8bcf2d9e8aa96d92d6 on alma into 6bd9ab6f3c077aa56df129e003101b28e07ff3ce on main.
head_ref_force_pushed
by None at 2021-02-08 19:06:02.labeled
by None at 2021-02-08 19:53:19.Coverage decreased (-0.5%) to 82.49% when pulling ef8faaa37a0c625052640c799d0db1c21909280c on landosolrconfigxml into 9ea063beeb3685523afb9e8bcf2d9e8aa96d92d6 on alma.
base_ref_force_pushed
by None at 2021-02-08 19:06:02.head_ref_force_pushed
by Hector Correa at 2021-02-08 20:14:39.closed
by Hector Correa at 2021-02-08 21:47:36.head_ref_deleted
by Hector Correa at 2021-02-08 21:47:45.Coverage remained the same at 82.944% when pulling 3fd54dba6ee2729e161b1fcf7b8b9f943f0c6373 on landosolrconfigxml_v2 into 9ea063beeb3685523afb9e8bcf2d9e8aa96d92d6 on alma.
ready_for_review
by Hector Correa at 2021-02-08 21:54:07.I've submitted at PR that will allow us to download a specific set of config files e.g. production vs staging, and another PR that fixes the config in the staging files.
If that works, then I can submit a separate PR to fix the production and production-alt environments.
referenced
by Hector Correa at 2021-02-08 16:38:22.Coverage remained the same at 100.0% when pulling f3a58526ae18e94fd5a6e6395ac118d9984f98b4 on dependabot/bundler/carrierwave-2.1.1 into 96ec618fe91b6caa901aca08837b94f555e6ec19 on main.
labeled
by None at 2021-02-08 19:28:34.labeled
by None at 2021-02-08 19:28:34.head_ref_force_pushed
by None at 2021-02-08 13:43:23.head_ref_force_pushed
by None at 2021-02-08 15:42:12.closed
by Francis Kayiwa at 2021-02-08 20:17:46.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 17:16:19.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 17:23:30.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 17:34:51.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 17:56:31.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 18:35:09.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 19:01:47.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 19:08:33.referenced
by Francis Kayiwa at 2021-02-08 20:17:46.merged
by Francis Kayiwa at 2021-02-08 20:17:46.closed
by Francis Kayiwa at 2021-02-08 20:17:47.head_ref_deleted
by Francis Kayiwa at 2021-02-08 20:17:47.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 22:59:32.referenced
by Francis Kayiwa at 2021-02-09 00:54:33.merged
by Francis Kayiwa at 2021-02-09 00:54:33.closed
by Francis Kayiwa at 2021-02-09 00:54:33.head_ref_deleted
by Francis Kayiwa at 2021-02-09 00:54:34.referenced
by Christina Chortaria at 2021-02-08 15:07:05.merged
by Christina Chortaria at 2021-02-08 15:07:05.closed
by Christina Chortaria at 2021-02-08 15:07:05.head_ref_force_pushed
by Hector Correa at 2021-02-08 16:38:22.ready_for_review
by Hector Correa at 2021-02-08 21:53:03.referenced
by Trey Pendragon at 2021-02-08 18:02:01.merged
by Trey Pendragon at 2021-02-08 18:02:01.closed
by Trey Pendragon at 2021-02-08 18:02:01.head_ref_deleted
by Trey Pendragon at 2021-02-08 18:02:02.referenced
by Christina Chortaria at 2021-02-08 18:44:52.merged
by Christina Chortaria at 2021-02-08 18:44:52.closed
by Christina Chortaria at 2021-02-08 18:44:52.head_ref_deleted
by Christina Chortaria at 2021-02-08 18:44:53.deployed
by Trey Pendragon at 2021-02-08 18:53:35.closed
by Trey Pendragon at 2021-02-08 19:54:59.closed
by Trey Pendragon at 2021-02-08 19:55:02.@faithc Safe to close this?
Yes, I think so. Thanks.
Actually, sorry, this is not resolved as other component-specific notes and elements are not displaying; rather collection-level elements and notes appear. For example, see https://findingaids-beta.princeton.edu/catalog/C0140_c03411 and https://findingaids.princeton.edu/collections/C0140/c03411, specifically creator, acquisition, and names and subjects. Related matter: the subjects associated with this specific component appear in the Find Related Materials as opposed to the record/main body of the page. Find Related Materials should only have the collection-level subjects.
Thank you for the example!
So "Find Related Materials" should only have collection-level subjects, and the component page should have the subjects for that component? I'm gonna make another ticket for that.
Yes, I guess so since those tabs at the top should only have collection-level notes. Thanks.
mentioned
by None at 2021-02-08 18:01:39.subscribed
by None at 2021-02-08 18:01:39.closed
by Trey Pendragon at 2021-02-08 18:04:41.reopened
by None at 2021-02-08 23:16:33.labeled
by Trey Pendragon at 2021-02-08 23:32:01.@faithc @ccleeton I pushed up a test to https://pulfalight-staging.princeton.edu. Could you take a look when you get a chance and see if that's working more the way you expect?
Hmm now the results for Frederick Vinton are slightly different. There are now 4 results on each site; however these are the results on pulfalight, and the resulting list on the current site includes these collections. Aside from the 3 that overlap, pulfalight includes MC248- I'm not sure where his name shows up-and pulfa 2 includes AC123, which seems more relevant.
AC123 matches in PULFA2 because of a bioghist note which doesn't seem to be in aspace. See https://findingaids.princeton.edu/collections/AC123#description.
MC248 I think is matching because there are authors in there with both Frederick and Vinton in their names, they're just not super close. I'm not sure why it's ranked higher than TC011.
Ah, right. The bioghist notes are now associated with agent records; however we want those notes to be displayed and searchable in finding aids too. Is that doable?
assigned
by Trey Pendragon at 2021-02-08 19:55:14.mentioned
by None at 2021-02-08 19:55:43.subscribed
by None at 2021-02-08 19:55:43.mentioned
by Christa Cleeton at 2021-02-08 19:55:44.subscribed
by Christa Cleeton at 2021-02-08 19:55:44.Yeah this is because they're in the EAD as both creator and collector. Should we make sure not to index collectors?
Hmm, it shouldn't be listed in the finding aid as both so perhaps something that needs to be remedied in ASpace? There will be cases when the creator and collector differ so not indexing the collectors wouldn't work.
I can either put them in different display fields (Collector: yada yada, Creator: yada yada), or I can keep them both in creator and make it so there's only unique strings. Which would you prefer? Also, blocking release?
Yeah, I guess display in different fields. Not sure why that data would be in ASpace twice though in this specific case, and whether this might be a larger issue. And no, don't think so?
Yeah in this case it may be a migration issue. https://aspace.princeton.edu/staff/resources/3950#tree::resource_3950 is the resource (mss repository)
Ok, I see. This might need review later on; but yeah, for now I think displaying them in different fields makes sense. Thanks. (And ok, I'm signing off now, dammit! haha)
milestoned
by None at 2021-02-08 23:19:09.renamed
by Trey Pendragon at 2021-02-08 23:38:03.renamed
by Trey Pendragon at 2021-02-08 23:38:50.


When you publish a new frame in a shared story you'll not able to edit or delete it in the future, so you should read it one last time before confirm!


ROOSTERS A film review by James Berardinelli Copyright 1994 James Berardinelli
Rating (0 to 10): 8.0
Date Released: undetermined (Summer 1994) Running Length: 1:35 Rated: not yet rated (Language, mature themes, nudity)
Starring: Edward James Olmos, Sonia Braga, Maria Conchita Alonso, Danny Nucci, Sarah Lassez, Valente Rodriguez Director: Robert M. Young Screenplay: Milcha Sanchez-Scott based on her play Music: David Kitay U.S. distribution not yet decided
It has been my experience that many motion pictures suffer somewhat in retrospect. The further one gets from the theater, the more flaws come to light. With ROOSTERS, however, the opposite is true. The passage of time allows a viewer an opportunity to consider and digest. Those who do not enjoy interpreting certain film elements, and thus drawing their own conclusions, would do better to stay away from ROOSTERS.
Most of ROOSTERS takes place on the land of the Morales family near the Arizona/Mexico border. Here, Juana Morales (Sonia Braga), along with her sister-in-law Chata (Maria Conchita Alonso), is awaiting the return of her husband Gallo (Edward James Olmos), who has been in prison for the last seven years serving time for murder. Juana and Gallo have two children--Hector (Danny Nucci) and Angela (Sarah Lassez), who view their father's return differently. Hector is resentful, while Angie waits patiently and in open awe that HE is coming home.
 Gallo went to prison because he murdered a man over a prize bird, and the first thing he thinks about after getting out is how to raise a new breed of flying, jumping killers. This is a person who cares about one thing, and one thing only--his roosters. As we learn during the course of the film, there is nothing he won't sacrifice for them.
One of ROOSTERS' great strengths is its development of character relationships. Accomplished with subtlety and insight, and just enough ambiguity to keep us wondering about certain aspects, this is by far the highlight of Milcha Sanchez-Scotts script. There are several instances when incest is hinted at, but nothing is explicitly revealed. Each member of the audience must make his or her own decision about the truth.
Symbolism abounds, both religious and secular. The rooster, representative of machismo, plays a central role of all that transpires (as one might guess from the films title. Gallo continually equates his birds with his manhood, and the willingness to fight and be bloodied with the maturation process. His opinion of his son is linked to the young mans ability to handle to cocks.
Angela, the daughter to whom Gallo pays no heed, is in a state of arrested development. At fifteen years of age, she wants to grow younger. Childhood is her refuge, and the encroaching physical changes of becoming a woman frighten her. She seeks refuge in religious artifacts and a mystical world of her own invention, where she intercedes with saints and converses with angels.
ROOSTERS deals with the themes of freedom versus captivity, love versus obsession, and innocence versus reality. The climax toward which all of these build is possibly inevitable, and certainly foreshadowed, yet it is nevertheless the most powerful single moment of the motion picture. Little has been resolved as the final credits roll, and it's up to the viewer to decide exactly what happened, and what will come next.
If ROOSTERS has an obvious flaw, it lies in the dialogue, which is often too flowery or intellectual. The author is taking poetic license to get across her higher meaning, but on more than one occasion, a line is jarringly inappropriate for the speaker or the circumstances in which it is spoken.
The principal actors all do fine jobs, but the performance of newcomer Sarah Lassez is a standout. When she is on screen, she transfixes the audience with her blend of innocence and sensuality. Edward James Olmos, a seasoned veteran, has scene after scene stolen away from him by his much younger co-star.
ROOSTERS delves into Latino traditions to uncover universal themes. Adapted from a play, with an expectedly slow pace for a story making that transition, this movie holds the attention of its audience by its depth of meaning and richness of characters. ROOSTERS is not effortless entertainment, but it will reward those willing to absorb what it has to say, and the manner in which it says it.
- James Berardinelli<EMAIL_ADDRESS>.
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


Gecode::Int::Sorted Namespace Reference
Sorted propagators More...
Classes | |
| class | Rank |
| Storage class for mininmum and maximum of a variable. More... | |
| class | SccComponent |
| Representation of a strongly connected component. More... | |
| class | OfflineMinItem |
| Item used to construct the OfflineMin sequence. More... | |
| class | OfflineMin |
| Offline-Min datastructure Used to compute the perfect matching between the unsorted views x and the sorted views y. More... | |
| class | TupleMaxInc |
| Index comparison for ViewArray<Tuple>. More... | |
| class | TupleMaxIncExt |
| Extended Index comparison for ViewArray<Tuple>. More... | |
| class | TupleMinInc |
| View comparison on ViewTuples. More... | |
| class | ViewPair |
| Pair of views. More... | |
| class | TupleMinIncExt |
| Extended view comparison on pairs of views. More... | |
| class | Sorted |
| Bounds consistent sortedness propagator. More... | |
Functions | |
| template<class View > | |
| bool | glover (ViewArray< View > &x, ViewArray< View > &y, int tau[], int phi[], OfflineMinItem sequence[], int vertices[]) |
| Glover's maximum matching in a bipartite graph. | |
| template<class View > | |
| bool | revglover (ViewArray< View > &x, ViewArray< View > &y, int tau[], int phiprime[], OfflineMinItem sequence[], int vertices[]) |
| Symmetric glover function for the upper domain bounds. | |
| template<class View > | |
| void | computesccs (ViewArray< View > &x, ViewArray< View > &y, int phi[], SccComponent sinfo[], int scclist[]) |
| Compute the sccs of the oriented intersection-graph. | |
| template<class View , bool Perm> | |
| bool | narrow_domx (Space &home, ViewArray< View > &x, ViewArray< View > &y, ViewArray< View > &z, int tau[], int[], int scclist[], SccComponent sinfo[], bool &nofix) |
| Narrowing the domains of the x variables. | |
| template<class View > | |
| bool | narrow_domy (Space &home, ViewArray< View > &x, ViewArray< View > &y, int phi[], int phiprime[], bool &nofix) |
| Narrowing the domains of the y views. | |
| template<class View , bool Perm> | |
| void | sort_sigma (ViewArray< View > &x, ViewArray< View > &z) |
| Build . | |
| template<class View , bool Perm> | |
| void | sort_tau (ViewArray< View > &x, ViewArray< View > &z, int tau[]) |
| Build . | |
| template<class View > | |
| bool | normalize (Space &home, ViewArray< View > &y, ViewArray< View > &x, bool &nofix) |
| Performing normalization on the views in y. | |
| template<class View > | |
| bool | perm_bc (Space &home, int tau[], SccComponent sinfo[], int scclist[], ViewArray< View > &x, ViewArray< View > &z, bool &crossingedge, bool &nofix) |
| Bounds consistency on the permutation views. | |
| template<class View , bool Perm> | |
| ExecStatus | bounds_propagation (Space &home, Propagator &p, ViewArray< View > &x, ViewArray< View > &y, ViewArray< View > &z, bool &repairpass, bool &nofix, bool &match_fixed) |
| Perform bounds consistent sortedness propagation. | |
| template<class View , bool Perm> | |
| bool | check_subsumption (ViewArray< View > &x, ViewArray< View > &y, ViewArray< View > &z, bool &subsumed, int &dropfst) |
| Subsumption test. | |
| template<class View , bool Perm> | |
| bool | array_assigned (Space &home, ViewArray< View > &x, ViewArray< View > &y, ViewArray< View > &z, bool &subsumed, bool &match_fixed, bool &, bool &noperm_bc) |
| Check for assignment of a variable array. | |
| template<class View > | |
| bool | channel (Space &home, ViewArray< View > &x, ViewArray< View > &y, ViewArray< View > &z, bool &nofix) |
| Channel between x, y and z. |
Detailed Description
Sorted propagators
Function Documentation
| bool Gecode::Int::Sorted::glover | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | y, | |||
| int | tau[], | |||
| int | phi[], | |||
| OfflineMinItem | sequence[], | |||
| int | vertices[] | |||
| ) | [inline] |
Glover's maximum matching in a bipartite graph.
Compute a matching in the bipartite convex intersection graph with one partition containing the x views and the other containing the y views. The algorithm works with an implicit array structure of the intersection graph.
Union-Find Implementation of F.Glover's matching algorithm.
The idea is to mimick a priority queue storing x-indices , s.t. the upper domain bounds are sorted where is the top element
Definition at line 55 of file matching.hpp.
| bool Gecode::Int::Sorted::revglover | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | y, | |||
| int | tau[], | |||
| int | phiprime[], | |||
| OfflineMinItem | sequence[], | |||
| int | vertices[] | |||
| ) | [inline] |
Symmetric glover function for the upper domain bounds.
Definition at line 114 of file matching.hpp.
| void Gecode::Int::Sorted::computesccs | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | y, | |||
| int | phi[], | |||
| SccComponent | sinfo[], | |||
| int | scclist[] | |||
| ) | [inline] |
Compute the sccs of the oriented intersection-graph.
An y-node and its corresponding matching mate form the smallest possible scc, since both edges and are both contained in the oriented intersection graph.
Hence a scc containg more than two nodes is represented as an array of SccComponent entries, .
Parameters scclist ~ resulting sccs
Definition at line 54 of file narrowing.hpp.
| bool Gecode::Int::Sorted::narrow_domx | ( | Space & | home, | |
| ViewArray< View > & | x, | |||
| ViewArray< View > & | y, | |||
| ViewArray< View > & | z, | |||
| int | tau[], | |||
| int | [], | |||
| int | scclist[], | |||
| SccComponent | sinfo[], | |||
| bool & | nofix | |||
| ) | [inline] |
Narrowing the domains of the x variables.
Due to the correspondance between perfect matchings in the "reduced" intersection graph of x and y views and feasible assignments for the sorted constraint the new domain bounds for views in x are computed as
- lower bounds: where is the leftmost neighbour of
- upper bounds: where is the rightmost neighbour of
Definition at line 130 of file narrowing.hpp.
| bool Gecode::Int::Sorted::narrow_domy | ( | Space & | home, | |
| ViewArray< View > & | x, | |||
| ViewArray< View > & | y, | |||
| int | phi[], | |||
| int | phiprime[], | |||
| bool & | nofix | |||
| ) | [inline] |
Narrowing the domains of the y views.
analogously to the x views we take
- for the upper bounds the matching computed in glover and compute the new upper bound by
- for the lower bounds the matching computed in revglover and update the new lower bound by
Definition at line 222 of file narrowing.hpp.
| void Gecode::Int::Sorted::sort_sigma | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | z | |||
| ) | [inline] |
| void Gecode::Int::Sorted::sort_tau | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | z, | |||
| int | tau[] | |||
| ) | [inline] |
| bool Gecode::Int::Sorted::normalize | ( | Space & | home, | |
| ViewArray< View > & | y, | |||
| ViewArray< View > & | x, | |||
| bool & | nofix | |||
| ) | [inline] |
| bool Gecode::Int::Sorted::perm_bc | ( | Space & | home, | |
| int | tau[], | |||
| SccComponent | sinfo[], | |||
| int | scclist[], | |||
| ViewArray< View > & | x, | |||
| ViewArray< View > & | z, | |||
| bool & | crossingedge, | |||
| bool & | nofix | |||
| ) | [inline] |
Bounds consistency on the permutation views.
Check, whether the permutation view are bounds consistent. This function tests, whether there are "crossing edges", i.e. whether the current domains permit matchings between unsorted views x and the sorted variables y violating the property that y is sorted.
| ExecStatus Gecode::Int::Sorted::bounds_propagation | ( | Space & | home, | |
| Propagator & | p, | |||
| ViewArray< View > & | x, | |||
| ViewArray< View > & | y, | |||
| ViewArray< View > & | z, | |||
| bool & | repairpass, | |||
| bool & | nofix, | |||
| bool & | match_fixed | |||
| ) | [inline] |
Perform bounds consistent sortedness propagation.
Implements the propagation algorithm for Sorted::Sorted and is provided as seperate function, because a second pass of the propagation algorithm is needed in order to achieve idempotency in case explicit permutation variables are provided.
If Perm is true, permutation variables form the third argument which implies additional inferences, consistency check on the permutation variables and eventually a second pass of the propagation algorithm. Otherwise, the algorithm does not take care of the permutation variables resulting in a better performance.
Definition at line 73 of file propagate.hpp.
| bool Gecode::Int::Sorted::check_subsumption | ( | ViewArray< View > & | x, | |
| ViewArray< View > & | y, | |||
| ViewArray< View > & | z, | |||
| bool & | subsumed, | |||
| int & | dropfst | |||
| ) | [inline] |
Subsumption test.
The propagator for sorted is subsumed if all variables of the ViewArrays x, y and z are determined and the constraint holds. In addition to the subsumption test check_subsumption determines, whether we can reduce the orginial problem to a smaller one, by dropping already matched variables.
Definition at line 78 of file sortsup.hpp.
| bool Gecode::Int::Sorted::array_assigned | ( | Space & | home, | |
| ViewArray< View > & | x, | |||
| ViewArray< View > & | y, | |||
| ViewArray< View > & | z, | |||
| bool & | subsumed, | |||
| bool & | match_fixed, | |||
| bool & | , | |||
| bool & | noperm_bc | |||
| ) | [inline] |
Check for assignment of a variable array.
Check whether one of the argument arrays is completely assigned and udpates the other array respectively.
Definition at line 379 of file sortsup.hpp.
| bool Gecode::Int::Sorted::channel | ( | Space & | home, | |
| ViewArray< View > & | x, | |||
| ViewArray< View > & | y, | |||
| ViewArray< View > & | z, | |||
| bool & | nofix | |||
| ) | [inline] |
Channel between x, y and z.
Keep variables consisting by channeling information
Definition at line 490 of file sortsup.hpp.


I worked with Marc to implement the Animation Module from the Engine we developed for the Game Engines subject, called Spark Engine. In this module I worked on the following features:
I worked with Alex Morales to implement the Anim Tween, a simple module which allows different types of transformations of a GameObject such as color, size, position. All of these can have a different type of curve.
At the start of the project, a simple State Machine based on a enum was developed for the character, but we quickly realized that it had bad scalability and would make us repeat code.
To fix these problems, I changed from Enum State Machine to a Hierarchical State Machine, which encapsulated the different states of the characters effectively and helped us scale the functionalities of each state.
After working on the Hierarchical State Machine rework, I started improving the character movement that was done before. I added acceleration and slow to the dodge, and had to rework most of the basic movement since during the development of the project, the Physics Module was changed and I had to redo the movement.
Also, there was a problem with the movement when going down a slope, since it was made accelerating forward, it would go in the air, fall down, move forward, go into the air again, fall down over and over when going down a slope. I had to make a Raycast from the feet of the player to detect the surface the character was on and then calculate the slope of it to adapt the movement on that direction.
In relation with the movement, I also implemented a set of sphere collider inside the feet of the character which triggers a footstep sound every time it collider with a ground surface, taking in count the material its made of(stone, sand, wood, etc).
I worked on programming all the inputs and actions the character can do in combat, and all the different features that affect the attacks.
The combat is based on two differnt types of attacks, Spells and Combo Attacks, both share some small features but work on a different way.
To create the combos of the characters, I based the structure on a simple State Machine of Attacks. Each Attack would be a node with its own information of damage and effects, and also would point to the other Attacks it can link to.
With this structure we easily created new Attacks and made them link to each other with the input we wanted to.
For the structure of the Spells, I wanted to creatd something that could have good scalability and also potential to generate a great diversity of spells.
I created a system based on Tags, on which a spell can have a different amount of tags making it behave in a way or another.
With these structure I was able to create all the spells of each character efficiently and allowed the designers to tweak them easily.
All the attacks had a set of small features to improve the feel and flow of the combat.
This character requires it's own section in this page because I helped designing the character combos with Alejandro Paris and personally implemented all it's attacks, spells and dodge.
The idea was to have two long range combos with low damage and two close range combos with higher damage. With these sets of combos, we thought that would be a good idea to move the enemy so we could flow between those. So we made one of the long range combos pull the enemy towards Yennefer and one of the close range combos to knock the enemy away.
I worked on the structure of the Relic System with Cere, setting the base of how it would interact with the Character, the Stats of the player and the effects they would apply, depending on the type of Relic that was picked up.
We based the structure on Relic Types and Relic Effects, the type indicates if it's going to work on a Dash or an Attack, and then the effect will determine if it's going to be fire(apply burn), ice(apply slow), etc.
After helping with the base, I left Cere to continue the work and develop all the Relics.
The Effects System was designed with scalability in mind, so we could create any type of positive and negative effects, as desired by the Game Designers. To achieve this I created a base Effect class with the ability to modify Stats and have different callbacks based on Event
With the base class created I started working on Timed Effects, with which we can apply positive or negative effects to a Stat during a set amount of time or make it work with ticks, so every x amount of time it will affect the stats.
Thanks to this structure I was able to create Effects like a Burn, Slow, Shield, Speed Boost, etc.
For the enemies of this project I implemented the following features related to the combat:
During the development of the project, the team felt like we needed different types of utility structures so I developed some of them:


It is said that good studio monitors should be as neutral as possible, with no frequency boosts/cuts, nor any other characteristics that may skew your perspective on what is being played back. Mixing is a feedback loop between the monitors, your hearing and your actions over the material that is being played. Any transformation during this loop will therefore change the final result: lousy monitors, a compressor you decided to use on some track, you being drunk, or bad acoustics in your control room.
There is no great advantage on having good speakers, if your room transforms (too much) the sound they produce. This is a very common problem and, by keeping a simple approach, we can divide it in two sub-problems: high frequency boost and low frequency boost. Yes, boost indeed, as in: more sound energy exists in your room at each instant than the energy the speakers are generating. Unfortunately this doesn't mean we came up with a perpetual motion type of thing, it's only reverb and resonance, something like an acoustic greenhouse effect in your room.
The high frequency boost is caused by the reverberation your room generates and can be dimmed by reducing the reflective capabilities of the walls, windows, doors, floor, ceiling or any other big reflective surfaces your room may have. To achieve this you can use acoustic panels, neatly hung like fine art around your walls and a bear skin rug on the floor. The amount of treatment you need to apply depends on many factors and there is no one-size-fits-all solution. Aim at an echo-free room where you can still "hear" the space.
Due to both their length and amplitude, these waves don't care much about your puny bear skin rug. Their length is such that some of them will match some dimensions of your room, resonating with themselves and forming standing waves. To some extent a kind of acoustic feedback.
Let's say your room has two parallel walls, 3 meters apart. Now consider a wave 4 meters in length is generated from one wall, it would hit the opposing wall some milliseconds after, speed of sound in air permitting. Since this second wall has nothing "big" enough to properly absorb this 4 meter tsunami, a great part of it will be reflected back to the first wall. On its way back, it will cause interference with the signal still being emitted from the first wall.
To better understand that this can cause, let's start by divide the wave in quarters:
Concurrent waves will sum up and when in phase, will resonate, increasing the pressure or the vacuum. When out of phase, will cancel each other, reducing the pressure or the vacuum. The following table shows the possible outcomes of summing two waves, each in one of the four states.
| Q1 | Q2 | Q3 | Q4 | |
|---|---|---|---|---|
| Q1 | BOOST | MEAN VALUE | CUT | MEAN VALUE |
| Q2 | MEAN VALUE | BOOST | MEAN VALUE | CUT |
| Q3 | CUT | MEAN VALUE | BOOST | MEAN VALUE |
| Q4 | MEAN VALUE | CUT | MEAN VALUE | BOOST |
That being said, let's put that wave in our room and see what happens
After 3 meters (end of Q3), the wave will bounce back becoming an inverted (direction, not phase) Q4, ergo a Q3. As the table above shows Q3+Q3=BOOST so, there! There's your problem!
Applying these type of calculation to a real room can be both hard and boring, so here is a cool trick to quickly find these nasty wavelengths. You can use a sinewave generator, like the one below to help you find these stationary waves.
The volume should sound louder at frequencies that resonate with your room. Lower volume at lower frequencies is also expected, in particular if you're using small audio monitors. In ideal conditions, the volume should be the same from 40/50Hz up.
Knowing is fun, but the problem is yet to be fixed. To reduce standing waves you can do a couple of things. The ideal would be not having parallel walls but in home studios that's not always possible. Another approach is adding some serious mass to your room in order to absorb these waves. These are usually called bass traps.
Don't try to correct something you can't hear. In order to take full advantage of these type of enhancements, you must understand why you're doing them and "read it on the internet" is not a good reason. Remind yourself that the goal is to mix (or master) better. If that doesn't happen, you've just been spending time and money.


Pat's Salmon Cookies
Home Page
Store location:
Max number of clients:
Min number of clients:
Average number cookies per hour:
Submit


Upgrading Workflow¶
Deis Workflow releases may be upgraded in-place with minimal downtime. This upgrade process requires:
- Helm version 2.1.0 or newer
- Configured Off-Cluster Storage
- A Kubernetes cluster with more than one node is required for the rolling upgrade of the deis-router (as it is a rolling upgrade with host ports)
Off-Cluster Storage Required¶
A Workflow upgrade requires using off-cluster object storage, since the default in-cluster storage is ephemeral. Upgrading Workflow with the in-cluster default of Minio will result in data loss.
See Configuring Object Storage to learn how to store your Workflow data off-cluster.
Upgrade Process¶
Note
If upgrading from a Helm Classic install, you'll need to 'migrate' the cluster to a Kubernetes Helm installation. See Workflow-Migration for steps.
Step 1: Apply the Workflow upgrade¶
Helm will remove all components from the previous release. Traffic to applications deployed through Workflow will continue to flow during the upgrade. No service interruptions should occur.
If Workflow is not configured to use off-cluster Postgres, the Workflow API will experience a brief period of downtime while the database recovers from backup.
First, find the name of the release helm gave to your deployment with helm ls
, then run
$ helm repo update
$ helm upgrade <release-name> deis/workflow
Note: If using off-cluster object storage on gcs and/or off-cluster registry using gcr and intending to upgrade from a pre-v2.10.0
chart to v2.10.0
or greater, the key_json
values will now need to be pre-base64-encoded. Therefore, assuming the rest of the custom/off-cluster values are defined in the existing values.yaml
used for previous installs, the following may be run:
$ B64_KEY_JSON="$(cat ~/path/to/key.json | base64 -w 0)"
$ helm upgrade <release_name> deis/workflow -f values.yaml --set gcs.key_json="${B64_KEY_JSON}",registry-token-refresher.gcr.key_json="${B64_KEY_JSON}"
Alternatively, simply replace the appropriate values in values.yaml and do without the --set
parameter. Make sure to wrap it in single quotes as double quotes will give a parser error when
upgrading.
Step 2: Verify Upgrade¶
Verify that all components have started and passed their readiness checks:
$ kubectl --namespace=deis get pods
NAME READY STATUS RESTARTS AGE
deis-builder-2448122224-3cibz 1/1 Running 0 5m
deis-controller-1410285775-ipc34 1/1 Running 3 5m
deis-database-e7c5z 1/1 Running 0 5m
deis-logger-cgjup 1/1 Running 3 5m
deis-logger-fluentd-45h7j 1/1 Running 0 5m
deis-logger-fluentd-4z7lw 1/1 Running 0 5m
deis-logger-fluentd-k2wsw 1/1 Running 0 5m
deis-logger-fluentd-skdw4 1/1 Running 0 5m
deis-logger-redis-8nazu 1/1 Running 0 5m
deis-monitor-grafana-tm266 1/1 Running 0 5m
deis-monitor-influxdb-ah8io 1/1 Running 0 5m
deis-monitor-telegraf-51zel 1/1 Running 1 5m
deis-monitor-telegraf-cdasg 1/1 Running 0 5m
deis-monitor-telegraf-hea6x 1/1 Running 0 5m
deis-monitor-telegraf-r7lsg 1/1 Running 0 5m
deis-nsqd-3yrg2 1/1 Running 0 5m
deis-registry-1814324048-yomz5 1/1 Running 0 5m
deis-registry-proxy-4m3o4 1/1 Running 0 5m
deis-registry-proxy-no3r1 1/1 Running 0 5m
deis-registry-proxy-ou8is 1/1 Running 0 5m
deis-registry-proxy-zyajl 1/1 Running 0 5m
deis-router-1357759721-a3ard 1/1 Running 0 5m
deis-workflow-manager-2654760652-kitf9 1/1 Running 0 5m
Step 3: Upgrade the Deis Client¶
Users of Deis Workflow should now upgrade their deis client to avoid getting WARNING: Client and server API versions do not match. Please consider upgrading.
warnings.
curl -sSL http://deis.io/deis-cli/install-v2.sh | bash && sudo mv deis $(which deis)


A packet map object which can be used to resolve incoming and outgoing packet types.
The socket this packet interface is attached to.
The last packet which was received.
The last packet which was sent.
Attaches this Packet IO to the socket
.
The socket to attach to.
Attempts to create a packet from the data contained in the reader buffer. No packet will be created if there is no event listener for the packet type.
Detaches this Packet IO from its Socket
.
Takes packets from the outgoing queue and writes them to the socket.
Emits an 'error'
event if there are any listeners for it,
or throws the error if there are no listeners.
The error to emit.
Emits a packet from this PacketIO instance. This will only emit the packet to the clients subscribed to this particular PacketIO.
The packet to emit.
Adds the data received from the socket to the reader buffer.
The data received.
Resets the incoming packet buffer so that it is ready to receive the next packet header.
Resets the reader buffer and the RC4 instances.
Sends a packet.
The packet to send.
Generated using TypeDoc
A utility class which implements the RotMG messaging protocol on top of a
Socket
.


NOTE:
To install an application you need to download the installer here and run it.
Every Application-Installer has the same size as the application it will install.
So the total space requirement to install an application is twice the size of the installer.
Installer can be uninstalled after successfully installing an application.


A Text Adventure in Python
Exploring the Standard Library
Jeffrey B. Armstrong
Approximatrix, LLC
Introduction
- Build a text adventure
- with only the standard library
- Basic steps to start a game
- Introduce some fun Python modules
History
- Text Adventures/Interactive Fiction
- Popular when graphics were a “problem”
- Multiple commercial entities
- Still enjoy “cult” following
Necessities
- Command prompt
- Locations to visit
- Game file(s) describing our world
- Puzzles, items, characters, etc.
Command Prompts
- cmd module
- Provides “support for line-oriented command interpreters”
- Absurdly simple to implement
- Might lack some power
Locations
- Room class
- Needs an id, name, description
- List of connected rooms
- List of items in the room
- List of NPCs in the room
Persistent Rooms
- pickle
- Lets us serialize our rooms easily
- Not editable
- Plain ol’ text files
- Hand-editable
- Implies some arbitrary formatting
Persistent Rooms
- json module
- Allows “serializing” our rooms
- Hand-editable
- Expandable via adding fields
Text Wrapping
- textwrap
- Automagically handles our wrapping needs
Data Files
- sqlite3 module
- Simple SQL database
- Store the entire game in a single file
Data Files
- tempfile module
- Make a temporary, working copy of the game
- shutil module
- For copying the clean game file to a temp file
- For creating our saves
What’s Missing?
- Status Bar
- NPCs
- Puzzles
- “Advanced” text parsing
Where We’ve Been
- cmd
- json
- textwrap
- sqlite3
- tempfile
- shutil
Want More?
- https://github.com/ArmstrongJ/
- An older, actual adventure named robotadventure
- http://www.pyweek.org/
- A reason to write your own
- http://www.ifcomp.org/
- If you think yours is worthy…


Hello, I'm Parwinder
Expert in Full-stack Development
Graduated in Computer Science from University of Padua (Italy) with demonstrable experience in banking industry as a full-stack developer.
linkedinMy Skills
Frontend
I like to code things from scratch and really enjoy to create web applications.
Front-end languages:
HTML, CSS/SCSS, JS, TS
Frameworks/tools:
- Angular 2+
- Ionic
- React/Redux
- Nodejs
Backend
I enjoy and love to work with all technologies behind a project.
Backend languages:
Java, C#, JS, SQL
Frameworks/tools:
- Java EE
- .net core
- AWS(Serverless)
- Nodejs
- Microsoft SQL Server
Others
I have studied other technologies at the University, and by my own.
Others languages:
C++, Solidity, PHP, R
Frameworks/tools:
- Qt framework
- Travis CI
- Mocha/Chai
- Ethereum
- Blockchain
Education
-
Computer Science at University of Padova (2013-2018);
-
Diploma in Electronics (2011-2013);
-
Programmable Remote Management System (2012-2012);
-
Diploma in Operator of electronic, IT and telecommunication systems (2009-2011).
Work Experiences
-
ICS, Full-stack Software Engineer, July 2019 – Now;
-
Bank Monte dei Paschi di Siena(Padua), Full-stack developer, September 2018 – April 2019;
-
Nextep di Marco De Toni (Cittadella), Full-stack developer (Internship), May 2018 – August 2018;
-
You can find my other projects on my Github!


PMI for images (scratch)
Posted: 2016-08-01 , Modified: 2016-09-05
Tags: PMI, neural nets, vision
Posted: 2016-08-01 , Modified: 2016-09-05
Tags: PMI, neural nets, vision
Over all pairs of features \(i,j\), this is the distribution of \(PMI(v_i,v_j)\):
(Question: is this what you would expect if the distribution were “random” or are the tails different than what we would expect?)
Is there a correlation between PMI and distance between features? (Distance ranges from \(0\) to \(5\sqrt 2\).) It seems not.
Conditioned on the digit being a specific value, how does the PMI distribution look? Still about the same… except that 1 has much larger activation. These are digits 0-4.
See script pmi_thresholded.m
.
Remove all features that do not have PMI \(>1\) with another feature. Now do the same thing.
This is the distribution of \(PMI(v_i,v_j)\):
These are digits 0-4.
Percentiles of the distributions (\(i\)th row is 0, 10, 20, … 100% for the CPMI’s of digit \(i\), last row is PMI over all digits).
Columns 1 through 7
-0.9746 -0.0588 -0.0140 0.0112 0.0306 0.0488 0.0681
-3.1365 -0.3102 -0.0940 0.0050 0.0609 0.1144 0.1812
-0.9300 -0.0626 -0.0130 0.0134 0.0333 0.0526 0.0740
-0.7660 -0.0462 -0.0022 0.0210 0.0403 0.0602 0.0835
-2.0740 -0.0565 -0.0071 0.0188 0.0397 0.0611 0.0855
-0.8674 -0.0628 -0.0077 0.0229 0.0471 0.0705 0.0966
-2.3770 -0.0457 -0.0007 0.0228 0.0428 0.0639 0.0886
-2.4824 -0.0928 -0.0235 0.0121 0.0379 0.0633 0.0925
-0.9435 -0.0521 -0.0066 0.0161 0.0347 0.0545 0.0785
-2.1549 -0.0505 -0.0020 0.0231 0.0446 0.0679 0.0961
-0.8693 -0.0515 0.0008 0.0344 0.0640 0.0949 0.1309
Columns 8 through 11
0.0910 0.1215 0.1730 1.5181
0.2772 0.4314 0.7470 5.3609
0.1007 0.1393 0.2117 1.5297
0.1141 0.1604 0.2521 1.6011
0.1169 0.1635 0.2537 2.2486
0.1293 0.1773 0.2773 2.0363
0.1215 0.1727 0.2771 2.5443
0.1305 0.1882 0.3019 2.9006
0.1111 0.1639 0.2788 2.1102
0.1344 0.1957 0.3210 2.7701
0.1761 0.2406 0.3557 1.7908
See script pmi_thresholded.m
.
Remove all features that do not have PMI \(>1\) with another feature. Now do the same thing.
This is the distribution of \(PMI(v_i,v_j)\):
These are digits 0-4.
CODE: Run pmi_thresholded
and check_top_pmis
.
Remove all features that do not have activation \(>1\) in some image. Now do the same thing. (NOTE: the maximum PMI is less because the max PMI’s are between features that have small activation. Try this again thresholding by PMI?)
This is the distribution of \(PMI(v_i,v_j)\):
These are digits 0-9.
Percentiles of the distributions (\(i\)th row is 0, 10, 20, … 100% for the CPMI’s of digit \(i\), last row is PMI over all digits). (Note the last column is different)
Columns 1 through 7
-0.9746 -0.0588 -0.0140 0.0112 0.0306 0.0488 0.0681
-3.1365 -0.3102 -0.0940 0.0050 0.0609 0.1144 0.1812
-0.9300 -0.0626 -0.0130 0.0134 0.0333 0.0526 0.0740
-0.7660 -0.0462 -0.0022 0.0210 0.0403 0.0602 0.0835
-2.0740 -0.0565 -0.0071 0.0188 0.0397 0.0611 0.0855
-0.8674 -0.0628 -0.0077 0.0229 0.0471 0.0705 0.0966
-2.3770 -0.0457 -0.0007 0.0228 0.0428 0.0639 0.0886
-2.4824 -0.0928 -0.0235 0.0121 0.0379 0.0633 0.0925
-0.9435 -0.0521 -0.0066 0.0161 0.0347 0.0545 0.0785
-2.1549 -0.0505 -0.0020 0.0231 0.0446 0.0679 0.0961
-0.8693 -0.0515 0.0008 0.0344 0.0640 0.0949 0.1309
Columns 8 through 11
0.0910 0.1215 0.1730 1.5181
0.2772 0.4314 0.7470 5.3609
0.1007 0.1393 0.2117 1.5297
0.1141 0.1604 0.2521 1.6011
0.1169 0.1635 0.2537 2.2486
0.1293 0.1773 0.2773 2.0363
0.1215 0.1727 0.2771 2.5443
0.1305 0.1882 0.3019 2.9006
0.1111 0.1639 0.2788 2.1102
0.1344 0.1957 0.3210 2.7701
0.1761 0.2406 0.3557 1.7908
TODO: add data from check_top_pmis
. This produces a graph showing which features are close to each other.
Run qsub svd_svm.cmd
which runs svd_testing2.m
, or sbatch slurm_svd.cmd
. The results are saved in accs_1.mat
.
Results:
| Dimension | Last | Best |
|---|---|---|
| 500 | 99.26 | 99.44 |
| 100 | 97.5 | 98.82 |
| 50 | 96.84 | 96.84 |
Do weighted SVD (as in the NLP paper) and then train a SVM. Note this does worse than just SVD! Why?
| Dimension | Last | Best |
|---|---|---|
| 50 | 95.44 | 96.8 |
Is PMI the right measure? Are the feature vectors close to sparse? if the average image there is \(>20\%\) activation, then no.
For the first 10 images, this is what the percentiles look like:
percentiles:
pcs =
100 99 95 90 80 70
Image 1 (label 5)
2.3230
1.2966
0.8840
0.6766
0.4381
0.3140
Image 2 (label 0)
2.1275
1.3604
0.9482
0.7418
0.5036
0.3769
Image 3 (label 4)
1.7975
0.9874
0.6185
0.4704
0.3145
0.2247
Image 4 (label 1)
2.2506
1.2399
0.7160
0.4949
0.3029
0.1992
Image 5 (label 9)
2.0837
1.3970
0.8726
0.6461
0.3937
0.2707
Image 6 (label 2)
2.4831
1.4978
1.0466
0.7880
0.5002
0.3544
Image 7 (label 1)
2.5064
1.3688
0.7591
0.5203
0.3089
0.1935
Image 8 (label 3)
3.3030
1.6943
1.1588
0.8658
0.5756
0.4070
Image 9 (label 1)
2.2263
0.9396
0.4905
0.3279
0.1944
0.1178
Image 10 (label 4)
2.2420
1.3486
0.8494
0.6169
0.3751
0.2586
This looks pretty good—the top 1% of features are much larger than the rest.
Look for discriminative features, those that occur with one label and rarely for others. (I arbitrarily define this as: the maximum average activation is \(>1.5\) times the second largest, and the maximum is at least 0.1. I exclude the digit 1 (indexed as 2).)
sig_act_inds = intersect(find(m1>=1.5*m2), find(m1>0.1));
sig_act_inds2 = intersect(sig_act_inds, find(am1 ~=2));
115/7200 features fit this criterion.
Do SVM coefficients have negative weights?
collect, same patch; no collect, same patch; horiz collect; horiz no collect; vert collect; vert no collect; all
ans =
Columns 1 through 7
-0.9605 -0.3457 -0.2067 -0.1000 -0.0103 0.0783 0.1698
-1.0872 -0.0690 -0.0062 0.0281 0.0563 0.0880 0.1277
-1.5676 -0.3858 -0.2386 -0.1310 -0.0454 0.0409 0.1303
-0.9235 -0.0241 0.0307 0.0621 0.0919 0.1266 0.1695
-1.3763 -0.3810 -0.2237 -0.1053 -0.0072 0.0839 0.1708
-0.9163 -0.0108 0.0284 0.0530 0.0796 0.1093 0.1458
-1.1984 -0.0727 -0.0094 0.0253 0.0534 0.0847 0.1241
Columns 8 through 11
0.2735 0.3922 0.5678 1.3093
0.1821 0.2624 0.4080 2.4518
0.2220 0.3257 0.4557 1.1007
0.2240 0.3054 0.4534 2.6332
0.2607 0.3593 0.4863 0.9118
0.1942 0.2660 0.3970 2.6332
0.1778 0.2587 0.4034 2.6897
I sorted pairs of features by PMI value and took the largest 10000 pairs. The majority of the pairs (~77%) have strongest activation with the digit 1. (The digit 1 has conditional PMI values that are much larger than all the other digits - don’t know what to do about this.) 85% of the pairs have highest activations with the same digit.
If the pair has strong activation with 1, then it’s often much larger than the other activations.
Otherwise this is not necessarily true. A typical non-1 feature has average activations with the 10 digits that looks something like this:
Columns 1 through 7
0.0708 0.2673 0.0940 0.1537 0.2122 0.1116 0.2627
Columns 8 through 10
0.2947 0.1448 0.3361
Experiments:
mnist_testing.m
: Prep data.svd_testing.m
: How does reducing the number of features through SVD affect classification accuracy?pairwise_mi.m
: Tests related to mutual informationmi.m
MI_GG.m
rsvd.m
nlayers: 2
layer: {2x1 cell}
type_zerolayer: 2
ndesc: 7200
numlayer: 1
centering: 0
median_contrast_normalization: 0
npatch: 5
subsampling: 2
smap: 50
type_zerolayer: 2
sigma: 0.7459
Z: [25x50 double]
w: [50x1 double]
In pairwise_mi.m
there’s no normalization by scaling (\(-2\log\pat{scale}\)).
https://en.wikipedia.org/wiki/Conditional_mutual_information
The right PMI measure to use here is \[ \ln \pf{\an{v,w}}{\an{v,\one}\an{w,\one}}. \] Because if we assume the activations are like \((e^{\chi,v})_\chi\), then we still get that the expected dot product of these is \(\int e^{\an{\chi,v}}e^{\an{\chi,w}}\,d\chi\propto \exp\pa{\fc{\ve{v+w}^2}{2}}\).
Do weighted SVD on PMI matrix.
Geometry
(Compare to purely random.)
Understand loss function for PMI.
Qs
nrm=mean(sqrt(sum(compTr.^2)))
?Run experiments.
nohup nice -19 matlab -nodisplay -nodesktop -nojvm -nosplash < run_experiments2.m > output_2016-08-07.txt 2>&1 &
%Get psiTr
pmi_experiments('logs/model_mnist_5_2_0_2_2_0_50_200_0_1.000000e-01_1.000000e-01_1.000000e-01_2.mat');
%get percentiles for each feature
pc= get_percentiles(psiTr);
save('pc_1.mat','pc','-v7.3');
%calculate PMI after normalizing and deleting zero rows.
[P, inds] = calculate_pmi(psiTr); %inds give the indices that are kept (indices of nonzero rows)
%exploratory analysis
%pmi_experiments(P);
[all_pmi_pairs, positions, dists] = pmi_experiments2(P, inds');
save('all_pmi_pairs_1.mat','all_pmi_pairs');
save('positions_1.mat','positions');
save('dists_1.mat','dists');
%cpmi matrices
Ps = calculate_cpmi(psiTr, Ytr, '1');
cpmi_experiments('P_1');
psiTr_1.mat
, psiTe_1.mat
etc. are the feature vectors for the training/test sets and the different architectures. The architectures are
test_ckn([5 2 0],[2 2 0],[50 200 0],2,'mnist');
(7200, 0.57%)test_ckn([1 3 0],[2 2 0],[12 50 0],3,'mnist');
(1800, 0.63%)test_ckn([1 3 0],[2 4 0],[12 400 0],3,'mnist');
(3600, 0.41%)


{% extends "base.html" %} {% block content %}
The stocks table is the core of the application. id is the primary key, trades is a one-to-many relationship with the trades table:
| id | symbol | name | exchange | Price | div_yield | ex_div | div_pay | market_cap | view_count | trades |
| {{ stock.id }} | {{ stock.symbol }} | {{ stock.name }} | {{ stock.exchange }} | {{ stock.price }} | {{ stock.div_yield }} | {{ stock.ex_div }} | {{ stock.div_pay }} | {{ stock.market_cap }} | {{ stock.view_count }} |
The user table (emails and passwords are obfuscated). portfolio is a one-to-one relationship with the portfolio table.
| id | name | password | last_seen | portfolio | |
| {{ user.id }} | {{ user.name }} |<EMAIL_ADDRESS>| ******** | {{ user.last_seen }} |
The portfolios table, which stores the various positions of stocks owned by the user. id is primary key, user_id is foreign key linking to users, positions is a one-to-many key linking to positions.
| id | user_id | cash | value | positions |
| {{ portfolio.id }} | {{ portfolio.user_id }} | {{ portfolio.cash }} | {{ portfolio.value }} |
The positions table, which stores trades of a particular stock. id is primary key, portfolio is foreign key linking to portfolios, trades is a one-to-many key linking to trades.
| id | portfolio_id | trades | cost | value | date | sharecount | div_eligible_sharecount |
| {{ position.id }} | {{ position.portfolio_id }} | {{ position.cost }} | {{ position.value }} | {{ position.date }} | {{ position.sharecount }} | {{ position.div_eligible_sharecount }} |
The trades table, integral to the stock game mechanics. id is the primary key, symbol_id and position_id are foreign keys to stocks and positions, respectively.
| id | symbol_id | position_id | price | quantity | date | div_yield | ex_div | div_pay |
| {{ trade.id }} | {{ trade.symbol_id }} | {{ trade.position_id }} | {{ trade.price }} | {{ trade.quantity }} | {{ trade.date }} | {{ trade.div_yield}} | {{ trade.ex_div }} | {{ trade.div_pay }} |
Search for more stocks to add to my database!
{% endblock %}


{% extends "base_generic.html"%} {% block title %}
Welcome to LocalLibrary, a very basic Django website developed as a tutorial example on the Mozilla Developer Network.
An UML diagram of the site's Django model structure is shown below.
The library has the following record counts:
You have visited this page {{ num_visits }} {% if num_visits == 1%} time {% else %}times{% endif %}.
{% endblock %}


Miranda Lambert is bold, funny and ready to rock again
by KRISTIN M. HALLNASHVILLE, Tenn. (AP) - Miranda Lambert is back, as bold and fun as she ever was, with a new album of rock-influenced country songs that reflect a woman stepping into a new chapter of her life and career.
Lambert said writing for “Wildcard,” her new album dropping Friday, made her feel like she’s gotten her fire back and she doesn’t feel so internal and broody as she was four years ago.
It’s her first solo record since her critically acclaimed double album, “The Weight of These Wings,” that came after her divorce from Blake Shelton. The new record reflects more of the rock-edged country that she displayed on her 2005 debut album “Kerosene,” with plenty of her well-known wit and sarcasm.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Spritify
Introducion
Spritify is a easily library to manage yours sprites, use the spritify is easy, fast and standalone, they uses no plugin. look the demo
Demo
How use
Is so simple to use Spritify. see the steps
- Download the file spritify.js here !
- import the code on your HTML file
<script type="text/javascript" src="spritify.js"></script>
- import your CSS file with parameters of sprite
<link rel="stylesheet" href="path/of/sprite.css"></link>
- and implement
sprites.animate({
frames : 6,
loop : false,
target : "#sprite",
animationTime : 70,
spriteClass : "icon-sprite",
reverse : false
});
What can i use ?
frames: int //set the max of frames your sprite have. *this is required to work
loop: boolean //set if your sprite have loop or not *default = true
target: "selector" //set the element that will receive the animation *this is required to work
animationTime: int //set the frame time of animation *default = 70ms
spriteClass: "class" //set the class prefix of animation *this is required to work **example: "anim-1", "anim-2" in this case the class prefix is "anim-"
reverse: false //set if the animation is backwards *default = false
firstNumber: int //set the first frame of animation *default = 1


SEARCH
Clothing
Footwear
Equipment
Bags & Travel
Trail Reviews
John Doe
Log Out
Get A Grip
20% Off
Throughout The Season
Couples retreat weekend
Save an extra 20%
when you buy 2 pairs of boots
Splash Chic
Women's Wet Gear
Kid Klimbers
Children's Gear
Pack It In
Camping Gear
Nature's AC
Men's Shorts
Trail Review
Asphalt
National Park
See Review


--- layout: post title: The Antidote to Misanthropy date: '2011-12-16 21:17:45 -0700' mt_id: 1476 blog_id: 1 post_id: 1476 basename: the-antidote-to-misanthropy categories: - objectivism - politics ---
On the other hand, the fact that the Foundation for Economic Education still exists 65 years after its start and recently hosted Yaron Brook of the Ayn Rand Institute pleases me greatly.


Prepay for NHS prescriptions
When do you want to start prepaying for prescriptions?
You can start your prepayment:
- today, {{todayday}} {{todaymonth}} {{todayyear}}
- any date before {{minusmonth}} (ready for your next pharmacy visit)
- any date after {{plusmonth}} (if you have a refund form from the pharmacist)


Cases of poor air quality in the Greater LA Area
{% for i in instance %}At {{ i.datetime }} Los Angeles had a particulate matter concentration of {{ i.value }}.
{% endfor %}At {{ i.datetime }} Los Angeles had a particulate matter concentration of {{ i.value }}.
{% endfor %}


Toggle navigation
insert_chart
A-TRACK
toc
arrow_drop_down
Logout
Dashboard
Classes
Subjects
New Attendance
Past Attendance
Reports
Classes
New Attendance (Enter Details)
Class
Subject
Hour
Add Attendance
×
Select Maximum Category :
Present
Absent
On Duty
Leave
Cancel
Ok


This is the lyrics of Lakshmi Chalisa in English and Devanagari script. You will also find the meaning of Lakshmi Chalisa in English. The Lakshmi Chalisa is read to please Goddess Lakshmi.
 Reside in my heart
and pacify the many urges and desires that are in my mind. This is my
humble prayer.
Yahi Mor Ardas, Hath Jod Vinati Karun
Sab Vidhi Karau Suvas, Jai Janani Jagadambika ॥2॥
Sindu Suta Main Sumirau Tohi
Gyan Buddhi Vidya Do Mohi ॥3॥
Tum Samaan Nahi Koi Upkari
Sab Vidhi Puravahu Aas Hamari ॥4॥
Oh Eternal being of all existence, born from the ocean of your
thought, I beseech you. Fill me with the grandeur of intelligence,
knowledge and wisdom that is you. Anointing us with your divine shakti
(energy), you grant us many gifts. Within the three worlds there is
none as charitable as you, It is only you Devi that can fulfill all
desires.
Jai Jai Jagat Janani Jagadamba
Sabaki Tum Hi Ho Avalamba ॥5॥
Tum Hi Ho Sab Ghat Ghat Vaasi
Vinati Yahi Hamari Khaasi ॥6॥
Victory, Victory to you, the Supreme Self, for you are above all
material cause. Mere words cannot fully describe the depth of your
infinite love for your creation. Oh Eternal Energy you reside in the
many expressions of your devotees, this is our humble prayer.
Jagajanani Jai Sindhu Kumari
Dinan ki Tum Ho Hitakari ॥7॥
Vinavaun Nitya Tumahin Maharani
Kripa Karau Jaga Janani Bhavani ॥8॥
Oh all pervading truth, you have taken form out the ocean at your
will. Bestowing gifts to the mankind that are deserving. It is you who
sanctify and deliver the poor. Oh Self Sustaining reality, protect us
within the portals of your grace. This is our humble prayer to you in
utmost supplication, Oh Devi.
Kehi Vidhi Stuti Karaun Tihari
Sudhi Lijai Aparadh Bisari ॥9॥
Kripa Drishti Chitavavo Mam Ori
Jaga Janani Vinati Sun Mori ॥10॥
In what way can I extol Thee glory? With a repentant heart I confess
that I know not of how to sing your praises. Though I sing of your
prayers, my human nature remains.  Devi take us into your
protective care and heed our cries, you are the source of our
salvation.
Gyan Buddhi Jai Sukh Ki Data
Sankat Haro Hamari Mata ॥11॥
Kshirasindhu Jab Vishnu Mathayo
Chaudah Ratna Sindhu Mein Payo ॥12॥
The virtues of knowledge, wisdom, victory and happiness are bestowed
upon those of steadfast faith and devotion and to whom surrender
totally to you. Please remove the many faults that plague us. You were
revealed as the self, when Shri Vishnu ordered the churning of the
milky ocean amongst fourteen jewels.
 Revealing
in the oneness of existence, you joyously became a servant of God.
From time to time you take birth as the Lord, you also embody your
self in human form as his eternal companion and selflessly serves him.
Svayan Vishnu Jab Nar Tanu Dhara
Linheu Avadhapuri Avatara ॥15॥
Tab Tum Pragat Janakapur Mahin
Seva Kiyo Hridaya Pulakahin ॥16॥
Shree Vishnu took the form of a man and he appeared as the Avatar of
Shree Rama in Ayodhya. It is at that very moment you manifested
yourself in Janakpur to serve him and fill the hearts of your devotees
with immense joy as they rejoiced in the play of consciousness.
Apanaya Tohi Antaryami
Vishva Vidit Tribhuvan Ki Swami ॥17॥
Tum Sam Prabal Shakti Nahin Aani
Kahan Lau Mahima Kahaun Bakhani ॥18॥
For he is the lord of the three worlds and is the knower of the hearts
of all, he joyously embraced you knowing you to be no different to
him. Your divine power cannot be estimated by any nor can your grace
be described in its grandeur.
Man Kram Vachan Karai Sevakai
Man Ichchhita Vanchhit Phal Pai ॥19॥
Taji Chhal Kapat Aur Chaturai
Pujahin Vividh Bhanti Man Lai ॥20॥
Through thought, word and deed I worship you in total surrender that
may the fruit of my surrender be fulfilled. To be absorbed in your
grace I must cast aside guile, deceit ad dishonesty, constantly
worshipping you with utmost devotion.
Aur Haal Main Kahaun Bujhai
Jo Yah Paath Karai Man Lai ॥21॥
Tako Koi Kashta Noi
Man Ichchhita Pavai Phal Soi ॥22॥
How can one glorify you ? Through steadfast surrender is the only way
I will truly understand of your grace. It is only then there will be
no difficulty and the fruits of our surrender will be fulfilled.
Trahi Trahi Jai Dukh Nivarini
Trividh Taap Bhav Bandhan Harini ॥23॥
Jo Chalisa Pade Padave
Dhyana Lagakar Sunai Sunavai ॥24॥
Save me! Save me! For you are the remover of all pains and the
destroyer of all fears and three kinds of difficulties.
Takau Koi Na Rog Satavai
Putra Aadi Dhan Sampatti Pavai ॥25॥
Putrahin Aru Sampatti Hina
Andh Badhir Kodhi Ati Dina ॥26॥
Through steadfast devotion they will be blessed with children, wealth
and happiness amongst all. Those who bear no children, who are sad,
the blind, the deaf, the poor and low caste.
Vipra Bolaya Kai Paath Karavai
Shanka Dil Mein Kabhi Na Lavai ॥27॥
Paath Karavai Din Chalisa
Ta Par Kripa Karain Gaurisa ॥28॥
They shall engage with the learnt and in the full richness of devotion
with all doubts casted away from their hearts shall worship you.
Praises of you should be read and gloried with reverence and total
surrender. Through the anointing of your shakti all will be blessed
with your grace.
Sukh Sampatti Bahut Si Pavai
Kami Nahin Kaahu Ki Avai ॥29॥
Barah Maas Karai Jo Puja
Tehi Sam Dhanya Aur Nahin Duja ॥30॥
Resplendent health and immense happiness will flourish in abundance.
None will suffer of any kind of unhappiness or sorrow. Wealth both
spiritually and materially of those unwavering in their devotion and
surrender to you will be multiplied unfold.
Pratidin Paath Karai Man Mahin
Un Sam Koi Jag Mein Kahun Naahin ॥31॥
Bahuvidhi Kya Mai Karaun Badai
Leya Pariksha Dhyana Lagai ॥32॥
Those who sing and glorify you each day will be of unparallel glory
and will enjoy of your incomparable grace. I surrender to you and
meditate upon your divine presence in all that I embark on in diverse
ways each day.
Kari Vishvas Karai Vrat Nema
Hoy Siddha Upajai Ur Prema ॥33॥
Jai Jai Jai Lakshmi Bhavani
Sab Mein Vyapita Ho Gun Khaani ॥34॥
Those who worship you in thought, word and deed receive many gifts
from you and experience tremendous love through your grace. Your love
fill all of creation. Glory, glory, glory be unto you resplendent
Lakshmi Devi, for you are the storehouse of knowledge. May your
anointing grace manifest within your devotees.
Tumharo Tej Prabal Jag Mahin
Tum Sam Kou Dayalu Kahun Naahin ॥35॥
Mohi Anath Ki Sudhi Ab Lijai
Sankat Kaati Bhakti Mohi Dijai ॥36॥
Your glory is indescribable in this world. There is none that is so
kind and merciful to sinners as you Devi. In your protective care take
this orphan who needs a mother. Remove all of our difficulties and
grant us constant devotion to you.
Bhul Chuk Kari Kshama Hamari
Darshan Dajai Dasha Nihari ॥37॥
Bin Darshan Vyakul Adhikari
Tumahi Achhat Dukh Sahate Bhaari ॥38॥
Forgive us of our mistakes, deliver us from the ocean of suffering
which binds us. May your divine grace be showered upon us. I beg to
dwell in your grace for eternity. Only through your divine blessing
will all our difficulties vanish.
 Destory all my pains and suffering.
Trahi Trahi Dukh Harini,Haro Vegi Sab Tras
Jayati Jayati Jai Lakshmi,Karo Shatru Ko Naash ॥42॥
Deliver me, Deliver me, Oh remover of all difficulties. Destroy all
the evils that torment me. Glory Glory to you Ma Lakshmi, Destroy the
multitudes of enemies that plague me in evil thoughts that beseech my
mind.
Ramdas Dhari Dhyan Nit,Vinay Karat Kar Jor
Maatu Lakshmi Daas Par,Karahu Daya Ki Kor ॥43॥
Daily through my unwavering heart filled of faith and love I surrender
and meditate upon you. Oh Lakshmi, the eternal self of all existence,
bestow your grace on your devotee.
Do you want to answer a question to help us serve you better? If so, please fill this form.


Bio
I was born and raised in Spokane, WA where I have lived my whole life. I initially chose design as my major after doing some design work for bands before heading into college. I figured it would be a good way to continue studies since I already had some experience in the field. After taking a few classes it opened my eyes to a large amount of new concepts in design and grabbed my interest on a greater scale. After graduation I would like to find myself in a design firm working towards web based design and graphics. Since I am more heavily involved in the graphic and visual aspect of design, this would be the ideal fit for me. After graduation, I attended Spokane Falls community college to get my associates degree, from which I moved onto EWU. I am currently a Junior with only a few classes left to become a senior. Outside of class I am constantly delving into the arts and design to help further my knowledge of my studies. I have worked in a variety of environments from warehouse stocking to general retail. A majority of my work has dealt with customer relations and interaction. On the side I have had many clients for logo work and design through local and national bands.Skill Set
Education
Work
Resume
Connor Bacon
1014 E 16th Ave
Spokane, WA 99203
509-464-9986
<EMAIL_ADDRESS>Education History
East Valley High School High SchoolDiploma - General Studies
2009-2012
Spokane Community College
2010-2011
Spokane Falls Community College
Associates of Arts Degree
2011-2013
Work Experience
Subway
Spokane Valley, Washington
January 16, 2012 - July 24, 2012
January 10, 2015 - Current
Sandwich Artist
Food Prep, Sandwich Making, Cleaning Duties, Unloading Food Order, Customer Service.
Landscaping
Spokane, Washington
May 2012 - Present
Laborer
General Labor, Fence Lining, Lawn Mowing, Clearing Debris.
Office Depot
Spokane Valley, Washington
October 21, 2012 – March 28, 2014
Customer Service Specialist, Logistics
Peirone Produce
Airway Heights, Washington
April 1, 2014 - September 30, 2014 (Seasonal)
Warehouse Picker
Skills
Proficient in adobe suite including InDesign, Illustrator, Photoshop, and Dreamweaver. Extensive knowledge of customer service, keen sense of working with urgency, very hard worker, very personable, diligent worker, can type over 100 wpm, very reliable both inside and outside work, easy to work with and a fast learner. Accustomed to long hours as well as physical labor.


[Erowid Warning: Our understanding of the literature is that there is no such thing as safe use of volatile solvents, aerosols and other street inhalants : their psychoactive effects are inseparable from nerve and organ damage. We have chosen to include these reports to help document the real world use of inhalants, but their inclusion is not intended to imply that they are anything but dangerous.]
I remember being 13 when I was addicted to aerosol cans, sure it was fun. But when me and my friend R ran out of cans, we wanted more! So we looked around. I went out to the garage and found the gas can. I huffed 3 times before I really felt anything. I heard funny distorted echoes like cars driving by. So I alerted R about it immediately. She just had to try it so I went and did it with her.
Around 3 hits the echoes and static distortions pick up. Around 6 hits we felt the oddest feeling of dťjŗ vu. We just laughed at it and kept huffing. Then around 10 hits we saw red dots and heard loud ping noises. From that point on we kept handing the gas-can back and forth to each other well the other blacked out. The blackouts seemed to be filled with red nothingness. All the affects just got stronger. Until she finally said she was hungry so we stood up.
We walked outside to try and sober up and we both had dizzy after-affects.  That was the last time I huffed with my friend R, she moved. So a week later from the last experience I went into my garage and started huffing, the affects were stronger, and the blackouts lasted longer. It was so bad that I sat in there for more than 20 hours blacked out (or possibly sleeping).
I must have taken at least 70 hits. I woke up fine. I went inside and everybody kept telling me I was missing for a day and I didnít believe them, until they pointed at the calendar.  But it didnít bother me that much. The following day after that I went and sat in my garage and huffed more. Around the 10th hit I could have swore I saw heaven. There was a beautiful white light with flowers surrounding it. Then everything went to red nothingness for a moment and I woke up and huffed more. Then I decided to take a break from it for a tad bit until no one was home to notice me wreaking of gasoline.
3 days later it was 11 AM and no one was coming home until at least 9 PM. So I went and sat out in the garage and huffed again. This time the first 3 hits were devastating. I saw a little yellow distorted face at the left-top of my vision that told me to spit out my brains. So I cocked my head to the left and spit, and the hallucination laughed at my and disappeared. I said out loud 'You think thatís funny? Watch me huff more!'.
So I kept huffing, and as usual the affects were standard but thickening. But I had never done it so many times as this. I at least blacked out more than 50 times. Which means I huffed about 5 times that. Then I can barely remember the last blackout seemed to last forever, and ever, and ever.   I had been missing for a week! Which the only thing that adds up is that I must have been in a coma in my garage. I just told everybody I took a road trip with friends. They were pissed.
A week later I went out in the garage and huffed again, this was a mistake. I huffed once and I saw static and heard echoes. Then an overwhelming sense came over me that told me to stop! So I did and I havenít huffed ever since and nor will I.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


fun observeState(): Flow<State>
(source)
Observe the current state of this MVFlow object. When you subscribe, you also get the current value as the first emission.
This is just a utility method that you probably don't need. Be mindful what you do with it. While this might make some functionality easier to implement, you are risking breaking the MVI concept and its advantages!
Note: this uses a kotlinx.coroutines.channels.Channel.Factory.CONFLATED channel so the states you see might differ from the events the MVFlow object sees. If your observer or the view take too long collecting one value and two or more values are emitted during that time, only the latest one would be emitted to the slow collector (while the fast collecter could receive all of the values). In normal situations the collection should be very quick and skipping states should not matter due to immutability.


stats :
xxx
users
xxx
categories
xxx
forums
xxx
threads
xxx
replies
xxx
visit
last 10 days activity :
the peak was xxxx activities recorded on 22 Jan 1996 .
alexa rank :
alexa rank here
recent activities :
Browser Usage :
- google chrome
- mozilla firefox
- ios browser
- other
Top Visiting Countries :
40% - Tunisia
20% - Algeria
15% - Morroco
7% - Yamen
depending on IP that visit your site .
server Usage :
80% ( 5 Go used of 6 Go )


Date
Client Registration No
Property Registration No
Date
Client Registration No
Property Registration No
Actions
|


About Cyclic Pursuit
In order for the TurtleBots to use the cyclic pursuit algorithm, they have to be able to follow a prescribed circle in a robust way. "Global Path Following for the Unicycle and Other Results" by Mohamed I. El-Hawwary and Manfredi Maggiore, provides a robust method for unicycle (TurtleBot) dynamics.
Cyclic Pursuit and Circular Path Following
There are many different kinds of cyclic pursuit algorithms that have been studied. One example of cyclic pursuit is the distribution of moving satellites in a plane around the Earth. The moving satellite would find a stable distance between neighboring satellites through this algorithm. Although there are many versions of cyclic pursuit, we implement a simple model as follows
With this algorithm, the turtlebots will reach a steady state (equidistance) equilibrium.
Implementation
In order to run cyclic pursuit, the TurtleBots first had to have the ability to drive in a circle with prescribed speed and radius. We have a couple of options to make this happen such as using a simple pid or sliding mode controller with a goal position. Instead we decided to test an algorithm, “Global Path Following for the Unicycle and Other Results”, by Mohamed I. El-Hawwary, and Manfredi Maggiore[1]. This paper introduces a non-linear controller which drives the TurtleBot to a stable velocity around a prescibed circle origin and radius.
The algorithm needs to know the desired velocity of the TurtleBot. Cyclic pursuit calculates the velocity based on the next TurtleBots distance ahead. Cyclic pursuit tells the circular path following algorithm a low velocity if the TurtleBot is too close to the next Turtlebot, and a high velocity if it is far away. After some time, the TurtleBots (who are all individually running a circular path following algorithm and cyclic pursuit) will reach an equidistant equilibrium.
In ROS
The circular path following algorithm and the cyclic pursuit fits well into the ROS network. The Cyclic pursuit algorithm subscribes to a topic “afterKalman” and “all_positions” to receive the positions of the TurtleBot and it's neighbor. With the position data, cyclic pursuit publishes a velocity based on the previously described algorithm. Circular path following listens to the velocity and influences the TurtleBot to converge to the circle a the desired velocity.