Smart Resort Island, a margical fusion of nature and comfort with elegance.
Our Smart Island is just waiting to be explored. You can have romantic picnic lunches. Launch yourself into warmest aquamarine sea, playing with dolfine and enjoy sunset beach.
Set foot on our private island in Kenya, infinite exclusive villas ready for you.
Situated on Smart Island along Watamu beach. The Smart Resort Island is sorrounded by indigenous forest and offers magnificent sea views. The resort has three outdoor pools and spa.
Whether you're looking for and all-inclusive resort to handle everything from food, lodging, drinks and amenties or a romantic resort primed to give you and your significant other the spicy experience you've both have been waiting for, there's a resort for your vacation needs.
Perhaps you want to bring the whole family and need a kids club or, when necesary, an adults-only zone.
Looking to be in a water? There are resorts perfectly situated beachside and, for the more adventurous, overwater bungalows, where the water sings you to sleep. Some resorts are more affordable than others, but at the end of the day, this is vacation-live (and spend) a little.


| Sequence Diagram |
Controller File |
Message Injector File |
Number of Passed Assertions |
Number of Failed Assertions |
Test Results |
Notes |
| SD 1A | sd1a1.cf | sd1a1.mf | 2 | 0 | sd1a1.stats | |
| SD 1B | sd1b1.cf | sd1b1.mf | 2 | 0 | sd1b1.stats | |
| SD 1C | sd1c1.cf | sd1c1.mf | 2 | 0 | sd1c1.stats | |
| SD 1D | sd1d1.cf | sd1d1.mf | 2 | 0 | sd1d1.stats | |
| SD 1E | sd1e1.cf | sd1e1.mf | 2 | 0 | sd1e1.stats | |
| SD 1F | sd1f1.cf | sd1f1.mf | 4 | 0 | sd1f1.stats | |
| SD 2A | sd2a1.cf | sd2a1.mf | 2 | 0 | sd2a1.stats | |
| SD 2B | sd2b1.cf | sd2b1.mf | 2 | 0 | sd2b1.stats | |
| SD 3A | sd3a1.cf | sd3a1.mf | 0 | 0 | sd3a1.stats | |
| SD 3B | sd3b1.cf | sd3b1.mf | 7 | 0 | sd3b1.stats | |
| SD 4A | sd4a1.cf | sd4a1.mf | 11 | 0 | sd4a1.stats | |
| SD 5A | sd5a1.cf | sd5a1.mf | 10 | 0 | sd5a1.stats | |
| SD 5B | sd5b1.cf | sd5b1.mf | 10 | 0 | sd5b1.stats | |
| SD 6A | sd6a1.cf | sd6a1.mf | 1 | 0 | sd6a1.stats | |
| SD 7A | sd7a1.cf | sd7a1.mf | 8 | 0 | sd7a1.stats | |
| SD 7B | sd7b1.cf | sd7b1.mf | 12 | 0 | sd7b1.stats | |
| SD 7C | sd7c1.cf | sd7c1.mf | 5 | 0 | sd7c1.stats | |
| SD 8A | sd8a1.cf | sd8a1.mf | 31 | 0 | sd8a1.stats | |
| SD 9A | sd9a1.cf | sd9a1.mf | 13 | 0 | sd9a1.stats | |
| SD 10A | sd10a1.cf | sd10a1.mf | 4 | 0 | sd10a1.stats | |
| SD 11A | sd11a1.cf | sd11a1.mf | 20 | 0 | sd11a1.stats |


| Scarab: Application Programming Interface (API) |
This is the main API for using the Scarab framework in most languages. Each language may have slightly different semantics or may implement additional features, check in the implementation for details.
Scarab's API is patterned after Apple's (nee NeXT's) Distributed Objects (DO). See the docs for the NSConnection class in the Foundation framework reference.
In addition to DO, Scarab also supports simple RPCs (i.e. the "object" is the remote system and methods are it's available procedures) and messaging. "Messaging" is simply carrying a bundle of data from the sender to the receiver, without any understanding of the content. "Messaging" is used generically to mean messaging, RPC, and/or DO. Messaging (upper-level) protocols may be synchronous, asynchronous, or bi-directional, or not. Transport (lower-level) protocols may either be stream based and support multiple messages (TCP/IP, HTTP 1.1) or request based and support only one message at a time (HTTP, SMTP).
Apple DO supports only one internal, unspecified, protocol in it's NSConnection class. Scarab supports several protocols and uses a connection class unique to each protocol. Scarab uses a manager class, Scarab, to create connections and provide support.
Scarab uses a special form of URL for identifying servers. In addition to the transport URL (http:, mailto:, tcp: [default]) Scarab URLs also prefix the upper-level protocol (ldoxml:, soap:):
ldoxml:http://monkeyfist.com/editor.cgi
Scarab.connect_to() and Scarab.connect_to_root_at() are used by clients. connect_to() creates a connection to a server, one that you can do RPCs, DO, or messages over if you explicitly make those calls on the connection object (for "plain" messages, that's the only way). connect_to_root_at() is more of a distributed objects thing, you actually get a proxy object back that "acts" like the remote object, you simply make calls on it as if it were a local object.
Most RPC and DO users use only the proxy objects and can ignore all the ScarabConnection methods. Users who send non-RPC, non-DO messages (like XML messages) will use the message() and message_xml methods to send their messages.
Scarab.server_on() is used by servers. It creates a socket that is "listening" for connections but not yet accepting them. If your server is a daemon, you just call serve() and from then on Scarab accepts all connections and processes all requests. If your server isn't a daemon, and it's handling it's own sockets, then accept() is called whenever an incoming request is ready; accept() processes one message and returns.
Here is an example client (in Python):
import Scarab server = Scarab.connect_to('ldoxml:http://monkeyfist.com/editor.cgi') server.post(message)And an example server:
import Scarab import MyObject root = MyObject.MyObject() endpoint = Scarab.server_on('tcp://casbah.org:1234', { 'root' : root }) endpoint.start()
The Scarab API contains both commonly used, basic methods as well as advanced methods that may be needed by some users. The rest of this section describes the basic Scarab API and the next section describes the remaining parts of the API.
In the following description, methods are indicated by having parenthesis' ("( ... )") and attributes do not.
In Java, attributes are accessed like conn.getStatistics() and conn.putReplyTimeout(seconds). In Perl, attributes are accessed using hash references like $conn->{Statistics} and $conn->{ReplyTimeout}=$seconds. In Python, attributes are accessed like conn.statistics and conn.reply_timeout=seconds
The Scarab class is used to create clients and servers.
ScarabConnection objects are returned by the Scarab server() and serve() methods. ScarabConnection is where most of the functionality of Scarab is implemented.
ScarabConnection is an "endpoint" and can be either a client, a server, or both. Some methods only apply to server endpoints and some only apply to client endpoints.


SOQL console
Login
Logged in as '
'
Input SOQL
Help
Query
Download as CSV
/
Download as TSV
×
Select Connecting Instance Type
Connecting to
Production (login.salesforce.com)
Sandbox (test.salesforce.com)
Database.com (login.database.com)
Others...
Login Server
×
Setting
API version
API Call Proxy
Server
Local (using Flash XHR)
×
Help
Start Completion
Tab
Ctrl + Space
Move Cursor to Next Candidate
↓ (Down Arrow)
Tab
Ctrl + Space
Move Cursor to Previous Candidate
↑ (Up Arrow)
Shift + Tab
Ctrl + Shift + Space
Execute Completion
Return
Cancel Completion
Esc
Run Query
Ctrl + Return


proj_1 (brainfuck_uP)
Synthesis -
Compiler Constraint Applicator
Constraint Checker Report (21:55 21-Dec)
Place and Route -
Timing Report (21:59 21-Dec)
Session Log (22:01 21-Dec)


Local GForge FAQ
Adding a new developer account
- Log in to the GForge site; note that only administrators are
allowed to register new users.
- On the white tab list at the top click "Admin".
- Under "User Maintenance" choose "Register a New User" and fill in the form with a username, password and e-mail address.
- The new account holder will receive a confirmation e-mail (at the
specified e-mail address) that the account has been created. He/she
should click on the verification link in the e-mail and log in as the
new user. They should then change their password, unless a
user-specified password was entered in the previous step.
Back in the administrative session the new user should be added to
(e.g.) the SML/NJ project:
-
Go to the SML/NJ project and click on the Admin tab.
(https://smlnj-gforge.cs.uchicago.edu/project/admin/?group_id=15).
- At the bottom of the "Group Members" table on the right, click
"Add Users From List".
- Find the user name by clicking on the button labeled by the
first letter of the name. Then click on the "Add User" box at the
right end of the line.
- Choose an appropriate role, e.g. "Senior Developer".
- Now the new user has access to the site. It may take an hour
before he/she
has check-in access to the SML/NJ SVN tree.
Last modified: Tue Jun 29 14:36:57 CDT 2010


ODD BIRDS A film review by Jeff Meyer Copyright 1987 Jeff Meyer
Seen at the Seattle Film Festival: ODD BIRDS (USA, 1986) Director/Screenwriter: Jeanne Collachia Cast: Michael Moriarty, Donna Lei Ming Lew, Nancy Yee
Ever have a film that, upon panning it, makes you feel like Snidely Whiplash? Makes you feel as if you tripped Shirley Temple and were proceeding to kick her in her little ribs? Well, I'm going to have to give "thumbs down" to ODD BIRDS, and I don't like having to do it very much, because the film has some good concepts and some nice acting, ruined by awful technical work and an ending that has to be seen to be believed.
This is a slice of life picture about a fifteen-year-old girl (Ming Lew) who is shy and withdrawn, but who desperately wishes to go into acting. Her mother (Yee), who immigrated from China, constantly informs her that her ambitions are "pipe-dreams"; and, having no friends and the average amount of confidence a 15-year-old has, she begins to have doubts about whether she should attempt acting, based on both her mother's assertions that "you have to know somebody", and an ever-growing assumption that a girl of Chinese descent could not get a leading role which is not written specifically for someone Oriental.
Then, at a sock-hop at a Catholic boy's school that she is dragged to by her with-it cousin, she meets an Irish Catholic brother (Moriarty) whom she strikes up a friendship with, and who she finds it easy to talk with. He becomes her one friend, and builds her confidence by listening to her fears and dreams. However, his leaving for a new school, along with an audition with Gower Champion (who is, I guess, somewhat of a big-shot in the musical world), bring her emotions to the fore.
The film is fine when it takes on the emotions and problems of a girl going through this particular stage in her life; the dialogue between Ming Lew and Moriarty, and between Ming Lew and Yee, rings very true to form. Lew is usually good for the role, and Michael Moriarty has always been, to my mind, one of the hidden treasures of the American acting community; he continues to grace small films like this (or weird films like Q or THE STUFF) like an undiscovered Lithgow.
Where the film falls down is in the technical direction. The film is supposed to be set in San Francisco in 1966; however, the way the film *looks* makes you wonder if it was actually *done* in 1966. The cinematography is so standard that it looks like it was done by someone from the Health Services Film Board. The music is incredibly overblown during emotional scenes. One of the girl's main talents is her singing voice, but the dubbing is so inept here that it is impossible to ignore, no matter how badly you wish to. And the ending--cripes, where did they get it? It is so hokey and done without so little care, that it resembles the "pipe dream" mentioned by the mother at the beginning of the film.  Get some training and then come see me!" O-kay. This could have been done adequately, but everyone is so over-enthusiastic that you wonder if they were shipped in from an old MGM musical.
Overall, a D, $1 movie. Good, but fatally scarred.
Now to find some babies to steal lollypops from...
Moriarty, aka Jeff Meyer INTERNET<EMAIL_ADDRESS>Manual UUCP: {uw-beaver, sun, allegra, sb6, lbl-csam}!fluke!moriarty
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


Ongoing insecurity and violence, chronic food insecurity, natural disasters and displacement has created major humanitarian and health needs. The country has long struggled to contain preventable infectious diseases such as malaria, pneumonia and diarrhoea as well as zoonotic diseases. Mali’s child mortality rate is among the highest in the world, with one in ten children dying before their fifth birthday.
Mali Red Cross, with support from the International Federation of the Red Cross and Red Crescent Societies (IFRC) and funding from USAID, has been helping communities prepare for and prevent the spread of diseases. Volunteers are sensitizing communities about health risks, with a focus on epidemic-prone diseases including diarrhoea, measles and yellow fever. Focused in Kayes and Koulikoro regions, Red Cross works with governments, communities, local responders and humanitarian partners to prepare for and respond to epidemics.
Through an extensive network of community-based volunteers, Mali Red Cross is providing critical information in the local and hard-to-reach areas in coordination with other actors including the Ministry of Health and Social Welfare, Ministry of Livestock and Fisheries, Ministry of Environment and Ministry of Agriculture. This is designed to help stop diseases from spreading by detecting them early and at community level, before an outbreak occurs.
We are ensuring communities have itical information about the spread of diseases and how to prevent them, systems to detect outbreaks and mechanisms that ensure information sharing and community engagement.Activities include:
• Engaging communities through house-to-house visits, mobile cinemas and group discussions.
• Engaging, training and collaborating with community influencers, such as imams and traditional healers.
Sierra Leone Red Cross has more than 11,000 volunteers across the country which gives extraordinary reach into communities. In their supporting role to the government, they are often central to emergency responses amid outbreaks. Activities include:
• Strengthening partnerships with different sectors and ministries.
• Training and readying communitybased volunteers.
.Epidemics not only threaten lives but all aspects of society, including trade, transportation and education. We work with a variety of key stakeholders and the media in epidemic preparedness and response. Activities include:
• Helping prepare a variety of sectors to respond.
• Engaging, training and collaborating with schools, teachers and students on critical epidemic preparedness messages and referrals.


Benford Analysis for Spark
by Daniel Voigt Godoy
Benford Analysis is a suite for detecting...
- possible frauds in accounting records
- edges or faint features in images
- weak peaks in signals
- spammers or other suspicious behaviors in social networks
It includes a set of methods conveniently assembled in a package for Apache Spark and it is integrated with a Play Application to provide RESTful APIs for these methods.
Why Benford's Law?
Benford's Law is traditionally known as a tool for accounting audits. But its wide range of applications also include image and signal processing and social network analysis. Learn more about Benford's Law, its applications and how Benford Analysis implements its methods here.
Can I use my data?
Just follow the links!


Vibe is a real-time agile project management, collaboration, and application life cycle management tool. It helps development teams stay on the same page from requirements to code review.
Vibe is your real-time kanban board to keep track of who's doing what, virtual whiteboard for turning scribbles into solutions, and your change management board for figuring out how to save the day before it all breaks down.


Fact Check: Buttigieg Claims Trump Has ‘Broken Every Promise He's Made’
Mayor Pete Buttigieg inexplicably claimed on Monday that President Donald Trump had broken every promise that he made as a candidate.
by Charlie Spiering“We’re gonna win because this president has no good answers, and he’s broken every promise that he’s made,” Buttigieg claimed on CNN on Monday.
Contrary to Buttigieg’s claim, the president has successfully delivered on a number of promises that he made, including the following successes:
- Withdrew from the Iran nuclear deal
- Withdrew from the Trans-Pacific Partnership trade deal and renegotiated NAFTA
- Withdrew from the Paris Climate accord
- Imposed steep economic tariffs on China
- Approved the Keystone XL pipeline
- Bombed “the sh*t out of” Islamic State terrorists
- Ended the individual mandate for Obamacare
- Signed historic tax cuts to boost the economy
- Selected two conservative judges for the Supreme Court
- Rebuilt the military
- Moved the U.S. Embassy to Jerusalem
- Pressured more European countries to keep NATO defense commitments
- Declared China a currency manipulator
Trump continues working on his promises to build a wall on the Southern border and slow illegal immigration, with demonstrable progress. He has also successfully wielded economic trade tariffs to bring China to the negotiating table on trade, with a first-stage agreement pending. On the economy, the president continues to deliver record low unemployment numbers in the United States and big stock market gains.
The Buttigieg campaign did not respond to a request for comment.


| DOSE: |
1 hit |
oral |
LSD |
(blotter / tab) |
It was July, in the summer of 2004, when I first tried acid. I had been using ecstasy, shrooms and speed for about a year, though neither at the time of this trip. The town I lived in at the time is not well known, except for its weed and summer raves, one of which is where my first acid trip began.
It was Friday afternoon, and there was a rave that my boyfriend, B and I were planning on going to that night. We knew how to get in for free, which was good as we had no spending cash, but I decided I wanted to try acid, which he had done three times before and I had never tried.
Living in a small town, however, doesn't offer many ways of making money let alone in the time frame I had. So I had resigned myself to going and having fun without drugs, unless I had an opportunity to get some for free. But while I was at home, I got a phone call from a friend, C asking if I could babysit her soon-to-be-two year old, and seeing this as a way to pass the time before the party I said sure.
I got to her mom's house around noon, said goodbye to her and proceeded to watch TV while the baby slept. By the time 1 rolled around, I was bored and the baby showed no signs of waking. She had fallen asleep just before I got there, and generally took three hour long naps which made for a boring time, so I phoned B while I searched the cupboards for food.
After I had tried several times and got no answer, the baby finally woke up so I got her ready to go out for a walk. The walk turned into a journey, and we didn't get back until 2:30. Shortly after we got back, her mother phoned to ask if I could babysit until 4, which I could. Another boring hour and a half later, C finally showed up to pick the baby and I up.
I asked C to drop me off at B's house, to see if he had any luck in making some cash, she agreed and then reached into her purse and handed me a $20 for babysitting. Awesome, thanks so much. Looking back, I'm sure she knew about the rave all along and had planned this in advance. So she dropped me off at B's house, where he was sitting outside smoking a joint.
I joined him and waved my money at him, grinning ear to ear. Suddenly, the rave was looking a lot more fun. While I had been gone, B had talked to M and S and they wanted to come to the rave also. So now we needed a ride, unless we were going to split up and hitch hike in pairs. B told me not to worry about it, he would figure something out. So I went to my house just down the road to get ready.
Had a shower, did my makeup and my hair. Being the only girl in the group, I'm always the one having to think ahead so I loaded a backpack up with a couple coats (the rave was on a beach) some chips and bottles of water. Then I socialized with my parents until 6:30, when it was time for me to go to S's house and meet up with everyone.
 Everyone was just sitting around smoking. Of course, I was excited about getting acid at the rave, so I asked M and S if they too were going to join in. Neither of them had any cash, but S said he might have some inside his room. He left to check it out, and knowing M had no way of getting money I told him I'd buy him a hit, assuming the acid was only $5 and as B was going to do 2 hits.
S came out shortly after with seven dollars in change, went to his mom's car and rummaged around in there, eventually coming up with another 5 bucks. M told him I was going to buy him a hit, and S said he would do the same for M, who is well over 6 feet tall and everyone assumes bigger means more drugs are needed.
S had also asked his mother to give us a ride, and she agreed, so we all piled into the car. We left at 6:50, and the rave is way out in the middle of nowhere, 'secret location' rave that nobody is supposed to know about unless they are in the know. We didn't get there until 7:30, after being stopped by the police once and told to empty backpacks, coat pockets, etc. etc. Luckily S's mom is convinced we were good kids and being in good standing with everyone in the community, was able to convince the police we were just some innocent kids out for a drugfree, harmless good time. The weed was safe.
Mothers always seem to worry, so S's mom insisted that if we hadn't found a ride home by six in the morning she would pick us up where she dropped us off. S, seeing the wisdom in her words, agreed, we said goodbye and started our trek along a cliff to get into the rave without having to pay. That took another 15 minutes, but the party had barely started.
We immediately secured ourselves a spot against some bushes, where some logs had been placed to make seats. This was to be our 'home base' during our night, as well as the logs on the opposite side of the bush facing the ocean. Now that we were inside, M and I unpacked my backpack and stuck the coats in at the bottom, the water on top and started eating from the bags of chips I had brought.
As it got later, more and more people began to arrive, and the ones we knew would come over to see what our plans were for the night. At 8:30, one of the DJ's finally started their set. Somebody had set up these cloth things beside the stage, and projectors were aimed at them with trippy visuals and the such. It wasn't bad for an outdoor rave nobody was supposed to know about. By this point in time, there were probably 300 people milling about, with a dozen or so kids under 10, most of them dancing.
Now that people had begun to arrive, we all split up to talk to different friends, agreeing to meet back at home base at 10. B had all the money and was in charge of locating the acid. I met up with S, C and J and we headed out to the beach, where people were coming in with their boats to party. We met some people who had came from Vancouver in a houseboat, which was sort of cool. We probably talked to them for about half an hour, and then the next hour was spent shuttling between groups of people, C's truck and the beach. At 10, I left to meet the people I had arrived with.
I got back to our log to find A had joined our group, but B was nowhere to be found. M informed me he was talking to P about, as he put it, 'the hookup' which A was very interested in hearing about. M filled him in on the details, and A was impressed that S, being his age, should be hanging out with kids who actually did acid. Nobody bothered to inform him that it would be our first times.
S left to go buy a hot dog from a hippie who had set up some sort of shop thing, just as B was heading back with a forlorn expression on his face. He informed us P had lost half his hits and therefore was charging twice as much as normal-$10 a hit. As S and I were the only ones with money going towards it, he wanted to know if we were still down. S came back and discussed it with B, and although we felt bad that M would be left out of the fun, we agreed to go ahead.
B went back to P, made the deal and came back with three hits of acid on tiny pieces of paper. We all sat down on the log, and B told us he had heard if one sucked on the paper for several minutes before swallowing it, the high would be 'better'. I doubt this has any truth to it, but having never done acid before I decided to try it. So B and I sat there sucking on pieces of paper, watching people dance. It has a taste, not altogether unpleasant but unlike one I have ever experienced before or since. After five or so minutes, B said 'OK, swallow,' to which S replied 'Swallow what?' 'Your paper!' S informed us he didn't know he wasn't supposed to swallow it in the first place, and that was that.
Now 10:30 has rolled around, and its dark. There is a fire going off in a corner, and a girl wearing black clothes with flames on them is dancing around. Sometimes it seems like she is on fire, which amuses M especially. We probably watched her for ten minutes, until J came over and told us he had just snorted two hits of E and was rolling, having done three more before that.
The music is starting to get better, after the DJ's have switched, and we decide to go sit on the beach and wait for our high to kick in. We bring along our water and coats, as its getting cold. B and I cuddle up next to each other, M sits down beside me. S insists on standing beside the log. We are all watching out over the water. Some boats are driving around, and one of them has blue and green lights on the front. As I watch it, in the dark, the blue and green lights seem to detach themselves from the boat and start coming towards us. Focusing in on them, I notice dark shapes in the water which seem to be climbing up out of it.
I don't feel high, but what are these shapes? I tell myself they must be rocks jutting out of the water, but they are getting closer and closer, and the blue and green light seems to be moving further away. If I am high, everyone else must be too...except for M. So I ask him if he sees what I see.
He informs me that they are aliens coming out of the water.  I keep telling him to shut up, which he will not do. Its starting to scare me, I think I actually wanted to be scared and brought it on myself. But I start to cry, and B and S start to laugh hysterically at me as Michael continues his squealing noises.
I turn back to the ocean and try to tune Michael out, but the shapes are coming out of the water!  I've been watching them the whole time, they came off that boat.' Now I'm pissed off that S knew and let me be scared, but its sort of funny too. S gets up and tells us he's going back towards the fire, B asks if he's tripping and S says no. He leaves.
A few minutes later, I feel something on my hand. I freak out and jump up, and M jumps up too. B asks us what we're flailing about, and M tells him there are bugs on the log. B jumps up, and shines a light, and sure enough bugs are EVERYWHERE. Although normally I would be disgusted, I think its sort of funny, and we move around the bush to our original log.
S and A see us and come over. S sits down beside me and gives me a look I know very well, the I-think-we've-been-ripped-off look. I shoot it back at him, and we sit together on the edge of the log huffy. Anything that takes over half an hour to work, we assume will not work at all. B notices our attitudes and asks if we thought we got ripped off.  B laughs and tells us to wait for three hours, and we'll be laughing at ourselves.
Thats about the time M notices there are bugs on this log too, so we move once again. We go to the dancefloor, all the kids have vacated finally. We push and shove through the people, talking to random people we don't know, until we're out of the crowd. Looking back out over the people, I start to feel claustrophobic and say, 'lets get out of here.' Everyone agrees with me, and we head to a suspended bridge, leading to the ticket booth. S leads us onto the bridge, gets halfway across and just stops.
We all stop after him. Looking around, it seems like the bridge isn't part of this rave scene...its so calm, and peaceful, there are only the original 4 of us with no outsiders. Having been kicked out of our original two locations by bug infestations, we decide this is where we want to spend our time. Of course, the bridge being just that, soon enough people are struggling to get across and around us, which makes us feel uncomfortable. We go towards the ticket booth, where nobody bothers us. But we don't like it, so we head back to the rave and hang out for a while longer.
I finally look at my watch at 11:30. M sees me looking at my watch and asks what time it is, so I tell him. S and B overhear us talking, and we exchange glances. I don't remember any words being spoken, but it seems like we all mutually agreed to start heading back home, we felt uncomfortable where we were.
We go back across the bridge, past the ticket booth. Say goodbye to the people scattered about that we know, and start the long trek uphill towards the vehicle parking area. The walk is very vertical, and its sort of muddy even though it hasn't rained in weeks. We get about halfway up and stop, listening to the music and the occasional shout from people down below. Someone wonders aloud if we should go back, but B tells us if we start that we will be wandering back and forth all night, lets just finish what we started.
Once we begin walking again, J comes flying down the hill. He sees us and comes over, and starts laughing hysterically at us for leaving so soon.  He goes into rather graphic detail and makes us all laugh hysterically, and then says peace.
We make it to the parking area, finally, and rest under the power lines. There are four huge thick cables above our heads, and looking up I feel as though they will snap and fall on us, there being one wire for each of us. S feels the same way, and we are leery about being under them but feel moving would be cheating somehow. The wires hum and comfort us. I'm exhausted and want to sit down, but nobody will let me. Nobody is coming, and B is telling us maybe we should go back after all, it doesn't look like we'll get a ride anytime soon.
Just as he finishes saying that, firecrackers are set off beside a truck.  Two doors slam, the truck starts up and heads our way. It stops just before us, and G pops his head out to ask if we need a ride. We say sure, but he tells us we have to sit in the back of the truck as its only a 3 seater and J and A are already in the front seats.
We all pile into the back of the truck, and start our long trek back. Its ten to twelve. Its really fun, to be in the back of his truck out in the wide open. G drives fast, and we skid around a few corners. I am watching S, and around one particularly dangerous corner I see his mouth go open wide. I start to laugh, but then realize we could have flipped the truck and the four of us would have been dead. It sobers me up, but after a few minutes doesn't seem real.
G lives a few miles away from our houses, so he drops us off at his place at 12:15. He offers to let us stay at his place, but we say we want to go home. That seems to be the most important thing right now, GOING HOME. He apologizes for not driving us home, but he too wants to be in his own bed, and we don't mind. Start walking down the road.
We probably walked for ten minutes before the first car went by, and we didn't bother to try and hitch a ride. We wanted to walk the whole way home ourselves, which would be exhausting normally but we didn't even think about it. We came to this stretch of road, where one side had been clearcutted except for a single tree. As we walked by, I stared at the tree. It looked like it was spiralling upwards, and I could clearly see something climbing it. M noticed me staring at something, asked me what and I said the tree was tripping me out. M stared as we walked along, noticed it too, and pointed it out to S and B.
After we passed the spiralling monkey tree, as we named it, we came to a yard where a banana tree was growing over the fence. I told S to grab me a leaf, which he did. By this point he was wearing my backpack, so he stuck it between the backpack and his back and ran down the road hollering like an Indian. We laughed hysterically as he ran back and forth until we got to a corner. As we walked under the third streetlight we came to (most of the road doesn't have lights) it seemed to turn blue, and then went out completely. B told us to get out from under the light before we got cancer, so we ran away from the evil light.
Around this corner is a hill, and at the bottom of the hill lays a store with a pop machine out front. We had exhausted our water supply sometime before and needed a pop, but had no change left. S said he had heard if someone unplugged a machine and plug it back in it gives them a free pop, so the three boys decided to try that. I was somehow sure it wouldn't work, and so walked off by myself heading back home. Once I got to a corner though I stopped, because I didn't want to be out of their sight.
I had been waiting a few minutes when M came running out towards me, holding a pop in his hand. He gave me the bottle and I took a huge swig, and then asked how he got it. He stuck his hand up and wiggled his fingers and I laughed. S and B came running out with another bottle of pop, both were Sprite, and we started walking chugging our two bottles. By the time we got to the preschool, which is only a three minute walk away, the pop was gone.
I wanted to go play on the preschool equipment, but nobody else would join me so we continued. Past the firehall, two minutes after the preschool is a bridge, and then a restaurant which at the time was just being built. We got to the restaurant, and there was a huge pile of bricks sitting outside of the building. We stop and stare at the bricks. B says, 'maybe we should steal those bricks.' We were all thinking the same thing, but once he voiced it aloud we realized how ridiculous that would be.
'Why would you want to take those bricks? The police station is right across the street!' I tell him. He shrugs. 'I dunno. It seemed like a good idea at the time.'  We pass the cop shop and a schoolbus, and a few empty buildings but feel no need to steal or defile them in any way.
There's another steep hill coming up, and S is already at the top when we are just a third of the way up. S disappears, but then comes racing back to ask B how he would get all those bricks up this steep hill. B pretends not to hear him, and the three of us make it up the hill finally. S is nowhere to be seen, so we keep walking until we get to the community hall.
As we finally get there, M wonders aloud where S is. We hear S then, at the tennis courts, climbing the fence. M goes to get him. A few minutes later, all is quiet but nobody is reappearing. B and I go to investigate, and find them standing outside of the clinic with huge smiles on their faces. I know they want to break into the clinic and steal the pills and I agree. B's already took part in that same activity several times and tells us firmly no. Three against one, we whine at him but we know we wouldn't do it anyways.
Start walking down Pine Street, towards the trail that leads to S's house. As we are walking, a streetlight at the end of the road is also flickering a strange bluish hue. As we get to it, it goes out also. We take this opportunity to run under it, remembering the last 'evil blue light' we came across, and now we are in the trail. Somehow we've lost all lighters and flashlights we had, so we take this in the dark.
B tells us to follow him and promptly walks into a tree.  I get impatient and yell at him to get out, he yells back that he's taking a piss. As we are standing outside of S's driveway, I ask him what he's doing. He doesn't know, but wonders if he can hang out with us. Of course he can, I tell him, and M replies he is going home to bed. We say alright, we'll walk you home. Start walking, get to the corner and B comes flying out of the trail yelling for us to wait up. We don't.
Walking up O street, M's house is on the corner of C street and O street. C street is where B and I both live. M is acting really grumpy, but S and I chalk it up to the fact that we are all high on acid and he is straight. Say goodbye to M at his driveway, and B finally catches up and grabs my hand like I'm a little kid. He leads us to his house, where luckily his dad is gone for the night. He lets us in, nobody is home. We go into the kitchen, B says he has to check something and disappears into the bathroom.
I grab a bottle and fill it up with water, bring it to S and fill up another for myself. We sit down at the table facing each other, drinking water. Bill blows his nose from in the bathroom, and we start laughing hysterically and spew water all over the carpet. Bill comes out and sees us laughing like that, looks at the clock. Its 1:15. 'I told you guys you'd be laughing at yourselves in three hours,' he gloated.
B disappears. S is staring at a wall. I wait for him to say something to me, but he is entranced. I finally ask him whats up, and he tells me to look at the picture. So I do. The picture is of a girl standing in the middle of a field of poppies. The poppies are spinning and breathing, and the girl is dancing. Its really intense, and S and I both simultaneously get up to see the picture closer. We stand there together until we hear B yelling, 'get up here!' from upstairs. Its 1:23 and we go upstairs, into the dark. I get up first, and shout 'Where are you?' There are no lights anywhere. S comes up and flicks a lighter he found downstairs, and we make our way to D's room.
A blue light is coming out from under the door, and we want to know what it is. Open the door, and B is sitting on the couch, with the TV on. We're supposed to watch a movie, he tells us. So we all kneel down and look for movies. S says he wants to watch Charlie and the Chocolate Factory, I want to watch Pink Floyd's The Wall.  The movie comes on, its porn.
B finally gets pissed off at the way things are turning out and screams at us that if we are going to fight we can just watch blue. So we watch the blue TV screen for a long time. It doesn't do anything. S is finally disgusted with B's lack of letting us watch anything, and says he is leaving. B says fine like he is mad at him. I tell S we'll walk him home, S says ok. B says he isn't walking S anywhere and I can just stay there with him, cuz S will be ok. I say no, this is his first time on acid he doesn't need to be wandering around by himself. S and I leave.
Once halfway down the driveway, I realize I forgot my coat. Go back inside to get it and B grabs me, but I push him away and say I need my coat.  S laughs at that, and we go off to his place. I walk S to his corner and say goodbye, and as I am walking up the hill I see someone. For some reason I think its M, but it is B coming to walk me back to his place.
We go inside and watch more blue. Its nice to just sit there on the couch with him, and not have to talk, just enjoy what is going on.  B no longer has a room in this house and lives at mine, but we don't want to go there so we sleep in his sister's room.
K's room has pictures everywhere, and I am amazed by them. I spend the next three hours wandering around her room, looking at everything. B is just lying in bed, I don't think he's having a good trip but I don't care about him for once. I finally go and sit with him when the sun starts to rise. He tells me he doesn't feel good, so I rub his back. For some reason, I can tell through the way his back feels how he is feeling. We lay in bed together. I'm not really high anymore, but I can't fall asleep. B is pissed off that he hasn't slept all night, he keeps on yelling about it.
Usually I don't handle staying up all night that well, but this time I know I just have to stay calm so B can get through it, that is all that matters. He keeps on saying his dad will be home soon and he can't be in the house, FUCK! That is how he says it. Somehow we fall asleep, around 7.  B goes downstairs and talks to his dad, comes upstairs and gets me up and ready to go to my place. He says he'll be there shortly.
I go home and have a shower so I feel better. Go downstairs and get changed into PJ's, then back upstairs to get some orange juice. I sit on the couch and watch The Today Show with my parents. They ask me how the rave was, I say fine. How'd you get there, how'd you get back, where'd you stay, when did you get there. I answer all the questions in a neutral tone, normally I'd get angry at them.
As I'm sitting on the couch, I feel detached from myself. I can feel, not see myself talking to my parents like I am an outsider, watching a different family's morning. Its a different perspective, and I have this sort of detached feeling for the rest of the day. Even now to this day, over a year after the fact I still have the ability to put stuff aside and look at it like its not happening to me, which never ceases to amaze me and I give full credit to acid. Its definitely remarkable.
On a different note, a few days after this adventure I talked to S about what he did after getting home. He said he got home and went to the bathroom, and as he was standing there the tiles and walls appeared to be moving around him. This disturbed him and he went to bed right after, and fell asleep immediately. A few hours later, around 4, he woke up went to the bathroom and puked. I've never heard of this happening to anyone else, but it happened to him which was strange I thought, and he never mentioned anything other than that it was fun and he'd try it again sometime, but apparently it didn't have the same effect on him as it did me.
For me, it was an awesome experience that I'm glad I had.
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.


{% blocktrans trimmed %}
Resize the canvas by scrolling up/down with your mouse/trackpad on the topology.
Pan around the canvas by clicking and dragging the space behind the topology.
{% endblocktrans %}
{% blocktrans trimmed %}
There are no networks, routers, or connected instances to display.
{% endblocktrans %}


--- layout: post title: REBAR ---
Summary of some techniques for differentiating through discrete variables, particularly REBAR [1].
We want to differentiate through expectations of programs with discrete RVs. With non-discrete variables, we can use the reparameterization trick:
\begin{align} \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(x)}[f(x)] &= \frac{\partial}{\partial \theta} \mathbb{E}_{p(z)} [ f(g(z, \theta)) ] \quad \text{where} \quad g(z, \theta) \overset{d}{=} x\\ &= \mathbb{E}_{p(z)} [ \frac{\partial}{\partial \theta} f(g(z, \theta)) ] \quad \text{for $g$ satisfying certain properties} \end{align}Note that this can be modified to allow \(f\) to depend on \(x\) and \(\theta\). When \(x\) (and therefore \(g\)) is discrete, exchanging the expectation and derivative is not valid, so we cannot use the reparameterization trick. Therefore, the derivative is typically estimated using the REINFORCE estimator:
\begin{align} \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(x)}[f_\theta(x)] &= \frac{\partial}{\partial \theta} \int_x f(x) p_\theta(x) dx \\ &= \int_x f(x) \frac{\partial p}{\partial \theta}(x) dx \\ &= \int_x p(x) f(x) \frac{\partial}{\partial \theta}\log p_\theta(x) dx \\ &= \mathbb{E}_{p_\theta(x)} [f(x) \frac{\partial}{\partial \theta}\log p_\theta(x)] \end{align}However, this estimator has very high variance. This paper looks at how to reduce this variance.
Control variates can be used in combination with REINFORCE to reduce the variance:
\begin{align} \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(b)}[f(b)] &= \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(b, c)}[f(b)-c] + \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(b,c)}[c] \\ &= \mathbb{E}_{p_\theta(b, c)} [(f(b) - c) \frac{\partial}{\partial \theta}\log p_\theta(b, c)] + \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(c)}[c] \\ &= \mathbb{E}_{p_\theta(b, c)} [(f(b) - c) \frac{\partial}{\partial \theta}\log p_\theta(b)] + \frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(c)}[c] \end{align}The last step follows because \(p(c|b)\) is independent of \(\theta\)? No. Because of the main trick in the paper then? \(c\) can be chosen so that there is a closed-form expression for the second term, \(\frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(x)}(c(x))\), and so that it is close to \(f(x)\). Since the variance introduced by the REINFORCE estimator is related to \(|f(b)-c|\), this reduces the variance in estimates of the first term. However, finding a good \(c\) is difficult.
Continuous relaxation allows the reparameterization trick to be used on discrete variables. It involves denoting discrete random variables, e.g. \(x \sim Bernoulli(\theta)\), as a discontinuous function of a continuous variable, e.g. \(H(z, \theta)\) where \(z \sim Uniform(0, 1)\) and \(H(z, \theta) = (z < \theta)\). The discontinuous function is then `relaxed' into a continuous function with a temperature parameter \(\lambda > 0\) such that the approximation becomes exact as \(\lambda \rightarrow 0\). Lambda is tuned to minimise the trade-off between bias (for high \(\lambda\)) and variance (for small \(\lambda\)).
REBAR attempts to use a continuous relaxation as a control variate.
Let \(b \sim Bernoulli(\theta)\), and suppose we want to calculate \(\frac{\partial}{\partial \theta} \mathbb{E}_{p_\theta(b)}[f_\theta(b)]\). From now on, we drop the subscript \(\theta\) for cleaner notation. To estimate this, we reparameterize \(b\) as \(H(z) \approx \sigma_\lambda(z)\):
\begin{align} \frac{\partial}{\partial \theta} \mathbb{E}_{p(b)}[f(b)] &= \frac{\partial}{\partial \theta} \mathbb{E}_{p(z)}[f(H(z))] \\ &= \frac{\partial}{\partial \theta} \mathbb{E}_{p(z)}[f(H(z)) - \eta f(\sigma_\lambda(z))] + \frac{\partial}{\partial \theta} \mathbb{E}_{p(z)}[\eta f(\sigma_\lambda(z))] \\ &= \mathbb{E}_{p(z)}[(f(H(z)) - \eta f(\sigma_\lambda(z))) \frac{\partial}{\partial \theta} \log p(z)] + {E}_{p(z)}[\eta \frac{\partial}{\partial \theta} f(\sigma_\lambda(z))] \end{align}The paper's main trick is finding a clever way to marginalise out the \(\log p(z)\), and instead use \(\log p(b)\), which is much less noisy: It is simple to show that \(\mathbb{E}_{p(z)}[f(H(z)) \frac{\partial}{\partial \theta} \log p(z)] = \mathbb{E}_{p(z)}[f(b) \frac{\partial}{\partial \theta} \log p(b)]\) (they are REINFORCE estimators of the same gradient), so we consider how to do a similar trick on \(\mathbb{E}_{p(z)}[f(\sigma_\lambda(z) \frac{\partial}{\partial \theta} \log p(z)]\):
\begin{align} \mathbb{E}_{p(z)}[f(\sigma_\lambda(z) \frac{\partial}{\partial \theta} \log p(z)] &= \mathbb{E}_{p(b)}\mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z)) \frac{\partial}{\partial \theta} \log p(z, b)] \quad \text{as } p(z, b) = p(z) \\ &= \mathbb{E}_{p(b)}\mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z)) \frac{\partial}{\partial \theta} \log p(b)] + \mathbb{E}_{p(b)}\mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z)) \frac{\partial}{\partial \theta} \log p(z|b)] \\ &= \mathbb{E}_{p(b)}[\mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z))] \frac{\partial}{\partial \theta} \log p(b)] + \mathbb{E}_{p(b)}[ \frac{\partial}{\partial \theta} \mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z))]] \\ &= \mathbb{E}_{p(b)}[\mathbb{E}_{p(z|b)}[f(\sigma_\lambda(z))] \frac{\partial}{\partial \theta} \log p(b)] + \mathbb{E}_{p(b)}[ \mathbb{E}_{p(z|b)}[\frac{\partial}{\partial \theta} f(\sigma_\lambda(z)) ]] \end{align}We then define reparameterizations, \(z \equiv g(u, \theta) \sim p(z)\) and \(\hat{z} \equiv g(v, H(z), \theta) \sim p(z|H(z))\) and define the expectation as being over \(u\) and \(v\): \[ \frac{\partial}{\partial \theta} \mathbb{E}_{p(u, v)} \bigg[ (f(H(z)) - \eta f(\sigma_\lambda(\hat{z}))) \frac{\partial}{\partial \theta} \log p(b) \Big|_{b=H(z)} - \eta \frac{\partial}{\partial \theta} f(\sigma_\lambda(\hat{z})) + \eta \frac{\partial}{\partial \theta} f(\sigma_\lambda(z)) \bigg] \] We now rely on \(f(H(z))\) being close to \(f(\sigma_\lambda(\hat{z}))\) for the use of the control variate to reduce variance. Intuitively, this seems okay as, while \(\hat{z}\) is not equal to \(z\), it is conditioned on \(H(z)\).
The gradient is unbiased for any \(\lambda\), so \(\lambda\) can be optimised solely to minimise the variance. It is possible to differentiate the variance w.r.t \(\lambda\), so this can be optimised online along with \(\theta\).
It is easy to generalise if there are independent random variables (e.g. a single layer of stochastic units in a network). However, if there are discrete variables with distributions dependent on earlier variables (e.g. multiple stochastic layers connected together), it is not so obvious how to apply this. They discuss this in more detail…
| [1] | George Tucker, Andriy Mnih, Chris J Maddison, John Lawson, and Jascha Sohl-Dickstein. Rebar: Low-variance, unbiased gradient estimates for discrete latent variable models. In Advances in Neural Information Processing Systems, pages 2627--2636, 2017. |


Icons accessibility agree-handshake alarm alert-error alert-help alert-information alert-warning anchor approval archive arrange-column arrange-grid arrange-list arrange-masonry arrow-e arrow-end arrow-n arrow-s arrow-start arrow-w arrows-e-w arrows-n-s arrows-nw-se arrows-sw-ne asterisk at atom audio award badge barcode battery-max-charging battery-mid-charging battery-min-charging battery-max battery-mid battery-min bell blacksmithing blockchain bluetooth book bookmark brightness-max brightness-mid brightness-min bug calculator calendar camera-photo camera-video CD chart-area chart-bar chart-bubble chart-line chart-pie cli clip clock cloud code coin collaborate comment community company compass configuration contacts contrast conversation cooperate copy credit-card cross curriculum cursor-default cursor-pointer cut database denied design desktop dialer diamond discount discover document-legal document-pdf document-zip document download drive dropdown-arrow dropup-arrow eco education eject email-draft email-read email-unread energy enter erlenmeyer exclamation exit eyedropper factory feather filter fingerprint fire flag folder-closed folder-empty folder-zip functional-diversity game gift group grow hammer hand hashtag headphones headphones-mic heart-empty heart-full help hierarchy history home idea image inbox-empty input-checkbox-background input-checkbox-indeterminate input-checkbox-square input-checkbox-tick input-radio-background input-radio-circle input-radio-dot ionizing-radiation justice key-backspace key-enter key keyboard laptop layers lens-minus lens-plus lens lightbulb link link-external list-ordered-hindu-arabic list-unordered-block list-unordered-circle list-unordered-disc list-unordered-square location lock-close lock-open loop magic-wand map mask math-addition math-division math-equality math-infinity math-multiplication math-percent math-substraction media-end media-fast-forward media-pause media-play media-rewind media-shuffle media-start media-stop megaphone menu-3-dots-h menu-3-dots-v menu-9-dots menu-burger microphone minus module money mouse move-e-w move-e move-n-s move-n move-s move-w move news notepad ok on-off open-source package paintbrush paint-roller palette paper-plane password paste pencil performance phone plug plus portfolio presentation print-2d print-3d processor pulse pushpin qrcode question recycle redo reload repeat research resize-maximize resize-minimize road-sign router rss save scale security seed send server settings share shop smartphone smartwatch software solidarity sound-max sound-mid sound-min sound-off spanner star-empty star-half star-full store strongbox tablet tag text-align-center text-align-justify-center text-align-justify-left text-align-justify-right text-align-left text-align-right text-bold text-indent-in text-indent-out text-italic text-underline thumbs-down thumbs-up time timer translate trashbin umbrella undo upload usb user user-profile version-branch version-fork version-merge video view-hide view-show voucher vr wall wallet web wifi-max wifi-mid wifi-min wifi-no window window-many world


cooking and modeling processes
Following is a set of concepts needed for modeling processes with analogies
to cooking. This is a rough, informal sketch of ideas to be fleshed out more
formally.
- resources / ingredients
- timers / waiting
- verbs / operations from known vocabulary: chop / mix etc
- perishable / expiring resources
-
constraints: don't leave empty pan on fire for more than N seconds
-
alternate context for terms within scope of recipe: substitute vegan
versions of all animal-based ingredients
-
running out of something, temporarily, requesting / waiting for
replenishment / service
-
oven simulation using force layout (opening door bumps it towards room
temp, which could itself be a continuous variable simulation)
- event: when oven reaches 350°, put prepared pan into oven
-
referencing things / naming composites. "the prepared pan", "the stuffing"
-
attribute queries: "the wet ingredients" and "the dry ingredients"
- irreversible transforms: aggregates, e.g. mixing liquids
- output of one process is input to another
-
state machine: when a pancake begins to bubble, flip it. then when it no
longer sticks to the pan, remove it from pan (dequeue)
-
event from stream with threshold condition: when the onions are browned,
add the broccoli
-
error handling: if you burn what's in the pan, throw it out and restart
that part of the process over
-
precondition: ensure knives are sharpened
-
inference rule: range/domain. chopping is only for solids, pouring is only
for liquids
- event from external system: rice cooker switches to "finished"
-
synchronization: (when the crust and the filling are complete), put the
filling into the crust
-
parallelization: while the oven is preheating / while the dough is rising
-
parallel with constraints: use one of N burners
-
transforms with possible reverse mapping: map, filter (cookie dough ball
<-> cookie)
-
instance of another model: serve with the bread from recipe X
-
Use output of another process as input to this process: with the frosting
from recipe X, frost the finished cake
-
multiple instances of another model: make two of the flaky pie crusts
-
arbitrary selection: make a pie crust of your choice (or 2)
- parameterization: multiply recipe, use variant (whole-wheat)
- rules: 2 cups water to one cup white rice
- rule specializations: 2.5 cups water for brown rice
- override: substitute ingredients
-
blocking queues: fixed-capacity cookware (e.g boil 6 eggs at a time,
dequeue when it floats)
-
environmental factors: humidity, air pressure and temperature.
- batching
- loops: repeat (sub) process for each stuffed pepper
-
environmental factors: choose a seasonal/regional vegetable
-
state: make a cookie with one spoonful of batter until you run out.
generally, things in any state of preparation. state of stove range, N
burners
-
dataflow: room / oven temperature. "cookedness" of something as a
continuous (discretized) variable. water flow filling container. ratio of
size of dough rising (e.g. when the dough has doubled in size)
-
external events: timer, arrival of delivery (e.g. for ingredients)
-
reflected (not reified) processes. e.g. consumers taking from queue (i.e.
people walking into the kitchen and taking from stack as you cook).
simulation, can you reach a threshold amount with different rates of
production / consumption
- units (tbsp, tsp, cup, quart)


sparknlp_jsl.annotator.GenericClassifierApproach¶
- class sparknlp_jsl.annotator.GenericClassifierApproach(classname='com.johnsnowlabs.nlp.annotators.generic_classifier.GenericClassifierApproach')[source]¶
Bases:
sparknlp.common.AnnotatorApproach
Trains a TensorFlow model for generic classification of feature vectors. It takes FEATURE_VECTOR annotations from FeaturesAssembler` as input, classifies them and outputs CATEGORY annotations.
Input Annotation types
Output Annotation type
FEATURE_VECTOR
CATEGORY
- Parameters
- labelColumn
Column with one label per document
- batchSize
Size for each batch in the optimization process
- epochsN
Number of epochs for the optimization process
- learningRate
Learning rate for the optimization proces
- dropou
Dropout at the output of each laye
- validationSplit
Validaiton split - how much data to use for validation
- modelFile
File name to load the mode from
- fixImbalance
A flag indicating whenther to balance the trainig set
- featureScaling
Feature scaling method. Possible values are ‘zscore’, ‘minmax’ or empty (no scaling)
- outputLogsPath
Path to folder where logs will be saved. If no path is specified, no logs are generated
Examples
>>> import sparknlp >>> from sparknlp.base import * >>> from sparknlp.common import * >>> from sparknlp.annotator import * >>> from sparknlp.training import * >>> import sparknlp_jsl >>> from sparknlp_jsl.base import * >>> from sparknlp_jsl.annotator import * >>> from pyspark.ml import Pipeline >>> features_asm = FeaturesAssembler() ... .setInputCols(["feature_1", "feature_2", "...", "feature_n"]) ... .setOutputCol("features") ... >>> gen_clf = GenericClassifierApproach() \ ... .setLabelColumn("target") \ ... .setInputCols(["features"]) \ ... .setOutputCol("prediction") \ ... .setModelFile("/path/to/graph_file.pb") \ ... .setEpochsNumber(50) \ ... .setBatchSize(100) \ ... .setFeatureScaling("zscore") \ ... .setlearningRate(0.001) \ ... .setFixImbalance(True) \ ... .setOutputLogsPath("logs") \ ... .setValidationSplit(0.2) # keep 20% of the data for validation purposes ... >>> pipeline = Pipeline().setStages([ ... features_asm, ... gen_clf ...]) ... >>> clf_model = pipeline.fit(data)
Methods
__init__
([classname])clear
(param)Clears a param from the param map if it has been explicitly set.
copy
([extra])Creates a copy of this instance with the same uid and some extra params.
explainParam
(param)Explains a single param and returns its name, doc, and optional default value and user-supplied value in a string.
Returns the documentation of all params with their optionally default values and user-supplied values.
extractParamMap
([extra])Extracts the embedded default param values and user-supplied values, and then merges them with extra values from input into a flat param map, where the latter value is used if there exist conflicts, i.e., with ordering: default param values < user-supplied values < extra.
fit
(dataset[, params])Fits a model to the input dataset with optional parameters.
fitMultiple
(dataset, paramMaps)Fits a model to the input dataset for each param map in paramMaps.
Gets current column names of input annotations.
Gets whether Annotator should be evaluated lazily in a RecursivePipeline.
getOrDefault
(param)Gets the value of a param in the user-supplied param map or its default value.
Gets output column name of annotations.
getParam
(paramName)Gets a param by its name.
getParamValue
(paramName)Gets the value of a parameter.
hasDefault
(param)Checks whether a param has a default value.
hasParam
(paramName)Tests whether this instance contains a param with a given (string) name.
isDefined
(param)Checks whether a param is explicitly set by user or has a default value.
isSet
(param)Checks whether a param is explicitly set by user.
load
(path)Reads an ML instance from the input path, a shortcut of read().load(path).
read
()Returns an MLReader instance for this class.
save
(path)Save this ML instance to the given path, a shortcut of 'write().save(path)'.
set
(param, value)Sets a parameter in the embedded param map.
setBatchSize
(size)Size for each batch in the optimization process
setDropout
(dropout)Sets drouptup
setEpochsNumber
(epochs)Sets number of epochs for the optimization process
setFeatureScaling
(feature_scaling)Sets Feature scaling method.
setFixImbalance
(fix_imbalance)Sets A flag indicating whenther to balance the trainig set.
setInputCols
(*value)Sets column names of input annotations.
setLabelCol
(label_column)Sets Size for each batch in the optimization process
setLazyAnnotator
(value)Sets whether Annotator should be evaluated lazily in a RecursivePipeline.
setLearningRate
(lamda)Sets learning rate for the optimization process
setModelFile
(mode_file)Sets file name to load the mode from"
setOutputCol
(value)Sets output column name of annotations.
setOutputLogsPath
(output_logs_path)Sets path to folder where logs will be saved.
setParamValue
(paramName)Sets the value of a parameter.
setValidationSplit
(validation_split)Sets validaiton split - how much data to use for validation
write
()Returns an MLWriter instance for this ML instance.
Attributes
batchSize
dropout
epochsN
featureScaling
fixImbalance
getter_attrs
inputCols
labelColumn
lazyAnnotator
learningRate
modelFile
outputCol
outputLogsPath
Returns all params ordered by name.
validationSplit
- clear(param)¶
Clears a param from the param map if it has been explicitly set.
- copy(extra=None)¶
Creates a copy of this instance with the same uid and some extra params. This implementation first calls Params.copy and then make a copy of the companion Java pipeline component with extra params. So both the Python wrapper and the Java pipeline component get copied.
- Parameters
extra – Extra parameters to copy to the new instance
- Returns
Copy of this instance
- explainParam(param)¶
Explains a single param and returns its name, doc, and optional default value and user-supplied value in a string.
- explainParams()¶
Returns the documentation of all params with their optionally default values and user-supplied values.
- extractParamMap(extra=None)¶
Extracts the embedded default param values and user-supplied values, and then merges them with extra values from input into a flat param map, where the latter value is used if there exist conflicts, i.e., with ordering: default param values < user-supplied values < extra.
- Parameters
extra – extra param values
- Returns
merged param map
- fit(dataset, params=None)¶
Fits a model to the input dataset with optional parameters.
- Parameters
dataset – input dataset, which is an instance of
pyspark.sql.DataFrame
params – an optional param map that overrides embedded params. If a list/tuple of param maps is given, this calls fit on each param map and returns a list of models.
- Returns
fitted model(s)
New in version 1.3.0.
- fitMultiple(dataset, paramMaps)¶
Fits a model to the input dataset for each param map in paramMaps.
- Parameters
dataset – input dataset, which is an instance of
pyspark.sql.DataFrame
.paramMaps – A Sequence of param maps.
- Returns
A thread safe iterable which contains one model for each param map. Each call to next(modelIterator) will return (index, model) where model was fit using paramMaps[index]. index values may not be sequential.
New in version 2.3.0.
- getInputCols()¶
Gets current column names of input annotations.
- getLazyAnnotator()¶
Gets whether Annotator should be evaluated lazily in a RecursivePipeline.
- getOrDefault(param)¶
Gets the value of a param in the user-supplied param map or its default value. Raises an error if neither is set.
- getOutputCol()¶
Gets output column name of annotations.
- getParam(paramName)¶
Gets a param by its name.
- getParamValue(paramName)¶
Gets the value of a parameter.
- Parameters
- paramNamestr
Name of the parameter
- hasDefault(param)¶
Checks whether a param has a default value.
- hasParam(paramName)¶
Tests whether this instance contains a param with a given (string) name.
- isDefined(param)¶
Checks whether a param is explicitly set by user or has a default value.
- isSet(param)¶
Checks whether a param is explicitly set by user.
- classmethod load(path)¶
Reads an ML instance from the input path, a shortcut of read().load(path).
- property params¶
Returns all params ordered by name. The default implementation uses
dir()
to get all attributes of typeParam
.
- classmethod read()¶
Returns an MLReader instance for this class.
- save(path)¶
Save this ML instance to the given path, a shortcut of ‘write().save(path)’.
- set(param, value)¶
Sets a parameter in the embedded param map.
- setBatchSize(size)[source]¶
Size for each batch in the optimization process
- Parameters
- sizeint
Size for each batch in the optimization process
- setDropout(dropout)[source]¶
Sets drouptup
- Parameters
- dropoutfloat
Dropout at the output of each layer
- setEpochsNumber(epochs)[source]¶
Sets number of epochs for the optimization process
- Parameters
- epochsint
Number of epochs for the optimization process
- setFeatureScaling(feature_scaling)[source]¶
Sets Feature scaling method. Possible values are ‘zscore’, ‘minmax’ or empty (no scaling
- Parameters
- feature_scalingstr
Feature scaling method. Possible values are ‘zscore’, ‘minmax’ or empty (no scaling
- setFixImbalance(fix_imbalance)[source]¶
Sets A flag indicating whenther to balance the trainig set.
- Parameters
- fix_imbalancebool
A flag indicating whenther to balance the trainig set.
- setInputCols(*value)¶
Sets column names of input annotations.
- Parameters
- *valuestr
Input columns for the annotator
- setLabelCol(label_column)[source]¶
Sets Size for each batch in the optimization process
- Parameters
- labelstr
Column with the value result we are trying to predict.
- setLazyAnnotator(value)¶
Sets whether Annotator should be evaluated lazily in a RecursivePipeline.
- Parameters
- valuebool
Whether Annotator should be evaluated lazily in a RecursivePipeline
- setLearningRate(lamda)[source]¶
Sets learning rate for the optimization process
- Parameters
- lamdafloat
Learning rate for the optimization process
- setModelFile(mode_file)[source]¶
Sets file name to load the mode from”
- Parameters
- labelstr
File name to load the mode from”
- setOutputCol(value)¶
Sets output column name of annotations.
- Parameters
- valuestr
Name of output column
- setOutputLogsPath(output_logs_path)[source]¶
Sets path to folder where logs will be saved. If no path is specified, no logs are generated
- Parameters
- labelstr
Path to folder where logs will be saved. If no path is specified, no logs are generated
- setParamValue(paramName)¶
Sets the value of a parameter.
- Parameters
- paramNamestr
Name of the parameter
- setValidationSplit(validation_split)[source]¶
Sets validaiton split - how much data to use for validation
- Parameters
- validation_splitfloat
Validaiton split - how much data to use for validation
- uid¶
A unique id for the object.
- write()¶
Returns an MLWriter instance for this ML instance.


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer
Why J
J is a very rich language. You could study and use it for years, and still consider yourself a beginner. This is in sharp contrast to simpler languages like Basic or Java, where months of concerted study and use would make you an expert. The effort required to become an expert J programmer is closer to that required to become an expert C++ programmer.
The good news is that the essence of J is so simple and consistent, that you can quickly learn enough to start solving real and interesting problems.
It is easier to learn enough Basic or Java to solve trivial problems, but it is easier to learn enough J to solve more interesting and challenging problems. And once you have that level of skill under your belt, you are not at the end of the road, but can continue to improve, making yourself a better and more formidable programmer.
J is particularly strong in the mathematical, statistical, and logical analysis of arrays of data. It is a powerful tool in building new and better solutions to old problems and even better at finding solutions where the problem is not already well understood.
As well as being a general purpose programming language, the J system also provides:
- an integrated development environment
- standard libraries, utilities, and packages
- a form designer for your application forms (windows)
- an event-driven graphical user interface to your application
- several methods of interfacing with other programming languages and applications
- rapid application prototyping and development
- royalty-free distribution of run-time versions of your application
If you are interested in programming solutions to challenging data processing problems, then the time you invest in learning J will be well spent.
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer


--- status: "ready" title: "Callout" text: "A callout is useful for highlighting an import piece of information." ---
This program is subject to minimum enrolment numbers. A refund will be provided if the program is cancelled.


fabric8 makes it really easy provision, configure and manage open source integration technologies on a number of containers (or JVMs).
watch a demo » or check out more demo videos
fabric8 has been designed to be the best platform to run techologies like: Apache ActiveMQ, Apache Camel, Apache CXF, Apache Karaf, Apache Tomcat, Apache ServiceMix
create brokers » create clusters and networks of brokers the easy way
rolling upgrades » of code or configuration changes
fabric8 is designed to make it really easy to run a number of containers on your own hardware using Java or in the open hybrid cloud via OpenShift Online, OpenShift Enterprise and docker
try fabric8 on your computer »
try fabric8 on an open hybrid cloud:
fabric8 is the open source community project (sponsored by Red Hat, Inc.) for the Fabric capability which has been integrated into JBoss Fuse and JBoss A-MQ for a number of years (since 6.0 of JBoss Fuse and 7.x of Fuse ESB)
the new io.fabric8 package structure is included in version 6.1 or later of JBoss Fuse and JBoss A-MQ


Disabled
Length: {{family.length}}
Submitter: {{family.submitter || "Unknown"}}
Created On: {{family.date_created | date: 'medium'}}
Modified On: {{family.date_modified | date: 'medium'}}


Welcome to my website. Here are somethings I enjoy.
Here is a favourite quote of mine....
... and another.


Using Faust in Cmajor
In this tutorial, we present how Faust can be used with Cmajor, a C like procedural high-performance language especially designed for audio processing, and with dynamic JIT based compilation. Compiling Faust DSP to cmajor code will allow to take profit of hundreds of DSP building blocks implemented in the Faust Libraries, ready to use Examples, any DSP program developed in more than 200 projects listed in the Powered By Faust page, or Faust DSP programs found on the net.
Who is this tutorial for?
The first section assumes a working Faust compiler installed on the machine, so is more designed for regular Faust users. The second section is better suited for Cmajor users who want to discover Faust.
Installing the required packages
Download the cmaj package and install to have it in your PATH.
Using command line tools
Generating Cmajor code
Assuming you've installed the faust compiler, starting from the following DSP osc.dsp program:
import("stdfaust.lib");
vol = hslider("volume [unit:dB]", 0, -96, 0, 0.1) : ba.db2linear : si.smoo;
freq1 = hslider("freq1 [unit:Hz]", 1000, 20, 3000, 1);
freq2 = hslider("freq2 [unit:Hz]", 200, 20, 3000, 1);
process = vgroup("Oscillator", os.osc(freq1) * vol, os.osc(freq2) * vol);
The Cmajor code can be generated using:
faust -lang cmajor osc.dsp -o osc.cmajor
This will generate a mydsp
processor with a set of methods to manipulate it. This API basically mimics the one defined for the C++ backend.
Looking at the generated code
The generated code contains input event
definition for the three sliders defined in the DSP source code:
input event float32 eventfHslider1 [[ name: "freq1", group: "/v:Oscillator/freq1", min: 20.0f, max: 3000.0f, init: 1000.0f, step: 1.0f, meta_unit0: "Hz" ]];
input event float32 eventfHslider2 [[ name: "freq2", group: "/v:Oscillator/freq2", min: 20.0f, max: 3000.0f, init: 200.0f, step: 1.0f, meta_unit1: "Hz" ]];
input event float32 eventfHslider0 [[ name: "volume", group: "/v:Oscillator/volume", min: 0.0f, max: 1.0f, init: 0.5f, step: 0.01f ]];
The needed main
function executes the DSP sample generation code:
void main()
{
// DSP loop running forever...
loop
{
if (fUpdated) { fUpdated = false; control(); }
// Computes one sample
fRec1[0] = fControl[1] + fRec1[1] - floor (fControl[1] + fRec1[1]);
output0 <- float32 (fControl[0] * ftbl0mydspSIG0.at (int32 (65536.0f * fRec1[0])));
fRec2[0] = fControl[2] + fRec2[1] - floor (fControl[2] + fRec2[1]);
output1 <- float32 (fControl[0] * ftbl0mydspSIG0.at (int32 (65536.0f * fRec2[0])));
fRec1[1] = fRec1[0];
fRec2[1] = fRec2[0];
// Moves all streams forward by one 'tick'
advance();
}
}
Note that the generated code uses the so-called scalar code generation model, the default one, where the compiled sample generation code is inlined on the Cmajor loop
block.
We cannot directly play the generated osc.cmajor
file since the cmaj program expects a osc.cmajorpatch
to execute. A simple solution is to use the following command:
cmaj create --name=osc osc
to create an osc
folder with default osc.cmajor
and osc.cmajorpatch
files. Then using the command:
faust -lang cmajor osc.dsp -o osc/osc.cmajor
allows to simply replace the default osc.cmajor
with our own Faust generated version.
The patchfile can now be compiled and executed using the cmaj program:
cmaj play osc/osc.cmajorpatch
The three declared sliders are automatically created and can be used to change the two channels frequencies and their volume.
The Cmajor processor code can directly be used in a more complex Cmajor program, possibly connected to other Faust generated or Cmajor hand-written processors. Note that the generated processor name can simply be changed using the Faust compiler -cn <name>
option, so that several Faust generated processors can be distinguished by their names:
faust -lang cmajor -cn osc osc.dsp -o osc/osc.cmajor
Using the faust2cmajor tool
The faust2cmajor tool allows to automate calling the Faust compiler with the right options and interacting with the cmaj program:
faust2cmajor -h
Usage: faust2cmajor [options] [Faust options] <file.dsp>
Compiles Faust programs to Cmajor
Options:
-midi : activates MIDI control
-nvoices <num> : produces a polyphonic DSP with <num> voices, ready to be used with MIDI events
-effect <effect.dsp> : generates a polyphonic DSP connected to a global output effect, ready to be used with MIDI or OSC
-effect auto : generates a polyphonic DSP connected to a global output effect defined as 'effect' in <file.dsp>, ready to be used with MIDI or OSC
-juce : to create a JUCE project
-dsp : to create a 'dsp' compatible subclass
-play : to start the 'cmaj' runtime with the generated Cmajor file
Faust options : any option (e.g. -vec -vs 8...). See the Faust compiler documentation.
So the following command:
faust2cmajor -play osc.dsp
will directly compile the osc.dsp
file, generate the osc.cmajor
and osc.cmajorpatch
files:
{
"CmajorVersion": 1,
"ID": "grame.cmajor.osc",
"version": "1.0",
"name": "osc",
"description": "Cmajor example",
"category": "synth",
"manufacturer": "GRAME",
"website": "https://faust.grame.fr",
"isInstrument": false,
"source": "osc.cmajor"
}
And activate the cmaj program to run the processor.
The following polyphonic ready instrument DSP can be converted to a MIDI ready cmajor instrument:
import("stdfaust.lib");
process = organ <: _,_
with {
decimalpart(x) = x-int(x);
phasor(f) = f/ma.SR : (+ : decimalpart) ~ _;
osc(f) = sin(2 * ma.PI * phasor(f));
freq = nentry("freq", 100, 100, 3000, 0.01);
gate = button("gate");
gain = nentry("gain", 0.5, 0, 1, 0.01);
organ = en.adsr(0.1, 0.1, 0.7, 0.25, gate) * (osc(freq) * gain + osc(2*freq)*0.5 * gain);
};
The following command then opens the cmaj program and MDI events can be sent to control the instrument:
faust2cmajor -play -midi -nvoices 16 organ.dsp
Note that the generated GUI is empty, since the generated processor cannot automatically reflects its controls in the main graph.
The following polyphonic ready instrument DSP, with an integrated effect, can be converted to a MIDI ready cmajor instrument:
The following command then opens the cmaj program and MDI events can be sent to control the instrument:
faust2cmajor -play -midi -nvoices 16 -effect auto clarinet.dsp
Here again the generated GUI is empty.
Generating the Cmajor output using faustremote
A possibility is to use the faustremote script to convert a local DSP with the following commands:
faustremote cmajor cmajor foo.dsp
unzip binary.zip
Using the Faust Web IDE
Faust DSP program can be written, tested in the Faust Web IDE and generated as embeddable Cmajor code.
Generating the Cmajor output
The output as a Cmajor program can directly be generated using the Platform = cmajor and Architecture = cmajor export options. The resulting foo folder is self-contained, containing the foo.cmajor
and foo.cmajorpatch
files. The program can be executed using cmaj play foo/foo.cmajorpatch
command or possibly converted as a JUCE plugin.
Generating the Cmajor output in polyphonic mode
DSP programs following the polyphonic freq/gate/gain convention can be generated using the Platform = cmajor and Architecture = cmajor-poly export options. The resulting foo folder is self-contained, containing the foo.cmajor
and foo.cmajorpatch
files. The instrument can be executed using cmaj play foo/foo.cmajorpatch
command and played with a MIDI device or possibly converted as a JUCE plugin.
Generating the Cmajor output in polyphonic mode with a global effect
DSP programs following the polyphonic freq/gate/gain convention with and an integrated effect can be generated using the Platform = cmajor and Architecture = cmajor-poly-effect export options. The resulting foo folder is self-contained, containing the foo.cmajor
and foo.cmajorpatch
files. The instrument can be executed using cmaj play foo/foo.cmajorpatch
command and played with a MIDI device or possibly converted as a JUCE plugin.
Generating the Cmajor output from a Faust DSP program found in the web
Faust DSP programs found on the Web can also be converted:
-
for instance the fverb listed on the Powered By Faust page. The DSP content can simply be loaded using the
https://faustide.grame.fr/?code=URL
syntax, so with the following URL: https://faustide.grame.fr/?code=https://raw.githubusercontent.com/jpcima/fverb/master/fverb.dsp, tested in the Faust Web IDE, then converted in a Cmajor program as already showed -
examples of the faustplayground platform can be found here and possibly converted. They have been compiled to Cmajor here


Title
Download
Download
Download
Download
Download
Download
Download
Download
Download
Download
一级标题
二级标题
三级标题


{% extends "base.html" %} {% block title %}Rebble Auth - Wizard Mode{% endblock %} {% block body %}
Be very careful with these. When you click a button, something could immediately happen with no confirmation! Do you want your possessions identified?


Unfortunately, this is the same as Chapter 1 (at least from this view). Even the source is the same as we haven't had an opportunity to use any new vec3 functions!


| GEOS SDK TechDocs
|
| 1.1 Instance Data
| 1.3 Application Instance Reference
The GCN mechanism is fully discussed in the General Change Mechanism chapter.
Your application may use application GCN lists to notify objects of certain events. For example, it is essential that any windowed objects that you wish to appear upon startup (including your GenPrimary) are added to the GAGCNLT_WINDOWS GCN list.
GenApplication uses its own GCN list types. The four most often used, and the four you will likely use in most of your applications, are listed below. The others can be found in the file
geoworks.def
and following this short list. Note that all of these GCN list types correspond to the manufacturer ID MANUFACTURER_ID_GEOWORKS.
-
MGCNLT_ACTIVE_LIST
This GCN list keeps a record of all objects that need to be built upon application startup. Objects on this list will receive several system attach and detach messages. Several types of GenControl objects need to be on this list to function properly. In that case, these controllers must also appear on either the GAGCNLT_SELF_LOAD_OPTIONS or GAGCNLT_STARTUP_LOAD_OPTIONS lists as well. Objects that do not need to receive attach notification (but do need to receive detach notification) may be added dynamically to this list.
-
GAGCNLT_WINDOWS
This GCN list keeps a record of windowed objects. All windowed objects that should be visible on startup must be added to this list. Any time a windowed object is visually initialized, it will be added to this list. It will not be removed until the object is visually closed. This is used to save window state across shutdown.
-
GAGCNLT_SELF_LOAD_OPTIONS
This GCN list contains a record of all objects that save options upon receiving
MSG_META_SAVE_OPTIONS
. These objects will self-load their options; objects on this list will not receive
MSG_META_LOAD_OPTIONS
automatically. If they need to do so, they should be added to the
GAGCNLT_STARTUP_LOAD_OPTIONS
list instead. Objects on this list will be sent
MSG_META_SAVE_OPTIONS
when the GenApplication receives
MSG_META_SAVE_OPTIONS
.
-
GAGCNLT_STARTUP_LOAD_OPTIONS
This GCN list contains a record of all objects that should both load their options upon startup and save their options upon receiving
MSG_META_SAVE_OPTIONS
. Objects on this list will receive
MSG_META_LOAD_OPTIONS
when they are first loaded.
Code Display 3-4 Sample GenApplication with Controllers
/* This application includes six controllers. One, the TabControl, must receive
* MSG_META_ATTACH to work properly and is placed on the GCN active list. Another
* controller, the GenViewController, must receive MSG_META_LOAD_OPTIONS at
* startup and is therefore placed on the STARTUP_LOAD_OPTIONS list. All other
* controllers are placed on the SELF_LOAD_OPTIONS list. Note that controllers
* placed on the active list still need to be placed on one options list. */
@object GenApplicationClass MyApplication = {
GI_comp = @MyPrimary;
/* Windows GCN list. */
gcnList(MANUFACTURER_ID_GEOWORKS, GAGCNLT_WINDOWS) = @MyPrimary;
/* Active GCN list. All objects that should receive
* MSG_META_ATTACH should be on this list. These controllers
* should also be added to the appropriate LOAD_OPTIONS list. */
gcnList(MANUFACTURER_ID_GEOWORKS, MGCNLT_ACTIVE_LIST) = @MyTabControl,
@MyToolControl;
/* Startup Load Options GCN list. This list must include
* all objects that should receive MSG_META_LOAD_OPTIONS
* at attach time. */
gcnList(MANUFACTURER_ID_GEOWORKS, GAGCNLT_STARTUP_LOAD_OPTIONS) =
@MyGenViewControl;
/* Self Load Options GCN list. All objects that save
* options and are not on the Startup Load Options list
* should appear here. */
gcnList(MANUFACTURER_ID_GEOWORKS, GAGCNLT_SELF_LOAD_OPTIONS) = @MyTabControl,
@MyToolControl, @MyEditControl, @MyCharControl,
@MyParaControl;
}
The other GenApplication-defined GCN lists are listed below with comments about their functions. Other GCN list types are also declared by other classes (e.g.
MetaClass
).
-
GAGCNLT_GEN_CONTROL_NOTIFY_STATUS_CHANGE
-
Keeps the GenToolControl up-to-date on the status of all the GenControl objects. The data block passed with this list is of type
NotifyGenControlStatusChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_SELECT_STATE_CHANGE
-
Notifies objects of changes in the selection state. The data block passed with this list is of type
NotifySelectStateChange
.
-
GAGCNLT_EDIT_CONTROL_NOTIFY_UNDO_STATE_CHANGE
-
Notifies objects of changes in the state of the undo item. The data block passed with this list is of type
NotifyUndoStateChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_CHAR_ATTR_CHANGE
-
Notifies objects of changes in the text character attributes.The data block passed with this list is of type
VisTextNotifyCharAttrChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_PARA_ATTR_CHANGE
-
Notifies objects of changes in the text paragraph attributes. The data block passed with this list is of type
VisTextNotifyParaAttrChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_TYPE_CHANGE
-
Notifies objects of changes in the text type change.The data block passed with this list is of type
VisTextNotifyTypeChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_SELECTION_CHANGE
-
Notifies objects of changes in the text selection. The data block passed with this list is of type
VisTextNotifySelectionChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_COUNT_CHANGE
-
Notifies objects of changes in the text count. The data block passed with this list is of type
VisTextNotifyCountChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_STYLE_TEXT_CHANGE
-
Notifies objects of possible changes in the style. The data block passed with this list is of type
NotifyStyleChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_STYLE_SHEET_TEXT_CHANGE
-
Notifies objects of possible changes in the style sheet.The data block passed with this list is of type
NotifyStyleSheetChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_STYLE_CHANGE
-
Notifies objects of changes in the current text style. The data block passed with this list is of type
NotifyTextStyleChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_FONT_CHANGE
-
Notifies objects of changes in the font. The data block passed with this list is of type
NotifyFontChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_POINT_SIZE_CHANGE
-
Notifies objects of changes in text point size. The data block passed with this list is of type
NotifyPointSizeChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_FONT_ATTR_CHANGE
-
Notifies objects of changes in the font attributes. The data block passed with this list is of type
NotifyFontAttrChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_JUSTIFICATION_CHANGE
-
Notifies objects of changes in the paragraph justification. The data block passed with this list is of type
NotifyJustificationChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_FG_COLOR_CHANGE
-
Notifies objects of changes in the text foreground (character) color. The data block passed with this list is of type
NotifyColorChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_BG_COLOR_CHANGE
-
Notifies objects of changes in the text background color. The data block passed with this list is of type
NotifyColorChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_PARA_COLOR_CHANGE
-
Notifies objects of changes in the text paragraph color.The data block passed with this list is of type
NotifyColorChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_BORDER_COLOR_CHANGE
-
Notifies objects of changes in text border color. The data block passed with this list is of type
NotifyColorChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_SEARCH_SPELL_CHANGE
-
Notifies objects of changes in the search/spell objects.
-
GAGCNLT_APP_TARGET_NOTIFY_SEARCH_REPLACE_CHANGE
-
Notifies objects of changes in the search-and-replace mechanism.
-
GAGCNLT_APP_TARGET_NOTIFY_CHART_TYPE_CHANGE
-
Notifies objects of changes in chart type.
-
GAGCNLT_APP_TARGET_NOTIFY_CHART_GROUP_FLAGS
-
Notifies objects of changes in chart group flags.
-
GAGCNLT_APP_TARGET_NOTIFY_CHART_AXIS_ATTRIBUTES
-
Notifies objects of changes in chart axis attributes.
-
GAGCNLT_APP_TARGET_NOTIFY_CHART_MARKER_SHAPE
-
Notifies objects of changes in the chart marker shape.
-
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_CURRENT_TOOL_CHANGE
-
Notifies objects of changes in the selected GrObj tool.
-
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_BODY_SELECTION_STATE_CHANGE
-
Notifies objects of changes in the GrObj body selection state.
-
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_AREA_ATTR_CHANGE
-
Notifies objects of changes in the GrObj area attributes.
-
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_LINE_ATTR_CHANGE
-
Notifies objects of changes in the GrObj line attributes.
-
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_TEXT_ATTR_CHANGE
-
Notifies objects of changes in the GrObj text attributes.
-
GAGCNLT_APP_TARGET_NOTIFY_STYLE_GROBJ_CHANGE
-
Notifies objects of changes in style changes relating to the GrObj.
-
GAGCNLT_APP_TARGET_NOTIFY_STYLE_SHEET_GROBJ_CHANGE
-
Notifies objects of changes in the style sheet.
-
GAGCNLT_APP_TARGET_NOTIFY_RULER_TYPE_CHANGE
-
Notifies objects of changes in ruler type.
-
GAGCNLT_APP_TARGET_NOTIFY_RULER_GRID_CHANGE
-
Notifies objects of changes in the ruler grid.
-
GAGCNLT_TEXT_RULER_OBJECTS
-
Notifies objects of changes in the active ruler.
-
GAGCNLT_APP_TARGET_NOTIFY_BITMAP_CURRENT_TOOL_CHANGE
-
Notifies objects of changes in the selected bitmap tool.
-
GAGCNLT_APP_TARGET_NOTIFY_BITMAP_CURRENT_FORMAT_CHANGE
-
Notifies objects of changes in the current bitmap format.
-
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_PROPERTIES_STATUS_CHANGE
-
Notifies objects of changes in the flatfile database properties status.
-
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_LIST_CHANGE
-
Notifies objects of changes in the flatfile field list.
-
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_RCP_STATUS_CHANGE
-
Notifies objects of changes in flatfile status.
-
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_APPEARANCE_CHANGE
-
Notifies objects that a field within the flat file has changed its appearance.
-
GAGCNLT_APP_NOTIFY_DOC_SIZE_CHANGE
-
Notifies objects of changes in document size. The data block passed with this list is of type
NotifyPageSetupChange
.
-
GAGCNLT_APP_NOTIFY_PAPER_SIZE_CHANGE
-
Notifies objects of changes in chosen paper size. The data block passed with this list is of type
NotifyPageSetupChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_VIEW_STATE_CHANGE
-
Notifies objects of changes in of view state. The data block passed with this list is of type
NotifyViewStateChange
.
-
GAGCNLT_CONTROLLED_GEN_VIEW_OBJECTS
-
A list of GenView objects controlled by the GenViewControl. (These GenViews will have ATTR_GEN_VIEW_INTERACT_WITH_CONTROLLER set in their instance data.)
-
GAGCNLT_APP_TARGET_NOTIFY_INK_STATE_CHANGE
-
Notifies objects of changes in Ink state.
-
GAGCNLT_CONTROLLED_INK_OBJECTS
-
A list of Ink objects controlled by the InkControl.
-
GAGCNLT_APP_TARGET_NOTIFY_PAGE_STATE_CHANGE
-
Notifies objects of changes in page state. The data block passed with this list is of type
NotifyPageStateChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_DOCUMENT_CHANGE
-
Notifies objects of changes in a document. The data block passed with this list is of type
NotifyPageStateChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_DISPLAY_CHANGE
-
Notifies objects of changes in a display. The data block passed with this list is of type
NotifyDisplayChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_DISPLAY_LIST_CHANGE
-
Notifies objects of changes in the display list. The data block passed with this list is of type
NotifyColorChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_MARKER_SHAPE
-
Notifies objects of changes in a spline marker shape.
-
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_POINT
-
Notifies objects of changes in spline points.
-
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_POLYLINE
-
Notifies objects of changes in spline polylines.
-
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_SMOOTHNESS
-
Notifies objects of changes in spline smoothness.
-
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_OPEN_CLOSE_CHANGE
-
Notifies objects of changes in a spline's open/close state.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_ACTIVE_CELL_CHANGE
-
Notifies objects of changes in the spreadsheet's active cell range. The data block passed with this list is of type
NotifySSheetActiveCellChanged
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_EDIT_BAR_CHANGE
-
Notifies objects of changes in the spreadsheet's edit bar. The data block passed with this list is of type
NotifySSheetEditBarChanged
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_SELECTION_CHANGE
-
Notifies objects of changes in the spreadsheet's selection. The data block passed with this list is of type
NotifySSheetSelectionChanged
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_WIDTH_HEIGHT_CHANGE
-
Notifies objects of changes in the spreadsheet's cell width or height. The data block passed with this list is of type
NotifySSheetCellWidthHeightChang
e.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_DOC_ATTR_CHANGE
-
Notifies objects of changes in the spreadsheet's document attributes. The data block passed with this list is of type
NotifySSheetDocAttrChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_ATTR_CHANGE
-
Notifies objects of changes in the spreadsheet's cell attributes. The data block passed with this list is of type
NotifySSheetCellAttrChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_NOTES_CHANGE
-
Notifies objects of changes in the notes of a cell within a spreadsheet.
-
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_DATA_RANGE_CHANGE
-
Notifies objects of changes in the spreadsheet's data range selection. The data block passed with this list is of type
NotifySSheetDataRangeChange
.
-
GAGCNLT_APP_TARGET_NOTIFY_TEXT_NAME_CHANGE
-
Notifies objects of changes in a text object's names run. The data block passed with this list is of type
VisTextNotifyNameChange.
-
GAGCNLT_FLOAT_FORMAT_CHANGE
-
Notifies objects of changes in a particular float format within the float format controller.
-
GAGCNLT_DISPLAY_OBJECTS_WITH_RULERS
-
A list of GenDisplay objects that have rulers.
-
GAGCNLT_APP_TARGET_NOTIFY_APP_CHANGE
-
Notifies objects of changes in an application.
-
GAGCNLT_APP_TARGET_NOTIFY_LIBRARY_CHANGE
-
Notifies objects of changes in a library.
-
GAGCNLT_APP_TARGET_NOTIFY_CARD_BACK_CHANGE
-
Notifies objects that a card back has changed.
-
GAGCNLT_NOTIFY_FOCUS_TEXT_OBJECT
-
Notifies objects that a an editable text object has a gained the focus. This list is used by the floating keyboard to determine when it should be enabled or not.
-
GAGCNLT_NOTIFY_TEXT_CONTEXT
-
Notifies objects that a the selection or data in a focused text object has changed, if that text object has text contexts turned on. This list is used by hand-writing recognition.
-
GAGCNLT_NOTIFY_HELP_CONTEXT_CHANGE
-
Notifies objects that a help context has changed.
-
GAGCNLT_FLOAT_FORMAT_INIT
-
Notifies the float controller that it should re-initialize itself. This normally sent to the controller when the target document has changed.
-
GAGCNLT_ALWAYS_INTERACTABLE_WINDOWS
-
This list stores windows that should always remain interactable, even if modal windows are on-screen. Objects on this list will get messages even if GenInteractions invoked by
UserDoDialog()
are on-screen. These objects also receive MSG_META_CHECK_IF_INTERACTABLE_OBJECT to allow them to specify objects under them (such as objects in the child blocks) that should also receive messages.
-
GAGCNLT_USER_DO_DIALOGS
-
This list stores all dialog boxes initiated via
UserDoDialog()
.
-
GAGCNLT_MODAL_WIN_CHANGE
-
Notifies objects that modal window changes have occurred within the application.
-
GACGNLT_APP_TARGET_NOTIFY_SPREADSHEET_NAME_CHANGE
-
Notifies objects that a spreadsheet's name has changed.
-
GAGCNLT_CONTROLLERS_WITHIN_USER_DO_DIALOGS
-
This list stores objects (usually controllers) that will appear within the context of
UserDoDialog()
but will not be within the same block as the dialog box. Objects on this list will receive MSG_META_CHECK_IF_INTERACTABLE_OBJECT.
-
GAGCNLT_FOCUS_WINDOW_KBD_STATUS
-
Notifies floating keyboards when windows gain the focus on pen systems.
| GEOS SDK TechDocs
|
| 1.1 Instance Data
| 1.3 Application Instance Reference


Release: February 16, 2022
Dario Scoppelletti built the “Biorhythm” App (the “App”) as a free App. The App is provided by Dario Scoppelletti at no cost and is intended for use as is.
If you choose to use the App, then you agree to the collection and use of information in relation with this Policy. The Personal Information that we collect are used for providing and improving the App. We will not use or share your information with anyone except as described in this Privacy Policy.
You can stop all collection of information by the App easily by uninstalling the App. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network.
The App does not make any use or collection of personally identifiable information about you.
We want to inform you that whenever you use the App, in case of an error in the App, we collect data and information (through third party products) on your device called Log Data. This Log Data may include information such as your devices’s Internet Protocol (“IP”) address, device name, operating system version, configuration of the App when utilising it, the time and date of your use of the App, and other statistics.
Cookies are files with small amount of data that is commonly used as an anonymous unique identifier. These are sent to your browser from the website that you visit and are stored on your devices’s internal memory.
The App does not uses these “cookies” explicitly. However, the App may use third party code and libraries that use "cookies" to collection information and to improve their services. You have the option to either accept or refuse these cookies, and know when a cookie is being sent to your device. If you choose to refuse the cookies, you may not be able to use some portions of the App.
We may employ third-party companies and individuals due to the following reasons:
We want to inform users of the App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
The App may contain links to other sites or services. If you click on a third-party link, you will be directed to that service. Note that these external services are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these services. We have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party site or services.
The App do not address anyone under the age of 13. We do not knowingly collect personal identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.
We may update our Privacy Policy from time to time. Thus, you are advised to review this policy periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page.
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at .