The ng-mousemove directive
Move over me
No. of mouse move overs {{count}}
The ng-click directive
click me
{{count1}}
Click Me
Hi
Hello
Welcome to Angular JS
Welcome to Angular JS
$event Object
Mouse over me
co-ordinates {{x+" "+y}}


Add New Rule
Rule 1
Rule Name
×
Rule description goes here
Value:
100
New Rule
×
Rule Name
Value
Description
Edit Rule
×
Rule Name
Value
Description
Enact Rule
x
Select the players you wish to apply the rule to:


WITNESS LIST Pensions & Investments Committee April 20, 2004-10:00A Interim Studies On: Smith, Ginger (Texas Pension Review Board)


the and with was patients (%) {background â€" using â€‰ symptoms for group disease margin were that this {border-style not acute px;} #ffffff;} The cases inflammatory study chronic bDMARD bDMARDs chikungunya infection control months than virus between biological clinical joint []. anti-TNF biologicals CHIKV arthritis fever from other severe use (p=.). CHIK IgG difference have more positive possible px; risk significant who {font-family This are complications controls drugs epidemic font-size may phase results associated double; duration group, musculoskeletal only pattern period subjects such three used users viral which without Chikungunya [], border-color border-width compared disease-modifying frequency household intensity most number observed our reported response rheumatoid same solid; statistically there these those {font-style {font-weight < Control Health Patients Research TNF [â€"]. analyzed anti-CHIKV antirheumatic applied arthropathy been bold but caused comparing considered controls, courier; described diagnosis different em; evaluated forms group; had has immunosuppressive infected infection. infections involved involvement manifestations mice occurred pain pt;} reduction rheumatologic serology study, symptomatic tissue under


 Screenplay: Trey Callaway. Producers: Neal H. Moritz, Erik Feig, Stokely Chaffin and William S. Beasley. Director: Danny Cannon. MPAA Rating: R (violence, profanity, drug use, adult themes) Running Time: 96 minutes. Reviewed by Scott Renshaw.
 In this sequel to last fall's horror hit, Julie James (Jennifer Love Hewitt) is still traumatized after surviving a killing spree by a gortex-clad, hook-handed, vengeance-minded psycho (Muse Watson). A year after the events in the first film, she's terrorized again -- this time on a tropical holiday with her college roommate Karla (Brandy), Karla's boyfriend Tyrell (Mekhi Phifer) and a classmate named Will (Matthew Settle) with a crush on Julie -- in all the expected ways. People begin dying in reverse credits order. Shadowy figures flit across the background. Small creatures dart out to the accompaniment of blasts of music. The electricity goes out. The killer moves...very...slowly towards potential victims. And no matter how violently the killer meets his apparent demise, he always turns up to suggest yet another sequel.
Aside from its chronologically-challenged title -- if this is happening a year after the first film, shouldn't it be I STILL KNOW WHAT YOU DID TWO SUMMERS AGO? -- I STILL KNOW SHAT YOU DID LAST SUMMER is constructed with an almost benign predictablity. Yet in a way, that's the appeal of the teen horror film. There's nothing truly scary about the film, nor was there ever intended to be. It's a Halloween funhouse with spaghetti for intestines and peeled grapes for human eyeballs. There's nothing dehumanizing about the way characters are gleefully dispatched, because they're never meant to be any more human than a mannequin being decapitated. You scream because it's what you're supposed to do, and you laugh about it afterwards.
That doesn't make it any more fun for the average viewer of voting age to watch a film where you can identify every twist or turn several minutes before it happens.  You're not going for the chance to see Jeffrey Combs' demented turn as a hotel manager with an attitude. You're not going to care about the inane attempts to give our protagonists actual personalities. You're certainly not going to care about the silly dialogue, or the less-than-terrifying prospect of Julie becoming an ultraviolet McNugget while locked into a tanning bed. You'll pay your money for a hug and a shriek, and you'll get exactly what you pay for.
 After all, it's a genre film doing what a genre film is made to do. It's also a film which feels blasted into production on a shaky premise with virtually no attempt at creating a quality product. It might seem strange to see a film like this after SCREAM turned its kind into comic relief, but there's still an audience for this sort of grind-it-out funhouse ride. I'm not it, but you know who you are.
On the Renshaw scale of 0 to 10 endless summers: 4.
Visit Scott Renshaw's MoviePage http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the MoviePage for details, or reply to this message with subject line "Subscribe".
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


Dominik Dijakovic and Adam Cole to battle in Ladder Match for WarGames advantage next Wednesday
by WWE.comDominik Dijakovic and NXT Champion Adam Cole will square off in a Ladder Match for the WarGames advantage next Wednesday on WWE NXT.
It’s Dijakovic’s first battle as an official member of Team Ciampa. The big man joined the fray this week, when he took out The Undisputed ERA singlehandedly when they tried to ambush Tommaso Ciampa, Keith Lee and Matt Riddle. Dijakovic ended up taking Riddle’s place in the double cage brawl, as Riddle bowed out to go after Finn Bálor.
Cole, however, has been on a roll in recent weeks, with a major victory over Daniel Bryan on Friday Night SmackDown and an excellent performance against Seth Rollins on Raw.
Who will earn the advantage in WarGames for their team? Find out on the final edition of NXT before TakeOver: WarGames, live next Wednesday at 8/7 C on USA Network!


In The Future, Hideo Kojima Says His Studio Will Make Films
by Brian AshcraftFor a guy who says that 70 per cent of his body is made of movies, this seems like it’s been a long time coming.
In a 26-minute BBC documentary on the making of Death Stranding, Hideo Kojima reveals the inevitable.
“In the future, Kojima Productions will also start making films,” Kojima said. “If a person can do one thing well, then they should be able to do anything well."
Kojima did not clarify when the studio will start making films. Kotaku reached out to Kojima Productions but did not hear prior to publication.
"I think within the next three to four years, everything will move to streaming — games, movies, and TV shows.” We’re pretty much there with TV shows and movies.
“When that happens,” Kojima continues, “movies, TV shows, and games will be competing in the same space.” Kojima is interested in the type of entertainment that will inevitably arise from this competition.
Considering how long the cutscenes in Kojima’s games have been and how much he loves movies, it might seem odd that he hasn’t made a motion picture already.
Featured image: Ayako (Touchy!)


Use Recent OS Version
New mobile operating system versions bring not only patches against discovered vulnerabilities but also often bring security architecture improvements that provide resilience against potential vulnerabilities or weaknesses that have not yet been discovered. They may also bring improvements that block use of observed adversary techniques.
ID: M1006
Version: 1.0
Techniques Addressed by Mitigation
| Domain | ID | Name | Description |
|---|---|---|---|
| Mobile | T1453 | Abuse Accessibility Features | Android 7.0 and higher includes additional protections against this technique. |
| Mobile | T1401 | Abuse Device Administrator Access to Prevent Removal | Changes were made in Android 7 to help prevent use of this technique. [6] |
| Mobile | T1433 | Access Call Log | Decrease likelihood of successful privilege escalation attack. |
| Mobile | T1413 | Access Sensitive Data in Device Logs | Starting in Android 4.1, this technique requires privilege escalation for malicious applications to perform, as apps can no longer access the system log (other than log entries added by a particular app itself). (Additionally, with physical access to the device, the system log could be accessed via USB through the Android Debug Bridge.) [4] |
| Mobile | T1409 | Access Sensitive Data or Credentials in Files | Android 7 provides stronger default file permissions over application internal data storage directories, decreasing the likelihood that insecure file permissions can be exploited. |
| Mobile | T1427 | Attack PC via USB Connection | |
| Mobile | T1412 | Capture SMS Messages | |
| Mobile | T1456 | Drive-by Compromise | |
| Mobile | T1404 | Exploit OS Vulnerability | |
| Mobile | T1405 | Exploit TEE Vulnerability | |
| Mobile | T1458 | Exploit via Charging Station or PC | Newer OS versions generally will include security patches against discovered vulnerabilities that become known to the vendor. Additionally, iOS 11.4.1 and higher introduce USB Restricted Mode, which under certain conditions disables data access through the device's charging port (making the port only usable for power), likely preventing this technique from working. [7] |
| Mobile | T1477 | Exploit via Radio Interfaces | |
| Mobile | T1420 | File and Directory Discovery | Increase difficulty of escalating privileges, as security architecture improvements in each new version of Android and iOS make it more difficult to escalate privileges. Additionally, newer versions of Android have strengthened the sandboxing applied to applications, restricting their ability to enumerate file system contents. |
| Mobile | T1478 | Install Insecure or Malicious Configuration | iOS 10.3 and higher add an additional step for users to install new trusted CA certificates to make it more difficult to trick users into installing them. On Android, apps that target compatibility with Android 7 and higher (API Level 24) default to only trusting CA certificates that are bundled with the operating system, not CA certificates that are added by the user or administrator, hence decreasing their susceptibility to successful man-in-the-middle attack. [1] [2] |
| Mobile | T1446 | Lock User Out of Device | |
| Mobile | T1461 | Lockscreen Bypass | |
| Mobile | T1403 | Modify cached executable code | |
| Mobile | T1410 | Network Traffic Capture or Redirection | |
| Mobile | T1448 | Premium SMS Toll Fraud | Starting with Android 4.2 the user must provide consent before applications can send SMS messages to premium numbers. [5] |
| Mobile | T1424 | Process Discovery | As stated in the technical description, Android 7 and above prevent applications from accessing this information. |
| Mobile | T1422 | System Network Configuration Discovery | Starting in Android 6.0, applications can no longer access MAC addresses of network interfaces. [3] |
| Mobile | T1411 | User Interface Spoofing |
References
- Brian Duckering. (2017, March 27). Apple iOS 10.3 Finally Battles Malicious Profiles. Retrieved September 24, 2018.
- Chad Brubaker. (2016, July 7). Changes to Trusted Certificate Authorities in Android Nougat. Retrieved September 24, 2018.
- Android. (n.d.). Android 6.0 Changes. Retrieved December 21, 2016.
- Dianne Hackborn. (2012, July 12). Re: READ_LOGS permission is not granted to 3rd party applications in Jelly Bean (api 16). Retrieved December 21, 2016.


The Highest-Paid Managers in The World Right Now
by David KappelJose Mourinho has jumped straight back among the highest-paid coaches in England, but where does he feature in comparison to the likes of Zinedine Zidane and the rest of world football's top-earning managers?
Click through the gallery above to see the highest-paid managers in football, and how much they earn annually, according to Tuttomercato.
The new Tottenham Hotspur boss has reportedly put pen to paper on a deal worth a whopping £15 million (R284 million) a year, which makes him the second highest-paid coach in England.
Only Manchester City boss Pep Guardiola earns more, with a whopping annual salary of £20 million (R378 million).
The abovementioned pair are also the top-earning managers in world football right now, with Atletico Madrid's Diego Simeone, who takes home £13 million (R246 million) annually, completing the top three in a list recently published by Tuttomercato.
Choose the right winger for SA’s Real Madrid Dream Team & win a replica shirt!
Former Real Madrid and Liverpool boss Rafael Benitez follows with an annual income of £11.5 million (R216 million) from Chinese side Dalian Yifang, while Fabio Cannavaro is in joint-fifth position with his £10 million (R189 million) yearly salary at Guangzhou Evergrande.
He shares that spot with Los Blancos boss Zinedine Zidane, who also pockets £10 million a year since returning to the Santiago Bernabeu.
Read: World's Richest Club Revealed, Real Dethroned
Antonio Conte, Ernesto Valverde, Jurgen Klopp and Ole Gunnar Solskjaer are also among the top 10, which you can view in full in the gallery above!


Buffers events from a stream until you are ready to handle them.
npm install delayed-stream
The following example shows how to write a http echo server that delays its response by 1000 ms.
var DelayedStream = require('delayed-stream');
var http = require('http');
http.createServer(function(req, res) {
var delayed = DelayedStream.create(req);
setTimeout(function() {
res.writeHead(200);
delayed.pipe(res);
}, 1000);
});
If you are not using Stream#pipe
, you can also manually release the buffered
events by calling delayedStream.resume()
:
var delayed = DelayedStream.create(req);
setTimeout(function() {
// Emit all buffered events and resume underlaying source
delayed.resume();
}, 1000);
In order to use this meta stream properly, here are a few things you should know about the implementation.
All events of the source
stream are hijacked by overwriting the source.emit
method. Until node implements a catch-all event listener, this is the only way.
However, delayed-stream still continues to emit all events it captures on the
source
, regardless of whether you have released the delayed stream yet or
not.
Upon creation, delayed-stream captures all source
events and stores them in
an internal event buffer. Once delayedStream.release()
is called, all
buffered events are emitted on the delayedStream
, and the event buffer is
cleared. After that, delayed-stream merely acts as a proxy for the underlaying
source.
Error events on source
are buffered / proxied just like any other events.
However, delayedStream.create
attaches a no-op 'error'
listener to the
source
. This way you only have to handle errors on the delayedStream
object, rather than in two places.
delayed-stream provides a maxDataSize
property that can be used to limit
the amount of data being buffered. In order to protect you from bad source
streams that don't react to source.pause()
, this feature is enabled by
default.
Returns a new delayedStream
. Available options are:
pauseStream
maxDataSize
The description for those properties can be found below.
The source
stream managed by this object. This is useful if you are
passing your delayedStream
around, and you still want to access properties
on the source
object.
Whether to pause the underlaying source
when calling
DelayedStream.create()
. Modifying this property afterwards has no effect.
The amount of data to buffer before emitting an error
.
If the underlaying source is emitting Buffer
objects, the maxDataSize
refers to bytes.
If the underlaying source is emitting JavaScript strings, the size refers to characters.
If you know what you are doing, you can set this property to Infinity
to
disable this feature. You can also modify this property during runtime.
The amount of data buffered so far.
An ECMA5 getter that returns the value of source.readable
.
If the delayedStream
has not been released so far, delayedStream.release()
is called.
In either case, source.resume()
is called.
Calls source.pause()
.
Calls delayedStream.resume()
and then proxies the arguments to source.pipe
.
Emits and clears all events that have been buffered up so far. This does not
resume the underlaying source, use delayedStream.resume()
instead.
delayed-stream is licensed under the MIT license.


---
layout: page
title: Résumé / CV (collapsable version)
excerpt: Résumé / CV for JoeHx (Joseph Hendrix)
---
Summary
- Highly proficient in a variety of Java technologies, including Java EE, GlassFish, JPA (Java Persistence API), JSF (Java ServerFaces), Maven, Grandle, and Android.
- Experienced in developing in all three of the major Java IDEs (Netbeans, Eclipse, and IntelliJ IDEA).
- Also highly proficient in SQL as well as web development in HTML, CSS, and JavaScript.
- Also knowledgeable in Node.js.
Work History
Northrop Grumman Corporation | Software Engineer | January 2014 – Present
Project 4 | February 2021 - Present
Project 3 | February 2021 – Present
- Created a Node.js web application that queries and updates data in a PostGreSQL/PostGIS database.
- Created a Docker container that holds that Node.js; created another Docker container that holds a PostGreSQL database that mirrors the schema of the real-world PostGIS database; ran both in a single Docker Compose instance.
- Enabled the Node.js web application and the mirror database to use SSL file certificates instead of a username/password.
Project 2 | March 2018 – July 2020
- Provided maintenance and new functionality to an existing Java Swing desktop application.
- Maintenance activities included eliminating processing bottlenecks by using tools such as JProfiler to identify those bottlenecks.
- Consistently created unit tests that covered at least 90% of newly written code.
- Reduced the amount of "code smell"” in existing code by about 8% largely by using code formatting tools.
- Used software tools such as SonarLint, SonarQube, and HP Fortify to identify and fix software issues, including vulnerabilities and duplicate code.
Project 1 | January 2014 – March 2018
- Modified an existing Java Swing desktop application by improving its mapping capabilities using OpenMap 5.0.3, added advanced metrics, and applied redesigns to the GUI.
- Migrated that Java Swing desktop application to a web application using GlassFish, JPA, CDI, JSF, PrimeFaces, PrimeFaces Extensions, and an Oracle XE database. Provided major customizations to the PrimeFaces JSF timeline component. Configured the build and dependency tool Maven such that the web application could be built while not connected to the Internet.
- Maintained and updated the public website for the Defense Production Act Title III program. Made this website into HTML5 compliance by modifying and customizing the PHP files, CSS files, and image files in such a way that the website's overall appearance did not change. Implemented a mobile-friendly version using CSS media queries.
Moreover Technologies | Quality Assurance (QA) Engineer | May 2013 – October 2013
- Automated web applications using the Java library Selenium.
- Tested REST interfaces using JMeter.
- Reported bugs using JIRA.
Air Force Institute of Technology | Computer Programmer / Research Assistant | Mar 2011 – May 2013
- Generated 3D models from 2D imagery using the structure-from-motion (SfM) C/C++ library Bundler.
- Generated simulated images using Blender.
- Provided input on an AFIT student’s graduate thesis.
Wright State University | Teacher's Assistant | September 2010 – June 2012
- Taught computer labs in the Java language for non-majors (CS141 & CS142).
- Graded student projects in a timely manner.
- Reported student performance to the teacher.
Projects
Moonshot
Tic Tac Toe Android Application
Tagger for Amazon Associates
AutoPhotoSync for Google Photos
Family Tree database and web application
- FamilyTree is a simple web application using JavaServerFaces, Java EE, and a SQL database to load, display, edit, and examine a family tree. It was initially created as a project for CS7700 Advanced Database Systems at Wright State, and is currently being used for CS7720 Data Mining at the same school.
- Source hosted on GitHub.
- Generated Documentation.
Education
Wright State University | Master of Science (M.S.) in Computer Science | 2014 – 2018
Wright State University | Bachelor of Science (B.S.) in Computer Science | 2008 – 2012
Certifications
Scrum.org Professional Scrum Master I | May 28, 2021
View on my Scrum.org Profile
CompTIA Advanced Security Practitioner (CASP) | October 2, 2016
Verify
Oracle 1Z0-803 - Java SE 7 Programmer I | September 2015
Awards
Competent Communicator | Toastmasters International | February 9, 2020
Competent Leader | Toastmasters International | February 21, 2019
Volunteerism
The City of Huber Heights
Ordinance Review Commission | September 28, 2020 - June 30, 2021
- The Ordinance Review Commission is appointed by the City Council at least every ten years per the City Charter. The Ordinance Review Commission reviews the City Code and other ordinances or resolutions of the City and makes recommendations to the City Council for the elimination or revision of provisions of the City Code and other ordinances or resolutions which may have outlived usefulness or practicality. The Ordinance Review Commission was established by the City Charter.
- My name listed on the city's website.
- My name listedd on "AgendaQuick " Destiny Hosted site.
The Vandalia Toastmasters Club
- Vice President Membership / Vice President Public Relations | July 2020 - June 2021
- Club President | July 2019 - June 2020
- Vice President Public Relations | July 2018 - June 2019


Privacy notice
How we use your information
This privacy notice tells you who we are and what to expect when the Natural History Museum collects your personal information. It is intended for visitors, customers, supporters and anyone who has a relationship with the Museum, whether or not they use the Museum's website and other digital channels.
The notice provides information on:
- who we are
- how we use your information
- cookies and tracking
- Wi-Fi service
- conditions under which we use your information
- visitor and customer analytics and prospect research
- who we share information with
- transfers of data abroad
- how long we keep your information
- your rights
- access to personal information and correction
- consent and your right to opt out
- complaints, enquiries and feedback
- how to contact us
- changes to this privacy notice
- useful links
This privacy notice does not cover links to external websites. We encourage you to read the privacy statements on the other websites you visit.
-
Who we are
The Natural History Museum exists to inspire a love of the natural world and unlock answers to the big issues facing humanity and the planet. More than five million people visit the sites in South Kensington and Tring every year, and the website receives over 500,000 unique visitors a month. It is a world-leading science research centre, and through its unique collections and unrivalled expertise it is tackling issues such as food security, eradicating diseases and managing resource scarcity.
The Natural History Museum Trading Company (NHMTC) carries out the commercial activities of the Museum (eg events, retail and the Wildlife Photographer of the Year exhibition). As a wholly owned subsidiary, NHMTC is subject to the Museum's policies and procedures.
In this privacy notice and in the data protection statements which you will see wherever we collect your personal information, 'the Natural History Museum', 'the Museum' and 'we' refer to the Natural History Museum and the Natural History Museum Trading Company.
The Museum is the data controller of your personal information.
-
How we use your information
When you give us your personal data we will explain specifically how we will use it in a fair processing statement with a link to this privacy notice. The main purposes for which we collect and process the details of customers, visitors, Members, service users, enquirers, donors and potential donors are to provide the service, goods or information that you have requested:
- for administration purposes (eg to administer donations, and to keep a record of our relationship with you)
- to further our charitable aims, including fundraising activities
- to gather feedback
- to enable the best possible supporter journey and experience
We may use your data to contact you by email (if you have given us your consent or are a business contact), post or phone with news and information about the Museum that we feel may be of interest to you as well as about our other special events, activities, products and services. We will not use your personal information in this way if you have opted out, unsubscribed or otherwise indicated that you do not wish to be contacted for such marketing purposes.
-
Cookies and tracking
When you visit www.nhm.ac.uk, nhmshop.co.uk, data.nhm.ac.uk or any of the Museum's websites, we collect standard internet log information and details of visitor behaviour patterns. We do this to find out, for example, the number of visitors to the various parts of the site, to compile statistical reports on website activity and to personalise our visitors' website experience.
Cookies are text files placed on your computer to collect this information. You can set your browser to not accept cookies and you can remove cookies from your browser. However, in a few cases some of our website features may not function as a result. You can read more about how we use cookies and how to disable them on our cookies page.
We use advertising cookies from third parties to allow us to assess the effectiveness of our adverts, and to optimise our digital advertising. These cookies can affect what you see on third party sites. Advertising cookies remember that you have visited a website and use that information to provide you with advertising which is tailored to your interests. This is often called online behavioural advertising (OBA) and is done by grouping together shared interests based upon web browsing history. It is important to note that at no time do we or our service providers attempt to identify you individually nor do we create a profile of you, or the pages you have viewed, for the purposes of delivering advertising.
A guide to behavioural advertising and online privacy has been produced by the internet advertising industry which can be found at www.youronlinechoices.eu.
For details on the third-party cookies we use, and how to disable them, see our Cookie Policy.
-
Wi-Fi service and other sensing systems
We operate a Wi-Fi system, counting systems and other sensing systems to detect movement within the Museum’s premises.
Free Wi-Fi access is available throughout the Museum via the network named 'NHM-Free-wifi' or 'NHM-Tring-Free-WiFi'. If you access the Museum's free Wi-Fi network, you will be asked to agree to the Museum's Wi-Fi terms and conditions of use, which explain how your data will be used.
If you do not use the free Wi-Fi network but have Wi-Fi enabled on your smartphone, tablet or another internet-enabled device, your device can still be detected by the Museum's Wi-Fi service.
We record anonymous data about the location and type of devices in the Museum that have Wi-Fi enabled and other sensing data, for security and so that we can monitor the flow of visitors around the Museum and improve our services.
We will not link the anonymous device data with any other personal data that identifies you individually without your express permission. If in the future we want to process your data in this way to offer you new services, we will ask you via a consent form before doing so.
-
Conditions under which we use your information
We follow the principles of fair and legal processing described in the General Data Protection Regulation. We will only process personal data under one of the available lawful conditions (legal bases) - for example, if:
a) you have consented to the use of your personal data for the specific purpose in question, such as for a particular type of marketing
b) we need to process your personal data in order to deliver a contracted service, such as when you buy a ticket for an event or become a Member
c) we are entitled or required by law to process personal data in a certain way, such as for fraud or crime prevention
d) we need to protect the vital interests of any person
e) we are required to process personal data in performance of a task carried out in the public interest or in the exercise of our official authority , such as in the management of the collections, or using CCTV to protect the Museum and its visitors
f) the processing of personal data is within our legitimate interests, where we carry out activities that would not be considered to fall into the definition at (e) above, but are enabling the Museum to meet its objectives as laid out in legislation
This may include:
- marketing, publicity and fundraising mailshots that do not require consent (eg postal or phone contact from Development and Communications staff or business to business communications)
- prospect research prior to first contact
- due diligence research on potential donors
- visitor and customer analytics
- exercising or defending legal claims
- correspondence
-
Visitor and customer analytics and prospect research
It is within the Museum's legitimate interests to hold and analyse your data to continue to improve our understanding of our target audiences and supporters. This is so we can provide world-class, transformative, visitor-focused experiences, customer service and educational engagement, and effective and appropriate supporter engagement. We are also looking at how we might in the future use the latest technologies to improve and personalise the services that we offer.
Visitor analytics data is collected on an anonymous basis wherever possible, or pseudonymised so that individuals cannot be readily identified. This includes monitoring visitor numbers and tracking movement of people and collections of individuals around the Museum. (For more information see sections on cookies and Wi-Fi.)
We carry out customer analytics to improve our understanding of our target audiences. We do this by analysing your commercial transactions (eg ticket and retail purchases) and activities (eg email interaction with the Museum, use of Museum Wi-Fi). This helps us target our marketing more efficiently, and personalise and improve your experience if you have consented to receive marketing from us, by providing the most relevant and timely content.
You can object to our carrying out this kind of activity for marketing purposes by using this form, and we will review our basis for doing so in your case. Please note that objecting to this activity will mean that you are automatically unsubscribed from marketing.
Prospect research (that is, building up a profile of a particular individual, their interests, suitability and likelihood they will donate to the Museum) is fundamental to the ability to generate income through fundraising, as the Museum is expected to do. We may therefore analyse personal information collected from you, from publicly available sources and occasionally from third parties, to create a profile of your interests and preferences.
This helps us understand the background of the people who support us, and enables us to contact you in the most appropriate way, with the most relevant information. You can object to our carrying out this kind of activity for fundraising purposes by emailing<EMAIL_ADDRESS>and we will review our basis for doing so in your case.
-
Who we share information with
We will never sell your data. We will not share personal data with third-party organisations for their marketing purposes without your permission. We may, however, occasionally outsource functions when we do not have the in-house capacity required, such as the use of a mailing house for mailings, companies that run competitions on our behalf and analytical services that enable us to target our communications with customers and supporters more effectively.
In such cases the personal data will only be processed in accordance with our lawful instructions, and we will remain controller of the data. For example, if we are running a social media advertising campaign, this may require us to provide some partial identifiable (hashed) data to a third party site for matching purposes only (namely, so that you see relevant advertising in your feed), but that third party would never be permitted to use the personal data for its own purposes.
We will only use reputable and vetted firms and have contracts and processes in place that ensure the safe and confidential processing of personal data at all times.
-
Transfer of data abroad
We will always ensure an adequate level of protection is provided for personal information transferred outside the European Economic Area. If the organisation we share personal data with is in a country without adequate data protection in place, we will place contractual requirements on the third-party organisation to handle personal data to the same standard that is required by legislation in the United Kingdom.
-
How long we keep your information
We only use your data for the purposes for which it was obtained. It will only be kept for as long as it is required for those lawful reasons.
-
Your rights
Under the General Data Protection Regulation (GDPR) you have the following rights:
- to obtain access to, and copies of, the personal data that we hold about you
- to require us to correct any inaccurate personal data we hold about you
- to require us to restrict our processing of your personal data
- to object to us processing your personal data
- to object to receiving marketing communications from us
- to withdraw your consent to processing of your personal data
- to require us to erase your personal data ('right to be forgotten')
- to obtain from us the personal data which you have provided, in order to transmit it to another organisation ('data portability')
Please note that the above rights are not absolute, and we may be entitled to refuse requests where exceptions apply. How we deal with some of your rights are set out elsewhere in this privacy notice. You also have the right to refer your concerns or queries to the supervisory authority, the Information Commissioner’s Office.
-
Access to personal information and correction
We strive at all times to ensure that your personal information is accurate and up to date. You may ask us to correct or remove information you think is inaccurate by contacting us as detailed in the 'How to contact us' section of this notice. If your personal details change, please help us to keep your information up to date by notifying us at the address below.
Under the terms of data protection legislation you have the right to request access to and a copy of information that we hold about you, by making a Subject Access Request. You can do this in several ways:
- complete and return the Subject Access Request form
- email the Data Protection Officer at<EMAIL_ADDRESS>- write a letter to: Data Protection Officer, The Natural History Museum, Cromwell Road, London, SW7 5BD
-
Consent and your right to opt out
If we intend to use your personal information for certain types of marketing or other purposes where your consent is required (namely, because the use of your data is not covered by other legal bases explained in this notice), we will seek your specific consent to use your information for these purposes. Whenever we seek your consent we will explain how we intend to use your data. Consent will require a positive affirmation from you, generally in the form of an opt-in such as ticking a box to signal your agreement.
Subscribing to marketing communications is optional - you do not need to subscribe to marketing from us when you buy products, book tickets, donate or use any other of our services.
After you subscribe to our services or give consent to receiving news and information from us, you can cancel your subscription, withdraw your consent to being contacted for these purposes, or change your preferred method of contact at any time. For example you can stop e-mail newsletters by clicking the 'Unsubscribe' link in the emails you receive. If you do withdraw your consent for or object to marketing, we will need to keep a record so that we can suppress future marketing activity to those contact details. Opting out of email marketing will, by default, mean opting out of post and phone communications as well, unless you inform us otherwise.
You can also register with the Telephone, Mail and Fundraising Preference Services if you do not wish to receive marketing communications from us.
Where we have your consent to send you marketing material by email, but are not aware of any interaction with the Museum (ie at least opening one of our emails and clicking on a link in it, or responding to a communication from Development and Communications staff) for more than three years, we will contact you to ask if you wish to renew your consent. If you do not, we will remove your details from our marketing mailing lists.
-
Complaints, enquiries and feedback
The Museum strives to meet the highest standards when collecting and using personal information. For this reason, we take any complaints we receive about this very seriously. We encourage people to bring it to our attention if they think that our collection or use of information is unfair, misleading or inappropriate. We would also welcome any suggestions for improving our procedures.
This privacy notice is intended to be brief and clear. It does not provide exhaustive detail of all aspects of the Museum's collection and use of personal information, but we are happy to provide you with any additional information or explanation.
If you have an enquiry, a complaint or suggestions regarding our data protection processes, please contact:
Data Protection Officer, Natural History Museum, Cromwell Road, London SW7 5BD
or email us at<EMAIL_ADDRESS>If you are not satisfied by the response to your complaint, you are entitled to escalate your concern. The first step is to seek an internal review of the Museum's handling of your complaint. Please submit your application for a review in writing to the Data Protection Officer at the above address. The review will be undertaken by the Head of Risk and Assurance.
Changes to this privacy notice
We keep our privacy notice under regular review. Please visit this page periodically in order to keep up to date with any changes.
This privacy notice was last updated on 17 October 2018.
How to contact us
If you wish to make a complaint, request further explanation or suggest an improvement to how we use personal data, please contact:
Data Protection Officer, Natural History Museum, Cromwell Road, London SW7 5BD
or email us at dataprotection@nhm.ac.uk.


If you need to find a Subversion client for Windows or just want to check out what else you could use, take a look at this comparison of client applications on Wikipedia.
The most used Subversion client is the command-line interface. This is now a separate download available from Apple's Developer website or from the Download section in Xcode's Preferences. Once installed, type svn --help in a Terminal window to get an overview of available commands. The SVN Book offers a immense wealth of knowledge about the command-line interface and Subversion in general.


Topology Generator
Topology definitions
Topology
Simulation Parameters
Simulations
Simulation Parameters
{% for paramName in paramNames %}
{{ paramName }}
{% endfor %}
New Params
{% if currentParams == None %}NEW {% endif %}Parameters
Name
Simulation Time Slot Count
Time Slot Duration (s)
Up-link Mean Generation Time (h)
Down-link Mean Generation Time (h)
Transmission probability (0.0 to 1.0)
Number of Channels
Max Simultaneous Packets in Transmission
Timeout After Reading Requests (s)
Packets TTL (s)
Collector Range (m)
Router Range (m)
Smart meter range (m)
Demand
Enabled
Reading
Enabled
Broadcast timeslots (comma separated numbers)
Seed
Save


4 Poems
AT THIS MOMENT IN TIME I HAVE 635 FRIENDS ON FACEBOOK
i'm tired of
falling in & out
of love with people
every single night
there are only so many ways
to show what side of the lake you're on
I'D RATHER BE BEAUTIFUL THAN MALE
"The moon is trans.
From this moment forward, the moon is trans.
You don’t get to write about the moon anymore unless you respect that.
You don’t get to talk to the moon anymore unless you use her correct pronouns."
- joshua jennifer espinoza
& when the big dumb moon fell into our bed
i was right in the middle of telling you
about how i would like to coach your favorite baseball team
& after she fell into our bed
the moon asked about phases
why hers were called phases
& how scary that word is
you told her the sky
changes colors
turning blue & purple
like the body
she understood
kind of
& i told her
she's not ready for everything
that's okay
we're all okay
your light hits all of us
so we are all you
a small part of each of us
is the moon
& she's beautiful
i said we are all the moon
& we are all butterflies
who think living for a day
is living for a lifetime
even though some of us
can't keep going
especially after seeing our naked bodies
& the first time i looked
into the mirror after cutting my hair
i was finally beautiful
just kidding
i have always been beautiful
the moon swore she heard someone crying
outside of our window
we ignored it
she said i think we should really check on them
& i said we're always feeling glaciers moving
at the bottom of our stomachs
i said this to no one in particular
so then the moon asked me
when i started wearing glasses
& at this point
you had gotten out of bed
to get some water
so you didn't hear this part
but i said
i can remember when my dad started wearing glasses
but not my mom
my mom can't really see me anymore
& then the room filled up with air
the kind that fills up rooms
before it rains
the moon asked me
if i ever experienced
a major death in my family & i said
no
can we go back to talking about how beautiful you are
can we go back to talking about all the love poems
i tried to write for each bridge i've walked over but never did
can you watch me foam at the mouth with every cloud
that ever existed
but slowly disappeared
& then you came back into the room
but it was too dark so i didn't notice
& continued to tell the moon about the time my astronomy professor
told my class that we were never supposed to be here
& how us being here
alive on earth
is the same probability of winning the lottery 100,000 times
how fucked up is that?
& then i had to leave the room because i needed to cry in the rain
so i'm not sure what you & the moon talked about which is fine i guess
i just want to know
will you please stop leaving all the photographs in the fridge?
pressing the buttons on a camera makes strawberries
according to a four year old
who is taking pictures of beautiful things
with a camera that doesn't work
& before the moon left
she made everything quiet for us
so we could hear the universe's slow hum
i could imagine the weather
on the day every person i know was born
the first day of K's life was probably the only day in october
that held rain
because she's always crying
& i'm always feeling reflections of rainbows when she laughs
i told the moon this
& she said thank you
& turned me into stardust while you were pulling out
your eyelashes unintentionally
she climbed back into the sky
with a sign the read
the inverse of you
is the universe
i know that's not always enough
3.
please stop being beautiful in front of me because it is very hard to live when you are right next to a person, a beautiful one, like yourself.
4.


Education
Graduted from MIT
Work expirince
work at walwart while he put himself through school, now he is a head of development at Apple
Skills
- Writing top notch code
- Not talking to people
Graduted from MIT
work at walwart while he put himself through school, now he is a head of development at Apple


BraidWord
class braidgenerator.BraidWord(**kwargs)
A BraidWord represents a mathematical braid. A mathematical braid is a word expressed as a finite list of Artin generators or their inverses. Generators are represented here as positive or negative integers. An object of BraidWord (i.e. a braid) is the main component acted upon by the MarkovChain class.
-
braidword
list
- List containing integers (representing Artin generators) to be used as initial word.
Parameters
-
word
list
- word of BraidWord, made up of list containing integer generators.
-
largestGenerator
int
- Largest Generator in word.
-
genCount
list
- Array of quantity of generators in word.
Attributes
<BraidWord>.methods
-
Boolean stating if cancel at index is a valid move. Cancellation refers to the cancellation of a generator and its consecutive inverse in the braid group.
-
index
int
- Index where canCancel is to be checked.
Parameters
- True if successful, False otherwise.
Returns
-
Checks if destabilize() is a valid move. Destabilization refers to destabilization of a closed braid.
destabilize
is the inverse operation ofstabilize
and is only permissible when the `largestGenerator` appears exactly once at the last index of `word`.
- True if successful, False otherwise.
Returns
-
Checks if flip can be performed at index. A `flip' refers to the second braid relation in the braid group.
-
index
int
- Index where canFlip is to be checked.
Parameters
- True if successful, False otherwise.
Returns
-
Checks if transpose at index is a valid move. A transpose is the first braid relation in the braid group.
-
index
int
- Index where canTranspose is to be checked.
Parameters
- True if successful, False otherwise.
Returns
-
Performs cancellation of the generators at index and (index+1) modulo length and decreases length of word by two. Cancellation refers to the cancellation of a generator and its consecutive inverse in the braid group.
-
index
int
- Index where cancel is to be performed.
Parameters
- Boolean that triggers state of Markov step in logs.
Returns
-
Method to conjugate the word at index. Conjugation is defined for closed braids by AB = BA.
-
index
int
- Index where conjugate is to be performed.
Parameters
- Boolean that triggers state of Markov step in logs.
Returns
-
Destabilizes the BraidWord, decreases word length by one, and decreases largestGenerator if successful. Destabilization is a Markov Move defined for closed braids.
- Boolean that triggers state of Markov step in logs.
Returns
-
Flips generators at index, (index+1) modulo length, and (index+2) modulo length. A flip performs the second braid relation in the braid group.
-
index
int
- Index where flip is to be performed.
Parameters
- Boolean that triggers state of Markov step in logs.
Returns
-
Insert a generator and its inverse into word. Will insert the given generator and its inverse at index and increases word length by two. Insertion is permissible because the braid group is a group.
-
index
int
- Index where insert is to be performed.
-
generator
int
- Generator to be inserted into word.
Parameters
- Boolean that triggers state of Markov step in logs.
Returns
-
Dynamically returns the length of the word.
- Length of word.
Returns
-
Stabilizes the BraidWord, increases word length by one, and increases largestGenerator by one if successful. Stabilization is a Markov Move defined for closed braids.
- Boolean that triggers state of Markov step in logs.
Returns
-
Transposes generators at index and (index+1) modulo length. Transpose performs the first braid relation in the braid group.
-
index
int
- Index where transpose is to be performed.
Parameters
- Boolean that triggers state of Markov step in logs.
Returns
-
The
crossing_change
method performs a crossing change on a BraidWord. That is, it returns a new BraidWord whereby the generator at a specified index is inverted. The resulting index can be set randomly withrandom_index
set toTrue
, or it can be set manually by settingrandom_index=False
and assigningindex
with an integer value between zero and the length of the word of the BraidWord.
-
random_index
bool
- Determines whether method randomly selects index or not.
-
index
int
- Index where generator will be inverted.
Parameters
BraidWord
Returns
-
The
resolution
method performs a resolution on a BraidWord. That is, it returns a new BraidWord whereby the generator at a specified index is removed and the length of the new BraidWord is decreased by one. The resulting index can be set randomly withrandom_index
set toTrue
, or it can be set manually by settingrandom_index=False
and assigningindex
with an integer value between zero and the length of the word of the BraidWord.
-
random_index
bool
- Determines whether method randomly selects index or not.
-
index
int
- Index where generator will be removed.
Parameters
BraidWord
Returns


| Most Popular | ||||
| Good Basic Protection | Better Superior Protection | BestUltimate Protection |
||
Radian
|
Radian
|
Radian
|
Radian
|
|
| Where do you fit? | What goes here?. | Where do you fit? | Where do you fit? | Where do you fit? |
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? | ||||
| Where do you fit? |


Full List Of Winners At 2019 Edition Of The Future Awards
by Emmanuel EgobiambuDamini Ogulu better known as Burna Boy was among the winners at the 2019 The Future Awards Africa (TFAA), Concise News understands.
Burna Boy claimed the Young Person of the Year prize at the 2019 Future Awards held on Sunday.
Full List of Winners Future Awards Africa 2019
Below is the list of winners at the 2019 Future Awards 2019:


QuickStart Guide Contributors
Authors:
Mark "ottermaton" Strawser - Head of DocumentationAnthony "AntCer" Cervantes - Chief of the QS Guide
Jeff "Jef91" Hoogland
The Team:
Charles (Charles@Bodhi) van de Beek - Editor / Consultant(caerolle) - Editor / Consultant
Also, a shout-out to Theophobus and ylee. Thank you, guys!
Designers:
Anthony "AntCer" CervantesJoris "aeonius" van Dijk
Screenshots:
Anthony "AntCer" CervantesKelly Wang
Revision History
2015/08/04 - Updated to Moskha Desktop and Ecomorph compositing
2015/02/02 - Removed a few lingering old references and added new AppCenter information
2015/01/18 - Updates for Bodhi 3.0.0 including text and new screenshots
2012/10/28 - 2013/01/04 - Extensive revisions to content/markup/CSS, re-shots of photos, and additions to content/markup/CSS.
2012/05/02 - Added information about Window Shading to the Quick FAQ section. Added a mention about keystrokes on Window Focus to the E17 Basics sections. Added a navigation bar to the bottom of all pages.
2011/01 - This document was originally created approximately January, 2011. It went through several iterations before revisions began being tracked in May, 2012.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.


{% load staticfiles %}
Contact Me
{%include "nav.html"%}
Contact
Me
This is how you can reach me...
Email:
{{profile.email}}
Phone:
{{profile.phone}}
Address:
{{profile.address}}


--- layout: post title: Missing your own party date: 2010-02-12 19:36:35.000000000 -08:00 categories: - general news tags: [] status: publish type: post published: true meta: _edit_last: '1' author: login: ckelty email<EMAIL_ADDRESS>display_name: ckelty first_name: Christopher last_name: Kelty excerpt: !ruby/object:Hpricot::Doc options: {} ---
The largest spike in attention for this book came and went without me noticing.
The problem with having too much to do and too many different projects is it becomes impossible to keep on top of all the relevant discussions. Two Bits was reviewed on Lambda The Ultimate, a weblog about programming languages. There are some great comments, including an extensive one about how I am wrong (though I think it is more accurately about how the poster is right than it is about my book being wrong, but that often happens). Metafilter picked it up. The spike in traffic was an order of magnitute larger than anything I've gotten since the book was published, and I only just noticed :)
sorry I missed the discussion...


DirectoryEntry Class
Definition
Line
395
of
cmsxk/Block.cm
Constructors & Destructor
public
nothrow
DirectoryEntry
(
int
inodeNumber_,
const
String
<
char
>& name_)
Member Functions
public
void
Read
(
MemoryReader
& reader)
public
void
Write
(
MemoryWriter
& writer)
Member Variables
public
int
inodeNumber
public
String
<
char
>
name
Constructor& Destructor Details
DirectoryEntry Constructor
public
nothrow
DirectoryEntry(
int
inodeNumber_,
const
String
<
char
>& name_)
Definition
Line
397
of
cmsxk/Block.cm
Member Function Details
Read Member Function
public
void
Read(
MemoryReader
& reader)
Definition
Line
401
of
cmsxk/Block.cm
Write Member Function
public
void
Write(
MemoryWriter
& writer)
Definition
Line
406
of
cmsxk/Block.cm


Burger Trail Patch Checklist
| Establishment |
Address |
City |
Rank |
X |
| Brook's Sandwich House |
2710 N Brevard St |
Charlotte |
4 |
|
| Hops Burger Bar |
2419 Spring Garden St |
Greensboro |
3 |
|
| Duke's Grill |
1114 Concord Ave |
Monroe |
5 |
|
| El's Drive-In |
3706 Arendell Street |
Morehead City |
8 |
|
| The Loaded Goat |
247 City Hall St |
Mt Airy |
2 |
|
| Only Burger |
3710 Shannon Rd #118 |
Durham |
9 |
|
| Johnson's Drive-In |
1520 E 11th Street |
Siler City |
6 |
|
| P T's Olde Fashioned Grille |
8116 Market St |
Wilmington |
7 |
|


One
Update Display
Two
Toggle One
Close One
Open One
Toggle Four
Close Four
Open Four
Three-One
Three-Two
Four


Linked Data Tools and Workflows
At Linked Pasts IV in Mainz 2018, the Linked Pasts Network had a Session on "Parallel Breakous with Buffet Lunch", chaired by Leif Isaksen and Valeria Vitale (Pelagios Commons). Table 1 discussed about Tools and Pipelines. As a result, the #LinkedPipes were born and can be feeded / asked by the following web applications:
- feed the tools or pipes: http://turtlenator.linkedpipes.xyz
- query linked tools: http://tools.linkedpipes.xyz
- query linked pipes: http://pipes.linkedpipes.xyz
How to contribute?
The Linked Pipes semantic modelling is based on the RSE Tools Ontology, which is available as OWL file. The ontology assumes that a tool is linked into the Linked Open Data Cloud via Wikidata. The tools must be an instance of a Little Minion. Please follow the next steps to create your Little Minion, aka Linked Tool and Linked Pipe.
Wikidata
- Create a Wikidata account.
- Login on Wikidata.
- Create a new Item on Wikidata, language: en, label: tool name, description: short description.
- Describe your item (linked tool).
- It is recommended to tag instances like Q193424 (web service), Q312466 (utility software), Q7397 (software) or Q184148 (plug-in).
- It is recommended to tag genres (P136), developes (P178), a git source code repository (P1324), official website (P856), etc.
- Examples: Alligator or SPARQLing Unicorn QGIS Plugin
- After that process, keep the Q... identifier in mind.
turtlenator / GitHub
- Open the turtlenator.
- Create a Linked Tool or Linked Pipe and copy the turtle fragment.
- Create a Github account or login.
- Open the linkedpipes.ttl source file, edit it, copy the turtle fragment (without the prefixes) into the file and send a pull request.
- If the request will get accepted, you can see your Tool or Pipe in the filter applications.
Credits
Florian Thiery, Linked Pasts Network, mainzed, RGZM, Mainz, Germany


SELL YOUR PRODUCTS WITH EASE.
WELCOME TO THE FUTURE OF THE SALES
Who should take this sales bootcamp?
Anyone and everyone! The skills that you gain from our course willnot
only instill you with the confidence and knowledge that you need to
completely dominate your industry,you'll also lear how to live a
happier life as well.
What can I expect to learn from this course?
Nothing less than the finest sales tactics,You will become a learn,
mean,prsuasion machine.We will teach you how to get into the right
mindset and see every person as a walking money bag.Everyone has a
price!
Is there a refund if I am not satisfied after I take the class?
You won't need a refund becuase we know for a fact that you'll be
completely satisfied with our course.So sign up today!


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer
Debug - stepping through a verb
In an earlier section you added a debugging line to a verb definition that allowed you to see the results of intermediate steps when the verb was run. Sometimes you need more powerful tools than that.

Let's execute centigrade, but with a stop on each line so that you can take a look at exactly what is going on.
dbss 'centigrade *:*'
The dbss (Set Stop) argument requests a stop before executing all, indicated by *:*, lines in centigrade.
dbr 1
dbr with an argument of 1 requests that the system suspend execution when an error or stop occurs. When a verb is suspended it is halted in mid execution. You can examine definitions, change definitions, and you can resume execution of the suspended verb.
centigrade 212
|stop
| t1=.y-32
|centigrade[0]
The error report (bars at the left margin) indicates execution stopped on line 0 of centigrade and shows the sentence from that line.
The execution of centigrade is suspended and the indent of six spaces, rather than three, indicates the suspension. The variable y is the argument.
y
212
The stop occurs before the line is executed, so t1 has not been defined and if you try to look at it you will get a value error.
Use dbrun to continue execution. It will run the current line, and because stops are set on all lines it will then stop on the next line.
dbrun ''
|stop
| t2=.t1*5
|centigrade[1]
t1
180
t1*5
900
centigrade is now stopped on line 1, and as you can see, you are able to check the value of local t1 that was defined in line 0. Step through the next lines and examine locals.
dbrun ''
|stop
| t3=.t2%9
|centigrade[2]
t2
900
t2%9
100
dbrun ''
100
You are no longer suspended in centigrade and you are back to the normal indent of three spaces.
Turn off the request for debug suspensions and reset to have no stops.
dbr 0
dbss ''
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer


THE LAST EMPEROR A film review by Mark R. Leeper Copyright 1987 Mark R. Leeper
Capsule review: Impressive biographical historical epic gives an emotionally uninvolving account of the life of Pu Yi, the last emperor of China. Bertolucci tells us about historical events he should show us and shows us sex scenes he should probably only tell us about. But the sweep of history is certainly present and a great deal of change in China is obvious. Rating: +2.
We in the United States feel we have grown used to change. Change seems to come quickly and to virtually all aspects of life. But in fact change does not come very fast to the United States and we do not take to change well. The country that has seen the most change this century is, in all probability, China. For millennia it had retained a feudal structure under the emperors. China held firmly to its past as the rest of the world moved forward. When it finally did let go of that past, it snapped violently forward into the 20th Century. In the span of a single lifetime it has gone from dynasties to the electronic age. Even a shorter lifetime could have seen five very different forms of government. And such a lifetime was the one lived by Pu Yi, the last emperor of China.
THE LAST EMPEROR chronicles Pu Yi's life from the days the emperor ruled to the Republic, to the days when the Japanese invaded and ruled Manchuria, to the Communist revolutionary government, and finally to the Cultural Revolution. And each government uses Pu Yi without ever giving him any power. He is always a puppet and each succeeding government merely seizes the strings from the previous one. Each regime is portrayed in a bad light and each resurrects aspects of the days when the emperor ruled.
THE LAST EMPEROR is a big film, an epic, with a great deal of historical scope. As such it is quite a good film, but it is in some ways very flawed. Bernardo Bertolucci somehow fails to breathe any life at all into his characters. They are strangely uninvolving; one is always displaced from them. The characters are more ciphers than humans. Just when we might be ready to empathize with Pu Yi, he does something immature and nasty and suddenly we find ourselves not caring for him again. THE LAST EMPEROR also panders a little, taking more opportunities than necessary to shock us with scenes of breast-feeding, feces-sniffing, multi-partner sex, opium use, and lesbianism. Bertolucci underestimates his audience (or at least me) if he thinks that this sort of thing is what would interest them, even if he finds historical documentation for it, which I doubt.
All told, I would rate THE LAST EMPEROR a +2 on the -4 to +4 scale.
Mark R. Leeper ihnp4!mtgzz!leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| GLEAN(1) | GLEAN(1) |
gln_index(1) is used to build the index, and gln(1) is used for searching. gln_index runs gln_filter(1) to determine whether files should be indexed or ignored, and gln_tokens(1) to get the set of tokens present in indexed files.
The indexed files are not required to have any specific structure; they are just treated as lists of whitespace-separated words. It's designed to be used as a first-pass index for everything, to maximize serendipitous discovery. The results from glean are like those from grep -r foo / , only much faster.
Bugs and other issues are listed on the github page at http://github.com/silentbicycle/glean.
| June 10, 2011 |


http://action.vday.org/site/R?i=C28Za5BFHlPsSCPYP69mqw
http://action.vday.org/site/R?i=vIzSI-xNXg6S-EUJ9reBgQ
http://action.vday.org/site/R?i=czCQpNp1wvlTiax4_yfUnw
http://action.vday.org/site/R?i=G9cm2_x8hPppGrBgiHynfA
http://action.vday.org/site/R?i=d9N3NEOUyJM3BWM2PwxlKg
http://action.vday.org/site/R?i=ucYncWYk6bP3oqJfc0a_uA
ARTISTIC UPRISING: Come See These Amazing Performers & Activists
http://action.vday.org/site/R?i=kqKpbJ-hQ2_aLQQfLrc3sA
MAYA AZUCENA | BATALA NYC | BETTY |
CLIMBING POETREE
CHRISTINE SCHULER DESCHRYVER | ASALI DEVAN ECCLESIASTES
EVE ENSLER | GINA LORING | MORELY |
EMMA MYLES | KATHY NAJIMY
THANDIE NEWTON | AGNES PAREYIO | SUNNI
PATTERSON | STREB
SWOON | KARABO TSHIKUBE | MONIQUE WILSON
| Y3K
JAHA ZAINABU | ZOYA | & MORE TO BE
ANNOUNCED
http://action.vday.org/site/R?i=kBGb_vOzbNn6mcmzYNzRNQ
ARTISTIC UPRISING
Saturday, 7 February, 7PM
HAMMERSTEIN BALLROOM, NYC
A Revolutionary evening of Performance & Slam Poetry,
DANCING, Music, & Activist Inspiration
Tickets*: $25, $100 (includes One Billion Rising Revolution
gift) & $1,000 (includes complimentary wine, champagne
and beer for 2 hrs)
BUY TICKETS >
http://action.vday.org/site/R?i=iq5gTLEvyllrBdcHPfAOrg
ALL TICKETS IN EACH SECTION ARE GENERAL ADMISSION.
All seated tickets are on a first come, first served basis within your
chosen section.
*Proceeds will support our Rising work to end violence against women
in Afghanistan, Democratic Republic of Congo, Kenya, and the
Philippines.
http://action.vday.org/site/R?i=KJXHGZ-eF8RWa2CkQeoc-Q
NEW: India’s Official One Billion Rising Newsletter 2014 - 2015!
One Billion Rising Revolution activists in India have released this
stunning newsletter about their collective events & actions
building to Feb 2015. The report is full of photos, revolutionary
ideas, artistic expressions of love & anti-violence, and
inspiration!
http://action.vday.org/site/R?i=_ks4zE0gFapYHq5PBB1puA
It’s the perfect read if you’re looking of ways enrich and expand your
http://action.vday.org/site/R?i=NKEj3imToPFlKUvdDxOzXQ
VIEW India’s Official One Billion Rising Newsletter 2014 - 2015! >
http://action.vday.org/site/R?i=6YvdNv5AntXRD8gu2jJG4w
http://action.vday.org/site/R?i=ntMciFPPUUyZ8JyJzAn0DQ
http://action.vday.org/site/R?i=Z6b0Q_IiYQHUfbycYJzhxw
http://action.vday.org/site/R?i=BbkF7Vu409CYLR0tM8ZILA
http://action.vday.org/site/R?i=OfbCAb1ssNhyG_RGu0GUcA
http://action.vday.org/site/R?i=MjLCqQ5-KqfhcSJ2-Gwfuw
http://action.vday.org/site/R?i=nKaHbFEb-XJBjdTEL9e0xw
http://action.vday.org/site/R?i=d1zuoTQ2HwuGkCWmpdy4pQ
http://action.vday.org/site/R?i=SgJlseEVEN3Jc59waQ5Htg
unsubscribe
http://action.vday.org/site/CO?i=IFCm-mdJXtUBkvYNMbsUa_MyAUUyqRZF&cid=1062
Powered By Blackbaud


Cacti - T. pachanoi (San Pedro)
I took my first San Pedro journey yesterday and thought I'd share what I learned. Hopefully this report will help inexperienced users with things like preparation, set and setting, and knowing what to expect from the dosage in the report. It's fairly long, but I've broken it down into sections so you can skip around if you like!
Set/Setting:
My apartment, alone on a Tuesday. I've cleaned and prepared the house for my trip by getting out the waterfall fountain, setting out art books, etc. The weather is unremarkable and I have nothing to do but this all day. My mood is positive, if somewhat anxious about possible nausea during the trip. I recently lost my job and have been under a lot of stress, but have put it all aside for this experience in hopes that I'll come out with some insight.
Previous Drug Experiences:
The only psychedelics I've done are mushrooms, about 6 times, and salvia, which did nothing. Other drugs include marijuana, ephedra, kratom, Benzedrex, poppy pods, hydrocodone, oxycodone, Xanax, codeine, alcohol, and muscle relaxers, all in small/therapeutic doses and not large recreational ones.
Mental/Physical Preparation: Because I never try a new drug without knowing EVERY possible outcome, I scoured the web for upwards of 2 weeks to learn all about the mighty San Pedro. I read my tarot cards and followed their advice for what to focus on both before and during the trip, got all my worries out in the open with loved ones beforehand, and did a quick colon cleanse/detox the day before using magnesium citrate, fiber, and other cleasing aids. This was a well-planned event, not a spur-of-the-moment thing, and I'm glad I did it that way as it added to the meaning I got out of the experience.
~~~Cactal Slime and Finger Pricks, aka 'The Preparation'~~~
I received a 12-inch cutting in the mail as a birthday gift from my mother (coolest mom EVER?!) and immediately began preparing it for the following day. I de-spined it, peeled off the outer xylem, cut it from the inner woody core and chopped it finely with a large knife, all of which was very messy and sticky.
I dried the chopped material in front of a fan for an hour, then popped it in the oven on 'Warm' (around 150 degrees) with the door cracked. I watched it carefully to make sure it didn't burn and took it out when it was nearly completely dry. My biggest mistake here was not spraying the cookie sheet with non-stick spray, which caused the some of the pieces to be lost. Next I put the pieces into a food processor, then crushed the remains with a mortar and pestle. It still wasn't a fine powder, but wasn't in huge chunks either. Finally, I put the material into pill capsules and tucked it away for the following day.
Total prep time: 6+ hours.
~~~Ingestion~~~
I was left with 11 '0' sized pill capsules, which I took one at a time. My biggest fear with psychedelics isn't a bad trip, but the nausea/vomiting that can occur. To help prevent it, I took the pills slowly and ate candied ginger slices, chewed fennel seeds, and drank plenty of water. I also ate some cacao nibs to help boost the experience, as they contain theobroma, a stimulating compound with all sorts of health-enhancing properties. My stomach wasn't full, but was far from empty. After about 8 pills, I had to eat some granola to combat that 'my stomach is eating itself' feeling. No nausea to speak of!
Total ingestion time: 2 hours.
~~~The Wait~~~
Knowing how long mescaline can take to fully kick in, I had plenty of things to entertain me while I waited. I sat on the couch reading a book called 'Spliffs' and listening to a Bob Marley mix cd that always relaxes me. Colors slowly became more vivid, and the music sounded crisp and clear, if only a little more so than usual. I patiently wait for more, while sipping water and eating granola.
Total waiting time: 1.5 hours from taking last dose.
~~~Liftoff/The Ascent~~~
While finishing up my book, I slowly start to notice a stoned feeling. Words move around slightly, colors jump off the page at me...
I get up to go to the bathroom. As I'm sitting there, I see the shape of a woman in the style of a Sistine Chapel painting in the floor tile. Whoa! I've never noticed any patterns in the tile before, so this is my first indicator that the San Pedro is in full effect. I continue looking for more shapes, spotting another, and another...
Walking back into the livingroom, the music really took hold of me.  Little rushes of euphoria and energy washed over me and made it hard for me to stop smiling.
Total comeup time: 30 minutes.
~~~Tripping in Earnest, aka 'The Orbit'~~~
For the next 7 hours, I alternated between euphoric stimulation and utter exhaustion. My body felt light one moment, filled with lead sediment the next. My hands and feet were cold, and I had to pee...A LOT. Vision was noticeably altered, with colors appearing brighter and more vibrant, shapes jumping out at me, and minor movement of things like carpet fibers and pictures on the wall. My mind was occupied with the notion that I was being healed and interpreted the experience both as a learning process and a mental vacation as opposed to a fun 'party' experience. I felt as if I couldn't have willed myself into a bad trip even if I tried. The only negative part was the drowsiness, but only because I prefer drugs that are more stimulating. During the trip I mostly read, laid on the floor listening to music, surfed the web, and played Nintendo.
Total orbit time: 7 hours
~~~Potholes and Pitfalls~~~
My roommate brought home some pepperoni pizza about 7 hours into the trip, and I was starved. I scarfed down 4 pieces and was surprisingly not sluggish afterward. (I have wheat, cheese, and gluten sensitivities that cause extreme fatigue).
About an hour later, I was gripped with extreme stabbing pains in my urinary tract, bladder, back and stomach--the same thing that happened on my 1st shroom trip years before! I suffer recurrent UTIs and kidney infections and know that drinking lots of water is the best remedy. I downed as much as I could, which helped the pain but caused about 30 seconds of the most intense nausea imaginable as well as a feverish, hot feeling. I sat still and let it pass.
Total 'icky' time: 30 minutes.
~~~Slow Descent to Baseline~~~
The rest of the experience consisted of more stimulated/exhausted feelings, visual effects, and introspection on things like God/the Divine, physical healing and ways to incorporate more creativity into my life. Slowly, ever so slowly, the visual effects became less pronounced and the drowsiness turned to genuine need for sleep. When I went to bed (around 2 A.M.), sleep came easily and was more refreshing than normal. No nightmares, no waking up in the night, and no morning fatigue.
~~~Residuals~~~
That brings me to this morning, which has been really positive. I feel almost better than I did during the trip--refreshed, optimistic, and with less craving for unhealthy food/drugs. I routinely use poppy pod tea, Benzedrex inhalers, and caffeine, all of which irritate my kidneys and produce somewhat addictive effects. I'm already planning future trips, and want to do San Pedro every other month as both a physical healing agent and for the positive mental effects.
~~~Retrospective~~~
Overall, my first San Pedro experience was a positive one. While it's not 'fun' in the traditional sense, it's an interesting, relatively-safe way to get out of your own head for a day and see things from a different perspective. My experience was a moderate one--a far cry from my first mushroom trip, which was weird, unpleasant physically and too intense. I could've stood to take more than 12 inches, but not by much--probably another 4-5 inches would've been perfect. Marijuana would've sent my trip to another dimension, and I kept wishing I had some during my trip. Being alone was fun, but so was hanging out with my roommate. If you're an introvert, I suggest doing it alone (in a safe environment of course).
In terms of its relation to other drugs, I'd say San Pedro is like mushrooms visually and like marijuana in its feelings of physical intoxication, with overtones of both a stimulant and a sedative, we'll say ephedra and Valium for the sake of comparison. While I've never done MDMA, I'd liken some of the brief euphoric feelings to it. San Pedro is milder at this dose than about 2 grams of shrooms, but I'm sure it can be even stronger than other hallucinogens if taken in large enough doses.
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.


Applications
Table of Contents
1 Applications
1.1 Mathematics
Trigonometric Degree Functions
deg2rad deg = deg*pi/180.0 -- convert degrees to radians rad2deg rad = rad*180.0/pi -- convert radians to degrees sind = sin . deg2rad cosd = cos . deg2rad tand = tan . deg2rad atand = rad2deg . atan atan2d y x = rad2deg (atan2 y x )
Example:
> map rad2deg [pi/6, pi/4, pi/3, pi/2, pi] [29.999999999999996,45.0,59.99999999999999,90.0,180.0] > > > map sind [30.0, 45.0, 60.0, 90.0, 180.0 ] [0.49999999999999994,0.7071067811865475,0.8660254037844386,1.0,1.2246063538223773e-16] >
1.2 Piecewise Functions
Implement the following functions in Haskell
/ 0.10 if 0.0 <= x <= 7150.0 | 0.15 if 7150.0 < x <= 29050.0 | 0.25 if 29050.0 < x <= 70350.0 f1(x)= | 0.28 if 70350.0 < x <= 146750.0 | 0.33 if 146750.0 < x <= 319100.0 \ 0.35 if 139100.0 < x < +infinitum / x^2 - 1 if x < 0 f2(x) = | x - 1 if 0 <= x < 4 \ 3 if x > 4
import Graphics.Gnuplot.Simple (|>) x f = f x (|>>) x f = map f x pairs xs = zip xs (tail xs) infp = 1.0e30 -- Plus Infinite infm = (-1.0e30) -- Minus Infinite inInterval x (p1, p2) = (fst p1) < x && x <= (fst p2) piecewiseFactory intervalTable x = f x where f = filter (inInterval x) (pairs intervalTable) |> head |> fst |> snd arange start stop step = [start,(start+step)..(stop-step)] plotFxs f xs = do let ys = map f xs plotList [] (zip xs ys) f1_table = [ (0.0, const 0.10), (7150.0, const 0.15), (29050.0, const 0.25), (70350.0, const 0.28), (146750.0, const 0.33), (319100.0, const 0.35), (1.0e30, const 0.35) ] f2_table = [ (infm, \x -> x**2 - 1), -- if -∞ < x <= 0 -> x^2 - 1 (0.0, \x -> x - 1.0 ), -- if 0 < x <= 4 -> x - 1 (4.0, \x -> 3.0), -- if 4 < x <= +∞ -> 3.0 (infp, \x -> 3.0 ) ] f1 = piecewiseFactory f1_table f2 = piecewiseFactory f2_table
> plotFxs f1 $ arange (1.0)<PHONE_NUMBER>.0
!f1 chart
> plotFxs f2 $ arange (-4) 4 0.01
!f2 chart
1.3 Numerical Methods
1.3.1 Polynomial
Polynomial evaluation by the horner method.
polyval :: Fractional a => [a] -> a -> a polyval coeffs x = foldr (\b c -> b + x*c) 0 coeffs polyderv :: Fractional a => [a] -> [a] polyderv coeffs = zipWith (*) (map fromIntegral [1..n]) (tail coeffs ) where n = (length coeffs) - 1
Example:
Reference: http://www.math10.com/en/algebra/horner.html f(x) = a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5 f(x0) = a0 + x0(a1 + x0(a2 + x0(a3 + x0(a4 + a5x0)))) Example: Evaluate the polynomial f(x) = 1x4 + 3x3 + 5x2 + 7x + 9 at x = 2 df(x) = 3x3 + 6x2 + 10x + 7
> let coeffs = [9.0, 7.0, 5.0, 3.0, 1.0] > let f = polyval coeffs let df = polyval $ polyderv coeffs > polyderv coeffs [7.0,10.0,9.0,4.0] > f 2 83.0 > df 2 95.0 > (\x -> 7 + 10*x + 9*x^2 + 4*x^3) 2 95
1.3.2 Numerical Derivate
derv dx f x = (f(x+dx) - f(x))/dx f x = 2*x**2 - 2*x df = derv 1e-5 f *Main> map f [2, 3, 4, 5] [4.0,12.0,24.0,40.0] *Main> *Main> let df = derv 1e-5 f *Main> *Main> map df [2, 3, 4, 5] [6.000020000040961,10.000019999978349,14.000019999116374,18.000019998964945] *Main> *Main> let dfx x = 4*x - 2 *Main> map dfx [2, 3, 4, 5] [6,10,14,18]
1.3.3 Nonlinear Equation - Root-finding
See also:
Bisection Method
bisection_iterator :: (Floating a, Floating a1, Ord a1) => (a -> a1) -> [a] -> [a] bisection_iterator f guesslist = newguess where a = guesslist !! 0 b = guesslist !! 1 c = (a+b)/2.0 p = f(a)*f(c) newguess = (\p -> if p < 0.0 then [a, c] else [c, b] ) p bisectionSolver eps itmax f x1 x2 = (root, error, iterations) where bisection_error xlist = abs(f $ xlist !! 1) check_error xlist = bisection_error xlist > eps iterator = bisection_iterator f rootlist = [x1, x2] |> iterate iterator |> takeWhile check_error |> take itmax pair = last rootlist |> iterator root = last pair error = bisection_error pair iterations = length rootlist *Main> let f x = exp(-x) -3*log(x) *Main> bisectionSolver 1e-5 100 f 0.05 3 (1.1154509544372555,8.86237816760671e-6,19) *Main>
Newton Raphson Method
{- Newton-Raphson Method Iterator, builds an iterator function from the function to be solved and its derivate. -} newton_iterator f df x = x - f(x)/df(x) {--------------------------------------------------------------------- newtonSolver(eps, itmax, f, df, guess) Solve equation using the Newton-Raphson Method. params: eps : Tolerance of the solver itmax : Maximum number of iterations f : Function which the root will be computed df : Derivate of the function guess : Initial guess newtonSolver :: (Fractional t, Ord t) => t -> Int -> (t -> t) -> (t -> t) -> t -> (t, t, Int) ----------------------------------------------------------------------- -} newtonSolver :: (Floating t, Ord t) => t -> Int -> (t -> t) -> (t -> t) -> t -> (t, t, Int) newtonSolver eps itmax f df guess = (root, error, iterations) where check_root x = abs(f(x)) > eps iterator = newton_iterator f df -- Builds the Newton Iterator generator = iterate $ iterator -- Infinite List that will that holds the roots (Lazy Evaluation) rootlist = take itmax $ takeWhile check_root $ generator guess root = iterator $ last $ rootlist error = abs(f(root)) iterations = length rootlist square_root a | a > 0 = newtonSolver 1e-6 50 (\x -> x^2 -a) (\x -> 2*x) a | otherwise = error ("The argument must be positive") {- Solve f(x) = x^2 - 2 = 0 The solution is sqrt(2) -} > let f x = x^2 - 2.0 > > let df x = 2*x > > let df x = 2.0*x > > newtonSolver 1e-3 100 f df 5 (1.414470981367771,7.281571315052027e-4,4) > > newtonSolver 1e-3 100 f df 50 (1.4142150098491113,4.094082521888254e-6,8) >
Secant Method
(|>) x f = f x (|>>) x f = map f x secant_iterator :: Floating t => (t -> t) -> [t] -> [t] secant_iterator f guesslist = [x, xnext] where x = guesslist !! 0 x_ = guesslist !! 1 xnext = x - f(x)*(x-x_)/(f(x) - f(x_)) secantSolver eps itmax f x1 x2 = (root, error, iterations) where secant_error xlist = abs(f $ xlist !! 1) check_error xlist = secant_error xlist > eps iterator = secant_iterator f rootlist = [x1, x2] |> iterate iterator |> takeWhile check_error |> take itmax pair = last rootlist |> iterator root = last pair error = secant_error pair iterations = length rootlist *Main> let f x = x^2 - 2.0 *Main> secantSolver 1e-4 20 f 2 3 (1.4142394822006472,7.331301515467459e-5,6) *Main> *Main> let f x = exp(x) - 3.0*x^2 *Main> secantSolver 1e-5 100 f (-2.0) 3.0 (-0.458964305393305,6.899607281729558e-6,24) *Main>
1.3.4 Differential Equations
Euler Method
The task is to implement a routine of Euler's method and then to use it to solve the given example of Newton's cooling law with it for three different step sizes of 2 s, 5 s and 10 s and to compare with the analytical solution. The initial temperature T0 shall be 100 °C, the room temperature TR 20 °C, and the cooling constant k 0.07. The time interval to calculate shall be from 0 s to 100 s
From: http://rosettacode.org/wiki/Euler_method
Solve differential equation by the Euler's Method. T(t) ---- = -k(T(t) - Tr) dt T(t) = Tr + k(T0(t) - Tr).exp(-k*t)
import Graphics.Gnuplot.Simple eulerStep f step (x, y)= (xnew, ynew) where xnew = x + step ynew = y + step * (f (x, y)) euler :: ((Double, Double) -> Double) -> Double -> Double -> Double -> Double -> [(Double, Double)] euler f x0 xf y0 step = xypairs where iterator = iterate $ eulerStep f step xypairs = takeWhile (\(x, y) -> x <= xf ) $ iterator (x0, y0) > let dTemp k temp_r (t, temp) = -k*(temp - temp_r) > euler (dTemp 0.07 20.0) 0.0 100.0 100.0 5.0 [(0.0,100.0),(5.0,72.0),(10.0,53.8),(15.0,41.97) \.\.\. (100.0,20.01449963666907)] > let t_temp = euler (dTemp 0.07 20.0) 0.0 100.0 100.0 5.0 plotList [] t_temp
Runge Kutta RK4
See also: Runge Kutta Methods
import Graphics.Gnuplot.Simple rk4Step f h (x, y) = (xnext, ynext) where k1 = f (x, y) k2 = f (x+h/2, y+h/2*k1) k3 = f (x+h/2, y+h/2*k2) k4 = f (x+h,y+h*k3) xnext = x + h ynext = y + h/6*(k1+2*k2+2*k3+k4) rk4 :: ((Double, Double) -> Double) -> Double -> Double -> Double -> Double -> [(Double, Double)] rk4 f x0 xf y0 h = xypairs where iterator = iterate $ rk4Step f h xypairs = takeWhile (\(x, y) -> x <= xf ) $ iterator (x0, y0) > let dTemp k temp_r (t, temp) = -k*(temp - temp_r) > > let t_temp = rk4 (dTemp 0.07 20.0) 0.0 100.0 100.0 5.0 > plotList [] t_temp >
1.4 Statistics and Time Series
1.4.1 Some Statistical Functions
Arithmetic Mean of a Sequence
mean lst = sum lst / fromIntegral (length lst)
Geometric Mean of Sequence
geomean lst = (product lst) ** 1/(fromIntegral (length lst))
Convert from decimal to percent
to_pct lst = map (100.0 *) lst {- Decimal to percent -} from_pct lst = map (/100.0) lsd {- from Percent to Decimal -}
Lagged Difference of a time serie
- lagddif [xi] = [x_i+1 - x_i]
lagdiff lst = zipWith (-) (tail lst) lst
Growth of a Time Series
- growth [xi] = [(x_i+1 - x_i)/xi]
growth lst = zipWith (/) (lagdiff lst) lst
Percentual Growth
growthp = to_pct . growth
Standard Deviation and Variance of a Sequence
{- Standard Deviation-} stdev values = values |>> (\x -> x - mean values ) |>> (^2) |> mean |> sqrt {- Standard Variance -} stvar values = stdev values |> (^2)
Example: Investment Return
The annual prices of an Blue Chip company are given below, find the percent growth rate at the end of each year and the CAGR Compound annual growth rate.
year 0 1 2 3 4 5 price 16.06 23.83 33.13 50.26 46.97 39.89
Solution:
> let (|>) x f = f x > let (|>>) x f = map f x > > let cagr prices = (growthp prices |>> (+100) |> geomean ) - 100 > > let prices = [16.06, 23.83, 33.13, 50.26, 46.97, 39.89 ] > > {- Percent Returns -} > let returns = growthp prices > > returns [48.38107098381071,39.02643726395302,51.705402958044054,-6.545961002785513,-15.073451139024908] > > let annual_cagr = cagr prices > annual_cagr 19.956476057259906 >
1.4.2 Monte Carlo Simulation Coin Toss
The simplest such situation must be the tossing of a coin. Any individual event will result in the coin falling with one side or the other uppermost (heads or tails). However, common sense tells us that, if we tossed it a very large number of times, the total number of heads and tails should become increasingly similar. For a greater number of tosses the percentage of heads or tails will be next to 50% in a non-biased coin. Credits: Monte Carlo Simulation - Tossing a Coin
File: coinSimulator.hs
import System.Random import Control.Monad (replicateM) {- 0 - tails 1 - means head -} flipCoin :: IO Integer flipCoin = randomRIO (0, 1) flipCoinNtimes n = replicateM n flipCoin frequency elem alist = length $ filter (==elem) alist relativeFreq :: Integer -> [Integer] -> Double relativeFreq elem alist = fromIntegral (frequency elem alist) / fromIntegral (length alist) simulateCoinToss ntimes = do series <- (flipCoinNtimes ntimes) let counts = map (flip frequency series) [0, 1] let freqs = map (flip relativeFreq series) [0, 1] return (freqs, counts) showSimulation ntimes = do result <- simulateCoinToss ntimes let p_tails = (fst result) !! 0 let p_heads = (fst result) !! 1 let n_tails = (snd result) !! 0 let n_heads = (snd result) !! 1 let tosses = n_tails + n_heads let p_error = abs(p_tails - p_heads) putStrLn $ "Number of tosses : " ++ show(tosses) putStrLn $ "The number of tails is : " ++ show(n_tails) putStrLn $ "The number of heads is : " ++ show(n_heads) putStrLn $ "The % of tails is : " ++ show(100.0*p_tails) putStrLn $ "The % of heads is :" ++ show(100.0*p_heads) putStrLn $ "The %erro is : " ++ show(100*p_error) putStrLn "\n-------------------------------------"
> :r [1 of 1] Compiling Main ( coinSimulator.hs, interpreted ) Ok, modules loaded: Main. > > :t simulateCoinToss simulateCoinToss :: Int -> IO ([Double], [Int]) > > :t showSimulation showSimulation :: Int -> IO () > > simulateCoinToss 30 ([0.5666666666666667,0.43333333333333335],[17,13]) > > simulateCoinToss 50 ([0.56,0.44],[28,22]) > > simulateCoinToss 100 ([0.46,0.54],[46,54]) > > simulateCoinToss 1000 ([0.491,0.509],[491,509]) > > mapM_ showSimulation [1000, 10000, 100000, 1000000] Number of tosses : 1000 The number of tails is : 492 The number of heads is : 508 The % of tails is : 49.2 The % of heads is :50.8 The %erro is : 1.6000000000000014 ------------------------------------- Number of tosses : 10000 The number of tails is : 4999 The number of heads is : 5001 The % of tails is : 49.99 The % of heads is :50.01 The %erro is : 1.9999999999997797e-2 ------------------------------------- Number of tosses : 100000 The number of tails is : 49810 The number of heads is : 50190 The % of tails is : 49.81 The % of heads is :50.19 The %erro is : 0.38000000000000256 ------------------------------------- Number of tosses : 1000000 The number of tails is : 499878 The number of heads is : 500122 The % of tails is : 49.9878 The % of heads is :50.01219999999999 The %erro is : 2.4399999999996647e-2 -------------------------------------
1.5 Vectors
Dot Product of Two Vectors / Scalar Product
- v1.v2 = (x1, y1, z1) . (x2, y2, z2) = x1.y1 + y1.y2 + z2.z1
- v1.v2 = Σai.bi
> let dotp v1 v2 = sum ( zipWith (*) v1 v2 ) - With Parenthesis > let dotp v1 v2 = sum $ zipWith (*) v1 v2 - Without Parenthesis with $ operator > dotp [1.23, 33.44, 22.23, 40] [23, 10, 44, 12] 1820.81
Norm of a Vector
- norm = sqrt( Σxi^2)
> let norm vector = (sqrt . sum) (map (\x -> x^2) vector) > norm [1, 2, 3, 4, 5] 7.416198487095663 -- Vector norm in multiple line statements in GHCI interactive shell > :{ | let { | norm2 vec = sqrt(sum_squares) | where | sum_squares = sum(map square vec) | square x = x*x | } | :} > > norm2 [1, 2, 3, 4, 5] 7.416198487095663 >
Linspace and Range Matlab Function
linspace d1 d2 n = [d1 + i*step | i <- [0..n-1] ] where step = (d2 - d1)/(n-1) range start stop step = [start + i*step | i <- [0..n] ] where n = floor((stop - start)/step)
1.6 Tax Brackets
Progressive Income Tax Calculation
Credits: Ayend - Tax Challange
The following table is the current tax rates in Israel:
Tax Rate Up to 5,070 10% 5,071 up to 8,660 14% 8,661 up to 14,070 23% 14,071 up to 21,240 30% 21,241 up to 40,230 33% Higher than 40,230 45%
Here are some example answers:
5,000 –> 500 5,800 –> 609.2 9,000 –> 1087.8 15,000 –> 2532.9 50,000 –> 15,068.1
This problem is a bit tricky because the tax rate doesn’t apply to the whole sum, only to the part that is within the current rate.
A progressive tax system is a way to calculate a tax for a given price using brackets each taxed separately using its rate. The french tax on revenues is a good example of a progressive tax system.
To calculate his taxation, John will have to do this calculation (see figure on left): = (10,000 x 0.105) + (35,000 x 0.256) + (5,000 x 0.4) = 1,050 + 8,960 + 2,000 = 12,010 John will have to pay $ 12,010 If John revenues was below some bracket definition (take $ 25,000 for example), only the last bracket containing the remaining amount to be taxed is applied : = (10,000 x 0.105) + (15,000 x 0.256) Here nothing is taxed in the last bracket range at rate 40.
Solution:
(|>) x f = f x (|>>) x f = map f x joinf functions element = map ($ element) functions -- Infinite number above = 1e30 pairs xs = zip xs (tail xs) {- Tax rate function - Calculates the net tax rate in % taxrate = 100 * tax / (gross revenue) -} taxrate taxfunction income = 100.0*(taxfunction income)/income progressivetax :: [[Double]] -> Double -> Double progressivetax taxtable income = amount where rates = taxtable |>> (!!1) |>> (/100.0) |> tail levels = taxtable |>> (!!0) table = zip3 levels (tail levels) rates amount = table |>> frow income |> takeWhile (>0) |> sum frow x (xlow, xhigh, rate) | x > xhigh = (xhigh-xlow)*rate | otherwise = (x-xlow)*rate taxsearch taxtable value = result where rows = takeWhile (\row -> fst row !! 0 <= value) (pairs taxtable) result = case rows of [] -> taxtable !! 0 xs -> snd $ last rows {- This is useful for Brazil income tax calculation [(Gross Salary – Deduction - Social Security ) • Aliquot – Deduction] = IRRF [(Salário Bruto – Dependentes – INSS) • Alíquota – Dedução] = -} incometax taxtable income = amount--(tax, aliquot, discount) where row = taxsearch taxtable income aliquot = row !! 1 discount = row !! 2 amount = income*(aliquot/100.0) - discount {- Progressive Tax System -} israeltaxbrackets = [ [0, 0], [ 5070.0, 10.0], [ 8660.0, 14.0], [14070.0, 23.0], [21240.0, 30.0], [40230.0, 33.0], [above , 45.0] ] taxOfIsrael = progressivetax israeltaxbrackets taxRateOfIsrael = taxrate taxOfIsrael braziltaxbrackets = [ [1787.77, 0, 0.00], [2679.29, 7.5, 134.48], [3572.43, 15.0, 335.03], [4463.81, 22.5, 602.96], [above, 27.5, 826.15] ] taxOfBrazil = incometax braziltaxbrackets taxRateOfBrazil = taxrate taxOfBrazil {- Unit test of a function of numerical input and output. input - Unit test case values [t1, t2, t2, e5] expected - Expected value of each test case [e1, e2, e3, e4] tol - Tolerance 1e-3 typical value f - Function: error_i = abs(e_i-t_i) Returns true if in all test cases error_i < tol -} testCaseNumeric :: (Num a, Ord a) => [a1] -> [a] -> a -> (a1 -> a) -> Bool testCaseNumeric input expected tol f = all (\t -> t && True) ( zipWith (\x y -> abs(x-y) < tol) (map f input) expected ) testIsraelTaxes = testCaseNumeric [5000, 5800, 9000, 15000, 50000] [500.0,609.2,1087.8,2532.9,15068.1] 1e-3 taxOfIsrael > testIsraelTaxes True > > > taxOfIsrael 5000 500.0 > taxOfIsrael 5800 609.2 > taxOfIsrael 1087.8 108.78 > taxOfIsrael 15000.0 2532.9 > taxOfIsrael 50000.0 15068.1 > > taxRateOfIsrael 5000 10.0 > taxRateOfIsrael 5800 10.50344827586207 > taxRateOfIsrael 15000 16.886 > taxRateOfIsrael 50000 30.1362
Sources:
1.7 Small DSL Domain Specific Language
Simple DSL for describing cups of Starbucks coffee and computing prices (in dollars). Example taken from: http://www.fssnip.net/9w
starbuck_dsl.hs
data Size = Tall | Grande | Venti deriving (Eq, Enum, Read, Show, Ord) data Drink = Latte | Cappuccino | Mocha | Americano deriving (Eq, Enum, Read, Show, Ord) data Extra = Shot | Syrup deriving (Eq, Enum, Read, Show, Ord) data Cup = Cup { cupDrink :: Drink, cupSize :: Size, cupExtra :: [Extra] } deriving(Eq, Show, Read) {- - Table in the format: - ------------------- - tall, grande, venti - Latte p00 p01 p02 - Cappuccino p10 p11 p12 - Mocha p20 p21 p22 - Amaericano p30 p31 p32 -} table = [ [2.69, 3.19, 3.49], [2.69, 3.19, 3.49], [2.99, 3.49, 3.79], [1.89, 2.19, 2.59] ] extraPrice :: Extra -> Double extraPrice Syrup = 0.59 extraPrice Shot = 0.39 priceOfcup cup = baseprice + extraprice where drinkrow = table !! fromEnum (cupDrink cup) baseprice = drinkrow !! fromEnum (cupSize cup) extraprice = sum $ map extraPrice (cupExtra cup) {- Constructor of Cup -} cupOf drink size extra = Cup { cupSize = size, cupDrink = drink, cupExtra = extra} drink_options = [ Latte, Cappuccino, Mocha, Americano] size_options = [ Tall, Grande, Venti] extra_options = [[], [Shot], [Syrup], [Shot, Syrup]] cup_combinations = [ cupOf drink size extra | drink <- drink_options, size <- size_options, extra <- extra_options]
Example:
> :load starbucks_dsl.hs [1 of 1] Compiling Main ( starbucks_dsl.hs, interpreted ) Ok, modules loaded: Main. > > > let myCup = cupOf Latte Venti [Syrup] > let price = priceOfcup myCup > myCup Cup {cupDrink = Latte, cupSize = Venti, cupExtra = [Syrup]} > price 4.08 > > priceOfcup (cupOf Cappuccino Tall [Syrup, Shot]) 3.67 > > let cups = [ cupOf Americano Venti extra | extra <- extra_options] > cups [Cup {cupDrink = Americano, cupSize = Venti, cupExtra = []}, Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Shot]}, Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Syrup]}, Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Shot,Syrup]}] > > let prices = map priceOfcup cups > prices [2.59,2.98,3.1799999999999997,3.57] > > let cupPrices = zip cups prices > cupPrices [(Cup {cupDrink = Americano, cupSize = Venti, cupExtra = []},2.59), (Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Shot]},2.98), (Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Syrup]},3.1799999999999997), (Cup {cupDrink = Americano, cupSize = Venti, cupExtra = [Shot,Syrup]},3.57)] >


| DOSE: |
2 hits |
oral |
LSD |
(blotter / tab) |
My friend and I consider ourselves experienced trippers to some degree or another, even spiritual if you will. We often would sit in my well designed basement bedroom, 'the acid room,' and trip for hours on end listening to goa. This is a most stimulating experience in itself, to listen to one of the most auditorily challenging music styles on the planet. This isn't any kind of techno, however; it is a very spiritual and influencing sound.
One day I decided to indulge on my own, which I really do enjoy at times. I took 2 blotters, which I secured from a rave a few day earlier. The acid began to take effect and let down its unrelenting power upon my willful mind. General color pattern changes and breathing and molding occured. I sat and watched a candle move around for quite a while.
I proceeded then in my peak to smoke a bowl or two of some good commercial and increase the auditory stimulation and reception of my mind. So there I lay on my couch between 4 three-foot three-way speakers and two tweeters, which created an enviroment with awesome surround sound. All was normal until the weed kicked in. Directly across from me there was a black light illuminating the room and lighting a Hebrew eye chart across from me and a few irridescent things in that area of the room. To give a short idea of what this room looks like, imagine half of a normal sized basement, a speaker in every corner, and on both concrete walls there were complete black light hand paintings I did that have UNINTENTIONAL 'hidden pictures' in them, which my friend pointed out for me. One is quite impressive, it's a lake reflecting green hills and a mountain of volcanoes and it looks real only under the black light (painted in white light, mind you).
So here I was in the center of this room staring at the wall with my favorite techno dj tape on (dan efex:protocols) and the moment it started I felt as though I was being pulled further and further away. When I finally looked at what I was seeing, I realized I was looking out of my face as if I was seeing through the holes of my eyes, nose and mouth. Eventually I was no longer there at all. The experience itself remains somewhat of a mystery, but I do know that I attained knowledge, memories and life experiences of someone else which I knew of when it happened but the setting of this out of body experience was completely foreign to me, out of this world. I highly recommend to all those people out there who are into experience, find Hallucinogen:the lone deranger, or something known as GOA trance, and take a listen while in a good LSD/marijuana state and you will understand what I mean. Salvia is next on my list so expect to hear from me again.
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.


Content before activity.
- You shall see Hello World being displayed at the center of the following box.
- If you click on Hello World, you shall see a dialog displayed at the center
of the box (on top of Hello World).
- Try to scroll the browser, you shall see they remain where it is
Content after activity.
It will cause the scrollbar to show up. If you don't see it, it is a bug.


Before Change
// Filter out points too far from volume region voxels
dists = _compute_nearest(rr_voi, rr, return_dists=True)[1]
// Maximum distance from center of mass of a voxel to any of its corners
maxdist = linalg.norm(vox_mri_t["trans"][:3, :3].sum(0) / 2.)
return dists <= maxdist
def _make_volume_source_space(surf, grid, exclude, mindist, mri=None,
After Change
idx = np.empty(rr.shape[::-1], np.int64)
for ii in range(3):
good &= rr_vox[:, ii] < mgz_data.shape[ii] - 0.5
idx[ii] = np.clip(np.round(rr_vox[:, ii]).astype(np.int64),
0, mgz_data.shape[ii] - 1)
good &= mgz_data[tuple(idx)] == vol_id
return good