Cold email deliverability analysis (no tech)
Why do cold emails fail?
Ready for some cold email deliverability analysis? To avoid being spammed with your cold emails, you must overcome three obstacles.
First, you don’t want recipients to mark your email as spam; otherwise, you’re going to have a hard time getting people to see your email.
You also don’t want to be blacklisted by email providers. If Google blacklists your domain for spamming, you’re finished. You don’t want that, and neither do spam filters. If you use traditional spam words like free, you’ll get marked manually, automatically, or by spam filters.
So, how do you avoid them all? Let’s examine them closely. The first is to prevent spam reports.
How do you stop a cold email from being marked as spam? The first step is to customize the email’s first line to appear, not as a spam email.
If you see your email on your phone and want to mark it as spam, then it’s spam, and you need to rework it. You’ll be blacklisted if you send it to your recipients.
You must also target the right prospects. Make sure your list is clean. People who don’t own a fashion store will mark your email as spam if you talk about fashion because it’s irrelevant. So make sure you’re checking your lead quality. If you send to the wrong people, you are spamming.
People shouldn’t know that you sent an email to a thousand people if you do it right. It should look like you sat at a computer and sent the email just to them. You can only achieve this with a clean and hyper-targeted list.
Third, look human and ask for a response. Getting replies to your emails is the easiest way to avoid spam or the Promotions tab.
To make it simple, ask for a response by saying something like, “Would you mind if I sent over a few times for a quick call?” So if we can write our emails in a way that looks human, we’ll get responses and avoid being marked as spam because they’re responding to us. The manual flag thing is the easiest to get through by mastering cold email by copywriting and sending things people want to read.
Now for the more technical ones. You don’t want to be flagged by email or service providers. This is when Google looks into how you send emails and decides whether you’re spamming or not, destroying your domain if you are.
So, how to avoid it?  You must prepare. The previous article recommended tools that allowed you to ramp up consistently without getting hit immediately by your internet service provider or email client.
Second, use automation with care, whether it’s checking your lead lists or customizing your first lines. Sending unproven emails to many people will get you marked as spam. Send 40 emails, check the open and response rates, and send another 40 to keep improving. Don’t send 5000 unproven emails, or you’ll be marked spam.
You can still be the greatest email writer ever by sending it to 40 people. You don’t need to send it to 5000. You will eventually reach three, four, or five thousand people, but you can significantly improve your results by starting slowly.
To avoid being marked by your ISP, the third thing you can do is reduce bounces by using an email verifier. You want to make sure your emails are going to real people. I try to keep our bounce rate in the single digits as low as possible. Google, Gmail, or your service provider will see if your bounce rate is too high and mark you as spam because you’re guessing email addresses.
If you’re using an email verification tool and are getting a catch-all email or have 70% confidence that the email will go through, don’t send it to that email. Only send it to those with higher confidence because you don’t want that bounce rate to be high.
If you buy a list of 5000 and send to 20 first, and five of them bounce, you just saved yourself from having a blacklisted domain because if you send to the entire list, email providers mark you as spam, which is why I always recommend sending in small batches first.
To test and improve, you should use different templates. If you send the same message every day without changing anything, your ISP will mark you as spam. You should always use a custom first line to avoid this.
Last but not least, monitor your reputation. There are tools to check if providers have marked you as spam. Some of those tools also let you warm up your email, which I’ll cover shortly, or set up a new domain without breaking the rules. You need to be able to identify spam quickly.
You’ll also notice it if your open rates plummet dramatically, as in sending emails with a 60-80% open rate. You send emails to the same list the following week and get a 3% open rate. If you’re getting marked as spam, go to our public Facebook group, or I can help you one-on-one in the private community.
Finally, these spam filters put you in the spam folder. To send emails through custom domains, you must first set up your email infrastructure correctly. If you’re using Google Workspaces, Google’s email sending tool, you’ll need to move your servers over to your email sending tool, so you’re not sending from your email sending tool’s server but Google’s server or the server from the email provider that you choose.
Using a warm-up email account means sending emails to people who will respond, making Google think your account is real. You’re not just here to spam people. You’re getting replies and replying and getting newsletters. Some tools will automate this for you, some I recommended in previous articles, so check that out.
Avoid spam trigger words, and be aware that the algorithms will mark you even if your content isn’t spammy. All of this boils down to not spamming if you have a list of 5000 or 800000 contacts.
More Templates
-
Cold Email Templates
Some great showcases
More Articles
-
No Response! How to Follow Up.
All set up for cold emailing?
-
Ideal client profile
Tailored and Targeted.
-
How to create icebreakers.
Use icebreakers to attract your prospects.
-
Follow-up! The reminder sequence.
How to dramatically increase your cold email response rates.

-
Effecient Email Communications
Good email communication helps your business.
-
Cold email mistakes most of us make
Avoid these ten common cold emailing mistakes.
-
Cold emails aren't just for sales or business
The story of Maddie Bregman.
-
Five parts for a great email.
Email is the foundation of our daily communication.
-
10 Tips To Improve Your Cold Emails
This article was just updated.
-
Make your offer a no-brainer
How to make your offer so strong that it becomes irresistible?
-
How to find the right people to cold email
If they don’t respond within two weeks, move down one level.
-
Cold Email OR Marketing Email
How to tell marketing emails from cold emails?
-
Cold email deliverability analysis (no tech)
Why do cold emails fail?
-
A step by step how we use cold emails
Use cold emails to get clients and grow our business.
-
Transforming strangers into customers.
Write a cold email that creates curiosity.
-
How to Prepare an Email Account for Cold Email Sending
Deliverability is critical when sending cold emails.


List¶
Usage
use Collection.List;
-
class
List
: Collection¶ A data structure without any particular ordering.
-
class
DynamicBoundedList
: BoundedList¶ A data structure with a dynamic capacity.
-
proc
resize
(newSize: int): bool¶
-
proc
-
class
IndexableList
: Collection¶ A list that can be indexed into.
-
proc
get
(idx: int): (bool, eltType)¶ Obtain the element at the requested index.
-
proc
indexOf
(elt: eltType): int¶ Obtains the index of the requested element, if present in the list.
-
proc
add
(idx: int, elt: eltType): bool¶ Add an element at a specific index in the list.
-
proc
subList
(start: int, end: int = -1): IndexableList(eltType)¶ Creates a new list containing the items at the specified indexes. If end is less than start, then the end indice is set to the end of the list. If the end is greater than the size of the list, it will also be set to the end of the list.
-
proc


{% extends 'base.html' %} {% block content %}
You are trying to get to a page that requires a login. so, like, login. in more formal terms...
The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentials (e.g. a bad password), or your browser doesn't understand how to supply the credentials required.


PSALMS 134
A psalm written for people going up to the temple to worship.
1 All you people who serve Yahweh,
who stand up and serve him at night in his temple,
come and praise him!
2 Lift up your hands to pray to him in the temple
and praise him!
3 I hope that Yahweh, who created heaven and the earth,
may bless you from where he lives in the temple on Mount Zion!


Select Resource
Sign Up Page
Main page
Select Resource
Dogs
Cats
Hamsters
Wishlist
Name
Type
Delete
Matreshka
British Shorthair
Delete
Haru
Shiba Inu
Delete
Add


Temperature Map¶
This program will results in:
A Weighted Voronoi Tessellation Map
Spectra for each bin
Temperature and Abundance Maps
Hardness Maps
In order to run this program you need the following:
1. Reprocessed Chandra ObsIDs –> you also need to merge them (merge_obs) Fits image of region of interest created from merged Observations
To run the program please supply those items (and other relevant info) in an input file (see Inputs folder for examples) and execute the following command:
python Temperature_Maps.py Inputs/example.i


Computes profile extrema functions for arbitrary functions. If the function is expensive-to-evaluate it computes profile extrema by emulating the function with a Gaussian process (using package 'DiceKriging'). In this case uncertainty quantification on the profile extrema can also be computed. The different plotting functions for profile extrema give the user a tool to better locate excursion sets.
| Version: | 0.2.0 |
| Depends: | R (≥ 2.10), DiceKriging, KrigInv, pGPx |
| Imports: | microbenchmark, quantreg, lhs, splines, methods, RColorBrewer, utils, MASS, rcdd |
| Published: | 2018-08-30 |
| Author: | Dario Azzimonti [aut, cre, cph] |
| Maintainer: | Dario Azzimonti <dario.azzimonti at gmail.com> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | profExtrema results |
| Reference manual: | profExtrema.pdf |
| Package source: | profExtrema_0.2.0.tar.gz |
| Windows binaries: | r-devel: profExtrema_0.2.0.zip, r-release: profExtrema_0.2.0.zip, r-oldrel: profExtrema_0.2.0.zip |
| OS X binaries: | r-release: profExtrema_0.2.0.tgz, r-oldrel: profExtrema_0.2.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=profExtrema to link to this page.


Highlights
-
Arctic Code Vault Contributor
adlerosn doesn't have any projects yet.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.


{{ .client | markdownify }}
| Time | Main Conference Room | Time | Room 2 |
|---|---|---|---|
| 08:30 - 09:30 | Entrance and Registration | ||
| 09:30 - 09:40 | Welcome Remarks SatRday Kampala Organizers |
||
| 09:40 - 09:55 | Keynote 1: Satrdays and world perspective on data science Stephanne Locke, Locke Data |
||
| 09:55 - 10.10 | Keynote 2: Data Science in Africa (Africa R User Group) Shelmith Karuki, Busara Centre |
||
| 10:10 - 11:10 | Introduction to R Nelda Limilimi ,Wefarm |
10:00 - 12:35 |
Workshop Writing reliable Functions David Clarance, M Kopa Solar |
| 11:10 - 12:35 | TidyVerse Overview Brian Ojok |
||
| 12:35 - 01:30 | Lunch Break | ||
| 01:30 - 02:15 | Twitter Data Analysis Sam Luyinda Mukasa, German Cooperation |
01:30 - 03:00 |
Workshop Predictive Analytics in R, Use case: Zindi Fraud detection Challenge Mark Okello, Patira Data Science and TMCG |
| 02:15 - 03:00 | R in Medicine Vincent Arumadri, MRC UVRI |
||
| 03:00 - 03:30 | Social Break : Ask the Expert Kevin O'Brien, R Forward |
||
| 03:30 - 04:00 | Using R for Reproducible Research Wilbrod Ntawiha, NSSF Uganda |
||
| 04:00 - 04:30 | Hypothesis Testing Shelmith Karuki, Busara Centre |
||
| 04:30 - 05:00 | The Future of Machine Learning Leonard Alvin Kabwama, Cognitive AI Tech Limited |
||
| 05:00 - 05:20 | Webinar Kampala R partners and sponsors |
||
| 05:20 - 05:30 | Closing Remark SatRday Kamapala Organizers |


Niantic Privacy Policy
Effective as of: May 25, 2018
We are Niantic. We provide real-world augmented reality platforms, designed to enable you to interact in shared worlds, seamlessly blended with the real world. To do that, we need information about you. Protecting your privacy is really important to us. We only use your information where we have a legal basis to do so. This Privacy Policy will help you understand what information we collect, how we use it and what choices you have when you play any of our games, use our websites, buy merchandise from us, or take part in live events and promotions (the "Services").
Please note that in additional to the general information below, specific information about how certain of our Services use your information is provided at the end of this Privacy Policy in the "Game Specific Disclosures".
You should also read our Terms of Service which set out the contract between you and Niantic.
1. Who decides how your information is used?
Niantic, Inc., is the data controller responsible for making decisions about how we use your personal information. If you have any questions or comments on this policy, you can:
-
Email us at<EMAIL_ADDRESS>-
Write to us at 1 Ferry Building Suite 200, San Francisco, CA 94111
-
Contact our Data Protection Officer at<EMAIL_ADDRESS>2. The information we collect about you and how we use it
This Privacy Policy covers our use of any information that can or could be used to identify you ("Personal Data"). It does not cover information which cannot be used to identify you ("Anonymous Data").
We need to collect and use certain Personal Data to provide the Services to you and fulfil the promises we make to you in the Terms of Service:
-
When you sign up for our Services you give us Personal Data voluntarily by providing it to us, for example when you sign up for an account. We collect and use that information in order to authenticate you when you register an account and use the Services, to make sure you are eligible and able to receive the Services, and so that you receive the correct version of the Services. That information includes the in-game username you choose to use on our Services, and internal account IDs that we assign to your account.
-
You must have an account with a supported third party single sign-on service to use our Services. As such, the Personal Data we collect also depends on which third party accounts you choose to use, their privacy policy, and what your privacy settings with those services allow us to see when you use their services to access Niantic Services.
-
If you choose to link your Google account to the Services, we will collect your Google email address and an authentication token provided by Google.
-
If you choose to link your Facebook account to the Services, we will collect a unique user ID provided by Facebook and, if permitted by you, your Facebook registered email address.
-
Depending on the particular Service you sign up for, we may support other third party single sign-on services and collect additional Personal Data from them. For details please read the Game Specific Disclosures at the end of this Privacy Policy.
Some third-party providers may notify you that they make additional information, such as your public profile, available to us when you use their single sign-on services. We do not collect that information from them.
-
We collect and use your device location information as you use our Services, including how you move around and events that occur during gameplay. Our Services include location based games, so we need to know where you are to operate these games for you, and to plan the location of in-game resources (for example PokéStops within Pokémon GO). We identify your location using a variety of technologies, including GPS, the WiFi points you are accessing the Service through and mobile/cell tower triangulation.
-
We also collect and use your in-game actions and achievements as well as certain information about your mobile device collected during gameplay (including device identifiers, device OS, model, settings and information about third party applications installed on your device), to operate the Services for you and to ensure that we provide a fair gaming experience to all players in accordance with our Terms of Service (which includes anti-fraud and anti-cheating measures).
-
We also use the information above to show in-game sponsored locations that are in your vicinity as part of the gameplay experience.
-
We further use the information above in order to provide technical and customer support to you.
-
You also give us Personal Data when you make a purchase through us, subscribe to our publications, enter a competition, promotion, sweepstakes or survey or communicate with us. Depending on which of these Services you use, that may include your name, mailing address, phone number, country of residency, date of birth (as needed to verify eligibility), and email address. We use that information to fulfil those Services to you and to provide related customer support to you.

-
Using your contact information, namely your email address in order to communicate with you to provide technical and customer support.
-
Using your email address and device information in order to share updates and news about the Services with you either within the games or by email. You can unsubscribe from these at any time in your device settings or in-app settings.
-
To offer new or additional features for our Services.
-
To organize and run live events based on or featuring our games. Note that when you participate in live events your in-game actions and achievements, in-game username and your avatar will be visible to other event participants and to the public (for example on leaderboards displayed at the event and online).
-
To carry out anti-fraud and anti-cheating measures and to ensure that you and other users are complying with our Terms of Service.
-
To make legal or regulatory disclosures.
We will only use your Personal Data to do the following if we have your consent:
-
Send you marketing materials by email or via in-app notifications. You can unsubscribe from these at any time in your device settings or in-app settings.
-
We also rely on your consent where we use cookies or similar technologies. Please see our Cookie Policy for more information about how we use them. Insofar as cookies collect Personal Data, we will process it only based on your explicit consent, in anonymized form, or under a pseudonym.
While you may disable the usage of cookies through your browser settings, Niantic currently does not respond to a "Do Not Track" signal in the HTTP header from your browser or mobile application due to the lack of industry standard on how to interpret that signal.
3. Who we share information with
We will not share any Personal Data that we have collected from or regarding you except as described below:
Information Shared with Our Services Providers. We engage third party service providers to work with us to administer and provide the Services. As part of that they will process your Personal Data on our behalf. These third party service providers have access to your Personal Data only for the purpose of performing services on our behalf, in compliance with this Privacy Policy, and we make sure each one is contractually obliged not to disclose or use your Personal Data for any other purpose. The service providers we use help us to:
-
run, operate and maintain our mobile games through third party platform and software tools;
-
perform content moderation and crash analytics;
-
run email and mobile messaging campaigns;
-
perform game and marketing analytics;
-
administer live events, competitions, sweepstakes and promotions, including registering players, managing check-in and attendance, verifying eligibility and prize fulfilment;
-
provide technical and customer support.
Information Shared with Other Players. When you use the Services, and in particular when you play our games or take part in live events, we will share certain Personal Data with other players. This Personal Data includes your in-game username, your avatar, your in-game actions and achievements, and your public in-game messages. For some games, this might include your location. For more details please read the Game-Specific Disclosures at the end of this Privacy Policy.
Information Shared with Third Parties. We share Anonymous Data with third parties for industry and market analysis. We may share Personal Data with our third-party publishing partners for their direct marketing purposes only if we have your express permission. We do not share Personal Data with any other third parties for their direct marketing purposes.
Information Disclosed for Our Protection and the Protection of Others. We cooperate with government and law enforcement officials or private parties to enforce and comply with the law. We only share information about you to government or law enforcement officials or private parties when we reasonably believe necessary or appropriate: (a) to respond to claims, legal process (including subpoenas and warrants); (b) to protect our property, rights, and safety and the property, rights, and safety of a third party or the public in general; and (c) to investigate and stop any activity that we consider illegal, unethical, or legally actionable.
Information Disclosed in Connection with Business Transactions. Information that we collect from our users, including Personal Data, is a business asset. If we are acquired by a third party as a result of a transaction such as a merger, acquisition, or asset sale or if our assets are acquired by a third party in the event we go out of business or enter bankruptcy, some or all of our assets, including your Personal Data, will be disclosed or transferred to a third party acquirer in connection with the transaction.
4. How your Personal Data is transferred
Niantic operates its Services across the globe. Your Personal Data will very likely be transferred and stored in a country outside of your home country, including in the USA, for the purposes outlined in this Privacy Policy. The data protection laws in these countries may not be the same as in your home country.
If we transfer your Personal Data from the European Economic Area (EEA) to other countries, including the USA, we ensure that a similar degree of protection is provided to your Personal Data as within the EEA by ensuring that at least one of the following safeguards is implemented:
-
The country that your Personal Data is transferred to is a country that the European Commission has deemed to provide an adequate level of protection for Personal Data as the EEA.
-
We use specific contracts approved by the European Commission which give Personal Data the same protection as it has in Europe when we engage with service providers.
-
Where we engage with service providers in the USA, they are part of the EU-US Privacy Shield, which requires them to provide the same protection of your Personal Data as it has in the EEA.
5. How we keep your Personal Data safe
We have appropriate security measures in place to prevent your Personal Data from being accidentally lost, used or accessed in an unauthorized way, improperly altered or disclosed. We also limit access to your Personal Data to employees, agents, contractors and other third parties who have a business need to know. They will only process your Personal Data on our instructions and they are subject to a duty of confidentiality. We have put in place procedures to deal with any suspected Personal Data breach and will notify you and any applicable regulator of a breach where we are legally required to do so.
6. How long we will keep your Personal Data
We keep your Personal Data for as long as we need to provide the Services to you and fulfil the purposes set out in this Privacy Policy. This is also the case for anyone that we share your information with and who carry out services on our behalf.
When we no longer need to use your Personal Data and there is no need for us to keep it to comply with our legal or regulatory obligations, we will either remove it from our systems or anonymize it so that it can no longer be associated with you.
7. Your rights and choices
You have certain rights in relation to your Personal Data. In order to exercise these rights, please contact us at:
-
For Pokémon GO here.
-
For Ingress here.
-
For all other Services at<EMAIL_ADDRESS>If you're a user based in the EEA (or in any country that mandates similar rights), you can:
-
Request access to the Personal Data we hold on you.
-
Delete or correct your Personal Data. The easiest way to update your account information is via your in-app settings. You can also submit a customer support request through our support website here for Pokémon GO, or here for Ingress.
-
Object to us processing your Personal Data. Some of the Personal Data we hold is necessary for us to provide the Services to you and fulfill the promises we make to you in the Terms of Service.
-
Ask us to stop using your Personal Data, including for marketing and promotional purposes (but be aware that sometimes we need to use your Personal Data in order for you to use the Services).
-
Have your Personal Data transferred to another organization (where it is technically feasible).
-
Complain to a regulator. We'd appreciate the chance to deal with your concerns directly so we'd prefer you to contact us first. However, if you're based in the EEA and believe that we have not complied with data protection laws, you can complain to our regulator, the UK Information Commissioner’s Office, or with your local supervisory authority.
The law provides exceptions to these rights in certain circumstances. Where you cannot exercise one of these rights due to such an exception, we will explain to you why.
We offer you choices regarding the collection, use, and sharing of your Personal Data and we’ll respect the choices you make. Please note that if you decide not to provide us with the Personal Data that we request, you may not be able to access all of the features of the Services.
We aim to provide the information or complete the outcome you request within 30 days.
8. Children
As a general rule, if you are outside the EEA, children under 13 are not allowed to use the Services. If you are based in the EEA you may only use the Services if you are over 16, or the age needed to consent to the processing of personal data in your country of residence. We do however allow children to use the Pokémon GO Service, provided we have the required parental consent. For more details please read the Game-Specific Disclosures at the end of this Privacy Policy.
If we learn that we have collected Personal Data of a child under the age of 13, or in the EEA 16 or the age needed to consent to the processing of personal data, and we do not have parental consent, we will take steps to delete such information from our files as soon as possible.
9. Changes to this Privacy Policy
Any Personal Data that we collect is covered by the Privacy Policy in effect at the time such information is collected. We may make changes to this Privacy Policy from time to time. You will be given reasonable notice of any material change.
10. Third Parties
In using our Services you may access links to websites and services that are owned or operated by third parties (each, a "Third Party Service"). Any information that you provide on or to a Third Party Service or that is collected by a Third Party Service is provided directly to the owner or operator of the Third Party Service and is subject to the owner’s or operator’s privacy policy. We’re not responsible for the content, privacy, or security practices and policies of any Third Party Service. To protect your information we recommend that you carefully review the privacy policies of all Third Party Service that you access.
11. Game Specific Disclosures
Additional Privacy Information for Pokémon GO
Pokémon Trainer Club Accounts. You can sign up for Pokémon GO using your third-party Pokémon Trainer Club ("PTC") account administered by The Pokémon Company International (“TPCI”). If you choose to do so, we will collect from TPCI your PTC registered email address, your PTC username and a unique PTC user ID.  See the “Accounts with Children” paragraph below for more information.
Accounts with Children. We comply with parental consent requirements as mandated by the U.S. Children’s Online Privacy Protection Act (COPPA) and European data protection laws (including, without limitation, the General Data Protection Regulation) through a verification and consent process handled by TPCI. As described in the Pokémon GO Terms of Service, the parent or legal guardian ("Parent") of each child under the age of 13, or in the EEA 16 or the age needed to consent to the processing of personal data (“Child”), must register with TPCI through a PTC account before their Child can access and use the game. The Parent will have to provide to TPCI certain Personal Data about the Child in accordance with the TPCI privacy policy. Of that, Niantic will only collect from TPCI the Child’s personal email address, and the date when the Child will grow out of the age limits listed above.
For U.S. residents, after a Parent has registered a PTC account, TPCI will verify the Parent’s identity by asking for the sum of the first and last digits of the Parent’s social security number and the Parent’s name, date of birth, and street address. TPCI will not share that information with us. After TPCI verifies the Parent’s identity, it will ask the Parent to consent to the Child accessing Pokémon GO. If a Parent does not consent to a Child’s access to and use of Pokémon GO or does not verify their identity through the consent process, Niantic will bar that Child’s registration on Pokémon GO and prevent the Child’s access to and use of the game.
Parents have the right to refuse further collection, use, and/or disclosure of their Child’s Personal Data by notifying us. As a Parent, you understand that Niantic has a legitimate interest in providing your Child’s information collected via the Services to third party providers for the sole purpose of administering or providing the Services, as described in Paragraph 3 of this Privacy Policy.
Information shared with other players. When you take certain actions in Pokémon GO and capture a Gym, your (or your authorized Child’s) username will be shared publicly through the game, including with other players, in connection with the Gym. We use location information to provide the Services to you (or your authorized Child), and especially to provide you (or your authorized Child) with our core gameplay feature of a game experience tied to your real world location. We also use location information to plan the locations of game resources, such as for PokéStops within the game.
Apple Watch and Apple Health App Data. If you use Pokémon GO with your Apple Watch, with your consent we use the Apple HealthKit APIs to read and/or write certain data about your fitness activity (Step Count, Calories Burned, and Distance Walked) to the Health App Database on your device (the "Health App Data"). We may store Health App Data on our servers in connection with your Pokémon GO user account. We use Health App Data to provide you certain functionality in the game (such as distances walked to hatch eggs), and to ensure you get “credit” in your Apple Health App for all of the walking you do while playing Pokémon GO. We will not use Health App Data for marketing or advertising purposes. We do not store Health App Data in iCloud. Pokémon GO cannot read from or write to the Health App Database without your consent.
Additional Privacy Information for Ingress
Information shared publicly. When you play Ingress, as part of the gameplay the following information about you will be shared through the game (including with other players directly within the app, in game notifications emailed to other players as part of the gameplay, and online on the Ingress Intel Map website), and will therefore become publicly available: your in-game username, messages sent to other users in public COMMS, and in-game portals that you interact with, as well as your device location whenever you take an in-game action.


ComboSex.py: A Simple Python Tool to Spark Creativity / Part 1
Based on a James Altucher blog post, I created a tool that combines 2 words from a scraped data set
creative python projectComboSex.py is a simple Python Tool that uses a scraped word list to combine random word combinations in an effort to spark creativity. The tool was inspired by a blog post from James Altucher called “How to Make Millions with Idea Sex”. The principle is simple, combine two seemingly non-related objects to get the new hotness.
Dolls + Action = G.I. Joe
Space + Buddhism = Star Wars
Plus, millions of other examples you could come up with. The point is to get the juices flowing.
Nitty-Gritty
Since this tool is still an infant, it has some issues I will be working out in the next coming days. Essentially, the tool is a while loop that gives a pre-determined number of results (default 10) of two word combinations. The database is a text file with all the results combined together, one word per line.
Gotcha’s that Need Work
- The word list needs work. I need to parse the one character words out and I would like to add more than just nouns, verbs, adverbs and adjectives. Movies titles will be my next addition to the word list barring some crazy copyrights I am currently unaware of.
- More Variety. As it sits right now you can manually go into the script and change the while loop to produce more than 10 results of two word combinations I would like to give the user more input on the front end. This is easy, all it takes is establishing variables. I wanted to think about other possibilities and do it all at once.
- Make it pretty. I have been wanting to use Kivy for a while but didn’t have a good reason to dive in and mess with it. This isn’t the best script for it, however, this should be able to give me worth while practice with the library.
- Export the Results. I haven’t come across this yet, however, it’s an easy feature and would like the possibility of exporting the results, probably in CSV format.
The source files can be seen on Github.
Josh Stepp


Configuring Skupper sites using YAML
Using YAML files to configure Skupper allows you to use source control to track and manage Skupper network changes.
Installing Skupper using YAML
Installing Skupper using YAML provides a declarative method to install Skupper. You can store your YAML files in source control to track and manage Skupper network changes.
-
Access to a Kubernetes cluster
-
Log into your cluster. If you are deploying Skupper to be available for all namespaces, verify you have
cluster-admin
privileges. -
Deploy the site controller:
-
To install Skupper into the current namespace deploy the site controller using the following YAML:
kubectl apply -f https://raw.githubusercontent.com/skupperproject/skupper/1.0/cmd/site-controller/deploy-watch-current-ns.yaml
-
To install Skupper for all namespaces:
-
Create a namespace named
skupper-site-controller
. -
Deploy the site controller using the following YAML:
kubectl apply -f https://raw.githubusercontent.com/skupperproject/skupper/1.0/cmd/site-controller/deploy-watch-all-ns.yaml
-
-
-
Verify the installation.
$ oc get pods NAME READY STATUS RESTARTS AGE skupper-site-controller-84694bdbb5-n8slb 1/1 Running 0 75s
Creating a Skupper site using YAML
Using YAML files to create Skupper sites allows you to use source control to track and manage Skupper network changes.
-
Skupper is installed in the cluster or namespace you want to target
-
You are logged into the cluster
-
Create a YAML file to define the site, for example,
my-site.yaml
:apiVersion: v1 data: cluster-local: "false" console: "true" console-authentication: internal console-password: "rubble" console-user: "barney" edge: "true" name: my-site router-console: "true" service-controller: "true" service-sync: "true" kind: ConfigMap metadata: name: skupper-site
-
Apply the YAML file to your cluster:
kubectl apply -f ~/my-site.yml
See the Site ConfigMap YAML reference section for more reference.
Site ConfigMap YAML reference
Using YAML files to configure Skupper requires that you understand all the fields so that you provision the site you require.
The following YAML defines a Skupper site:
apiVersion: v1 data: cluster-local: "false" (1) console: "true" (2) console-authentication: internal (3) console-user: "username" (4) console-password: "password" (5) edge: "false" (6) name: my-site (7) router-console: "true" (8) service-controller: "true" (9) service-sync: "true" (10) kind: ConfigMap metadata: name: skupper-site (11)
| 1 | Only accept connections from within the local cluster, defaults to false . |
| 2 | Enables the skupper console, defaults to true . |
| 3 | Specifies the skupper console authentication method. The options are openshift , internal , unsecured . |
| 4 | Username for the internal authentication option. |
| 5 | Password for the internal authentication option. |
| 6 | Specifies whether an edge site is created, defaults to false . |
| 7 | Specifies the site name. |
| 8 | Enables the router console, defaults to false . |
| 9 | Specifies whether the service controller runs, defaults to true . |
| 10 | Specifies whether the services are synchronized across the service network, defaults to true . |


You can now Login to continue...


Farming
Feeling sick of chemicals and materialistic life
Get a chance to experience and a feel the wilderness of the nature with Uniccan with Hands-on and onsite organic farming training with Jai Ganesh, Tapovana Organic farms.
Every morsel of food and sip of water we consume is important for day today life. But for decades our food and water have been contaminated by powerful and harmful pesticides which have been promoted as necessary for better agriculture without them. And organic agriculture have been looked as tough and not practical.
Break this myth with learning and practicing organic farming with Jai Ganesh who have succeeded in breaking this myth. And get to learn the trick of making agriculture more profitable and sustainable by going organic with Jai Ganesh.
Willing to transform and go eco. We at Uniccan, for your convenience gives you a session which packs you with a complete basics of organic farming and techniques. Session details are subsequently provided with the document.
https://drive.google.com/.../1yZbwBQYvEzF6eACFk
VQbhvmrsT.../edit...
To register your interest, click the link below
https://goo.gl/forms/qCILCH6nBrR5B8LZ2
#goorganic


|
Average weight per ward/month
573 tonnes
Or the weight of 82 x
|
Most waste
Landfill General (17147)
Inerts (14554)
Timber (10543)
|
Least waste
Ink Cartridges (1) or 882
Cans (3) or 185,220
Tetrapak (7) or 7 million
|
| There are 9 wards for recycling in the City of Leeds. | Weight is measured in tonnes. | Weight is measured in tonnes. |


Admin Guide
Getting Started
This guide will take you through all the required steps for providing secure reporting to your stakeholder. This includes:
- Getting access to a Binokula Tenant
- Building and publishing a report in Power BI Desktop
- Providing access to reports in Binokula
- Automating data refreshes
Getting a Binokula Tenant
A Binokula Tenant is your dedicated area for publishing, hosting and managing access to your report content. Only organizations that wish to share and control access to reports need a Tenant. If you are expecting to just access reports in Binokula, you will need to be added as a User on a Tenant.
If your organization wishes to get a trial Tenant, please contact<EMAIL_ADDRESS>If you are expecting to already have access to reports in Binokula, you can enter your email address at https://binokula.app or contact the organization whose report content you wish to access.
Building and Publishing Reports
Building a Report without RLS
Binokula uses Microsoft Power BI as its report building tool. It is possible for a report to be published to Binokula without any RLS. For a report to be correctly published in Binokula without RLS, the report has to adhere to the following:
- The User Security configuration must be set to ignored. This can be done through Report Management under Binokula Admin page.
Building a Report with RLS
- RLS - Row-Level Security ensures that users see only the data they are authorized to see.
Building a report with RLS requires that the report adhere to the following:
- Must have a security role called "User_Security" in the Power BI Model.
Show "User_Security" example
- Must have a DAX filter on the Entity to User Mapping List which uses the USERNAME() function.
-
The table the DAX filter is on must contain the list of the users emails. Show USERNAME() example
-
Cross filter direction should be set to Both for the relationship with Entity to User Mapping List
- Apply security filter in both directions should be ticked for the relationship with Entity to User Mapping List Show Cross Filter and Apply Security Fiter Both example
Testing Power BI RLS
Once you have configured the RLS as shown above, you can test the security by impersonating a user. To do this:
- Click "View as Roles" in Power BI Desktop;
- Tick "Other User" and enter the test user's email address; and
- Tick "User_Security" and click OK. Show "View as Roles" screen
You should now only see data that the test user should see.
Power BI Workspaces
Binokula supports multiple Power BI workspaces. This means any Power BI report can be published into any workspaces under your tenants publisher account. To ensure your report appears on Binokula, your tenants admin account must be a member of the workspace.
To include your tenants admin to your selected workspace:
- Log into powerbi.com as your assigned publisher account.
- Navigate to your chosen workspace.
- At the top click "Access".
Workspace access button
- In the Email search bar start typing admin. Your tenants admin account will have the same domain as your publisher account.
- In the drop down menu select "Member".
-
Click Add. Add admin to workspace
-
Reports within that workspace will now be available in Binokula after a Report Refresh in the Binokula Admin portal.
Publishing Power BI Reports
Once you have built and tested your Power BI report, the next step is to publish the report to your dedicated Tenant. This is done with the unique publisher account, details you would have received as part of requesting your Binokula Tenant. You can sign-in with the publisher account by clicking on "Sign in" in Power BI Desktop. If you are already signed in with a different account, click on the account name and select "Switch account". Once you are signed in, you can publish the report by:
- Saving any changes;
- Clicking on the "Publish" button on the Home menu; and
- Choosing "Binokula" as the destination before clicking "Select"
Note:
- Save the report with a friendly name that you would want your users to see. Try to avoid names with abbreviations and version numbers like "test_fin_HL_V0.13".
- Editing an existing report can be done by re-publishing the same report from Power BI Desktop. Select Yes when prompted to overwrite the dataset.
- Another way to edit an existing report is by making changes on powerbi.com with your publisher account. Re-publishing from Power BI Desktop will override these changes.
Reseting your Publisher Account Password
To reset your tenants Publisher Account password:
- Navigate to the Administrator page
- Go to Portal settings
- Click the "Reset Publisher Account Password" link and confirm
- Copy and use the strong temporary password provided to sign into your tenants Publisher Account via Power BI
Note:
You will be prompt to change your password upon your initial sign in using the provided temporary password.
Report for Mobile Viewing
Power BI Mobile is supported by Binokula. All you need to do is create the mobile view of a report in the Power BI Desktop file and publish it to your Tenant. Please see Microsoft's Power BI Phone Report documentation for more information on configuring phone layout on Power BI Desktop.
Show Phone Layout option in Power BI Desktop
Managing Tenant details
Assigning your organization name to your tenant
Your organization name will be used in automated emails sent out to users and other front facing features that labels your tenant.
- Navigate to the Admin Page and click "Portal Settings"
- Under the field "Organization Name" enter the name of your organization.
- Click save.
Managing access to reports in Binokula
Any new reports published are by default not accessible to any users. Access to reports is controlled through Report Groups. To give yourself access to view a report, you will need to be an administrator and complete the following in Binokula:
- Import the report definition into Binokula by clicking on the Refresh button in the reports administration page;
- Create a new Report Group in the report group administration page;
- Add the new report to the Report Group;
- Add yourself as a user in the report group; and
- Select the report in the Reports user page.
Assigning more users and reports
The process is exactly the same as the previous steps, all you have to do is add more users. If it will be too time-consuming to add users by one-by-one, you can create a script to call the Binokula REST API to add users in bulk. Please see the Developer Guide for details on the REST API. If you need to expose more than one report to a specific audience, multiple reports can also be added to a Report Group through the Report Group administration page.
Note:
- Currently communications to end users are managed by Tenant administrators. However, you can send a Forgot Password link to users directly in the User Management administration page.
- Typical onboarding communication contains a link to the Binokula.app page with instructions to enter their email address and then click the Reset password link.
Automating and scheduling the refresh of report data
Refreshing data for Binokula reports is the same as in any other Power BI report*. Any on-premise data used in the report needs to be supported by the Power BI On-Premise Data Gateway. The on-premise data gateway needs to be installed and configured with the credentials of your unique publisher account. Cloud data sources also need to be supported by the Power BI service. Additional information on Power BI's data refresh capabilities can be found here:
*The Power BI Data Model still needs to have the "User_Security" role created in Power BI Desktop.
Once you have an on-premise data gateway configured, you can access powerbi.com with your assigned publisher account and configure the schedule refresh as per the Power BI Documentation.
Managing Users
User Management is done through the user management link in the admin portal. This interface will allow you to:
- Add new users
- Delete users
- Enable/disable users
- Enable/disable admins
- Enable/disable report sharing
- Reset passwords
- Test Users User management functions
Note:
- Users are automatically added when programmatically signed in with the single-sign-on API.
- Bulk adding, deleting, enabling or disabling more than one user at a time can be achieved programmatically by calling the User Management API.
Testing Users
It is possible to test users under your tenant. Admins can imitate users in their tenant through user management. Simply click the "Test User" link under the associated user and follow the instructions on the prompt that displays.
Testing Users
A message will prompt you to copy a link into a private or incognito browser to ensure you don't lose your current Binokula session.
Report Export Permissions
The Export feature will be activated for a customer upon request. Once activated, the customer’s Binokula Admin can enable the Export function for specific users as required. Users can then export a report by: displaying the Reports screen, for a report selecting whether to export to a PDF or PowerPoint file, then clicking ‘Export Report’.
Once ‘Export Report’ is clicked, a new tab is opened and the report is exported in the background. Once the export processing is complete, a download link is displayed and the report can be downloaded using the normal browser download function.
Report Sharing Permissions
Admins have the ability to grant users the ability to share their reports via a link. This shared link is secured and only people who have the generated link can view the report. The shared report will be have the same view as the user who shared the link. When the report sharing is disabled for a user, all existing shared links for each report will become invalid.
Managing Reports
Report Management is done through the report management link in the admin portal. This interface will allow you to:
-
Delete a Report.
- Note: If the report still exists within the Power BI Workspace the report will reappear within the next refresh.
-
Enforce/Ignore User Security Roles on the selected report
Report Reference
Ask admin to enable report reference feature. Go to https://binokula.app/Admin/Reports
Consume Report Reference:
User Groups
User Group Management is done through the user group link in the admin portal. The User Group management page allows admins to:
- Create a new User Group
- Delete a new User Group
- Edit User Group Details
- Assign existing users to the group
- Assign the User Group to one or multiple report groups User group functions
User Group Structure
Users within a User Group can be assigned to a Report Group. This function allows easier assignment and reassignment of multiple users to reports.
RLS Aliasing
Admins have the option of enabling username aliasing to their users. Users can share the same alias. By enabling RLS Aliasing the RLS then uses the users alias as the filter on the report. Your Reports filtering must be mapped to the aliasing of your choice. The RLS Aliasing and enablement can be found on the User Management page.
Editing users RLS Alias
- Navigate to the Admin page then select "User Management"
- Find the user you want to edit their alias for
- Click "Edit RLS Alias" on the users row. This will take you to the Edit Page.
- Fill in your desired alias into the form
- Click the "Save" button to save your changes
Enabling/Disabling one users RLS Alias
- Navigate to the Admin page then select "User Management"
- Find the user you want to enable/disable their alias for
- Click "Edit RLS Alias" on the users row. This will take you to the Edit Page.
- Check the checkbox to enable their alias or uncheck to disable alias
- Click the "Save" button to save your changes
Custom Emails
It is possible to customize invitation emails to your users. An example of a customized email can be found below.
- Navigate to the Admin page then select "Portal Settings".
- Click on to the "Customize Email Invite (Advanced)" link.
- Fill in the form.
- Use Binokula Logo - Include Binokula branding within your custom email.
- Header - The title of your custom email.
- Body - Your main message of the custom email.
- Enable Custom Email checkbox - Use your custom email. Default email is used if unticked.
- Click Save.
Custom email example
Custom Binokula Bar Colour
It is possible to customize the Binokula Bar Colour.
Custom Binokula Bar Colour example
Edit User Name
- Admin status and menu option only
- Integrated with existing User Name options in the User Management menu
- Process= Click 'Edit' to bring up a text update box that overwrites directly over the existing email for you to update and save.
- Provides you with a quick opportunity to update team email addresses, whilst maintaining all user group and report group settings and report access.
Portal Branding
- Admin status and menu option only
- The new Portal Branding page is included on the Administration menu
- The ability to self-manage logo updates is now included.
- The Binokula Bar colour update has been moved here from Portal Settings as this is branding related.
- Provides you with the opportunity to update branding content as you see fit.


Plugin Information |
|---|
No information for the plugin 'ibm-ucdeploy-pipeline-plugin' is available. It may have been removed from distribution. |
The IBM UCDeploy Pipeline Plugin supports the primary use of importing artifacts into IBM UrbanCode Deploy v6.1+. In addition, you can perform all of the below functionality:
- Create components
- Publish artifacts to a version
- Start component version imports
- Deploy snapshots or component versions
- Run the step multiple times within a single job
- Accomplish all of the above with pipeline script syntax
Sample Use Case
- Changes to a Git repository initiates a Jenkins job followed by a series of verification tests.
- On success, the artifacts of the Jenkins build are pushed as version to one or many components in IBM UrbanCode Deploy.
- On failure, the process may initiate our other Jenkins Publisher plugin to delete the component version.


Units for Android
Based on
GNU Units 1.88
Android port by Keith Flower
<EMAIL_ADDRESS>See the Units for Android
website
for more information.


|
Helix
|
#include <SQLWork.h>
Public Member Functions | |
| SQLWork () | |
| Any Child Vectors will be defined here. More... | |
| SQLWork (const SQLWork &c) | |
| Standard Copy Constructor. More... | |
| SQLWork & | operator= (const SQLWork &c) |
| Standard Assignment Operator. More... | |
| virtual | ~SQLWork () |
| Standard Destructor. More... | |
| SQLWork & | init () |
| Initialize this data object to have all empty or 0 values. More... | |
| SQLWork & | checkSize () |
| Call check_size() on all of our twine members. More... | |
| SQLWork (xmlNodePtr node) | |
| Construct from an XML Node. More... | |
| SQLWork & | readXmlNode (xmlNodePtr node) |
| Read an XML Node to set our contents. More... | |
| xmlNodePtr | createXmlNode (xmlNodePtr parent) const |
| Create an XML Node as a child of the given parent. More... | |
| xmlDocPtr | createXmlDoc () const |
| Create an XML Document from this data object. More... | |
Static Public Member Functions | |
| static vector< SQLWork * > * | readXmlChildren (xmlNodePtr parent) |
| Create a series of these objects by reading all children of the given parent. More... | |
| static void | createXmlChildren (xmlNodePtr parent, vector< SQLWork * > *vect) |
| Create a series of xml child nodes based on the input vector. More... | |
| static void | deleteVector (vector< SQLWork * > *vect) |
| Handle deleting a vector and its contents. More... | |
| static twine & | Name () |
| Static method to retrieve the name of this object. More... | |
| static void | unused (OdbcObj &odbc, SQLWork &obj) |
| static void | unused (OdbcObj &odbc, twine &stmt, bool useInputs, SQLWork &obj) |
| static twine | unused_prepSQL (IOConn &ioc, SQLWork &obj) |
| static twine | unused_getSQL () |
Public Attributes | |
| twine | AciInMap |
| All Data Members are public. More... | |
| twine | AciOutMap |
| twine | AciService |
| twine | BuildSql |
| twine | Code |
| twine | ConvertSql |
| twine | Description |
| twine | FileName |
| twine | HostDB |
| twine | Owner |
| twine | Pfkey |
| twine | Sql |
| twine | Type |
This is a generated data object class that is used for interfacing with a database. This class was generated based on the settings in the file: ../logic/admin/SQLWork.sql.xml
| SQLWork::SQLWork | ( | ) |
Any Child Vectors will be defined here.
Standard Constructor
| SQLWork::SQLWork | ( | const SQLWork & | c | ) |
Standard Copy Constructor.
|
virtual |
Standard Destructor.
| SQLWork::SQLWork | ( | xmlNodePtr | node | ) |
Construct from an XML Node.
| SQLWork & SQLWork::checkSize | ( | ) |
Call check_size() on all of our twine members.
|
static |
Create a series of xml child nodes based on the input vector.
| xmlDocPtr SQLWork::createXmlDoc | ( | ) | const |
Create an XML Document from this data object.
| xmlNodePtr SQLWork::createXmlNode | ( | xmlNodePtr | parent | ) | const |
Create an XML Node as a child of the given parent.
|
static |
Handle deleting a vector and its contents.
| SQLWork & SQLWork::init | ( | ) |
Initialize this data object to have all empty or 0 values.
|
static |
Static method to retrieve the name of this object.
|
static |
Create a series of these objects by reading all children of the given parent.
| SQLWork & SQLWork::readXmlNode | ( | xmlNodePtr | node | ) |
Read an XML Node to set our contents.
This is an INSERT method. It is designed to run a single insert statement and return. If something goes wrong, we will throw AnException.
Developer Comments:
This is here to allow us to define the SQLTests data object.
Sql Statement:
– Empty on purpose
This mimics the above in functionality, but allows you to pass in your own sql statement for us to execute. You can tell us whether to use or ignore the inputs as well.
|
inlinestatic |
This method returns the sql statement that is used by the above functions.
This method will do a replacement of all of the parameter markers in the sql statement with the standard parameter list that is defined. This is useful for automatically prepping a SQL statement that doesn't work with parameter markers.
| twine Helix::Logic::admin::SQLWork::AciInMap |
All Data Members are public.
| twine Helix::Logic::admin::SQLWork::AciOutMap |
| twine Helix::Logic::admin::SQLWork::AciService |
| twine Helix::Logic::admin::SQLWork::BuildSql |
| twine Helix::Logic::admin::SQLWork::Code |
| twine Helix::Logic::admin::SQLWork::ConvertSql |
| twine Helix::Logic::admin::SQLWork::Description |
| twine Helix::Logic::admin::SQLWork::FileName |
| twine Helix::Logic::admin::SQLWork::HostDB |
| twine Helix::Logic::admin::SQLWork::Owner |
| twine Helix::Logic::admin::SQLWork::Pfkey |
| twine Helix::Logic::admin::SQLWork::Sql |
| twine Helix::Logic::admin::SQLWork::Type |


---
layout: null
section-type: contact
title: Contact
---
## Contact
Ready to start your next project with us? That's great!
Give us a call or send us an email and we will get back to you as soon as possible!
You can also come visit us at our office:
Wise Robotics Sarl
Coworking UniverCité
Ch. du Closel 5
1020 Renens
079 384 38 62


Arrays are an ordered collection of objects. These objects can be numbers or strings, but the index has to be an integer. Since arrays are an ordered collection, you can reference the first index by using array[0]
, and the next index would be array[1]
. You increase the index number by 1 each time. Alternatively, you can reference the last index by either array.last
or array[-1]
, and go backwards from -1 to the first index.
Hashes on the other hand have a key=>value pair, and either of these can be a number or string. The indexing is done by the object keys.
The difference between indexing means that in arrays, you can only point to one object. Whereas with hashes, and object key can point towards several value objects. This makes using hashes more beneficial when you have a list that have similar keys. For example:
movies = Hash.new
movies = {
:Comedy => "The Other Guys, 21 Jump Street",
:Action => "The Expendables, X-Men"
}
puts movies[:Comedy]
This gives us: The Other Guys, 21 Jump Street


Getting Started: VMKit and MMTk
This page gives you the instructions on how to build VMKit with MMTk's Mark and Sweep Garbage Collector.
- Checkout and build LLVM-GCC from SVN head.
- Update PATH to include the llvm-gcc binary.
- Re-configure LLVM.
- Configure VMKit with two additional options: --with-gc=mmtk and --with-llvmgcc.
- Clean and make VMKit (do that each time you change the source code of VMKit):
- make ENABLE_OPTIMIZED=1 clean
- make ENABLE_OPTIMIZED=1
- Run VMKit with MMTk:
- Release/bin/j3 Foo


---
layout: page
title: Projects
---
Portfolio
- streamingml - Real Time Massive Predictive Analytics with Online Big Data
- P4PQ - P4 Parser Engine of the P4PQ Data Plane Architecture
- ceyloniac - OpenFlow Aware Network Processor
- NetWalk - High Performance OpenFlow Architecture for Software Defined Networking (SDN)
- netwalk-hw - Hardware Implementation for High Performance OpenFlow Architecture
- Hype - Evolutionary Computing : Evolutionary Optimizer for Dynamic Non-Convex Optimization
- MunichBFOR - Evolutionary Computing :Evolutionary Multi Niche Bacterial Foraging Algorithm for Multimodal Dynamic Optimizations and Neural Network Optimization
{% for post in site.posts %}
{% if post.projects %}
{% endif %}
{% endfor %}


(a) Compliance with this subpart is in addition to the policies and procedures for interagency acquisitions set forth in Subpart 17.5. This subpart prescribes policies and procedures specific to acquisitions of supplies and services by nondefense agencies on behalf of the Department of Defense (DoD).
(b) This subpart implements Pub. L. 110-181, section 801, as amended (10 USC 2304 Note).
As used in this subpart—
“Department of Defense (DoD) acquisition official” means—
(1) A DoD contracting officer; or
(2) Any other DoD official authorized to approve a direct acquisition or an assisted acquisition on behalf of DoD.
“Nondefense agency” means any department or agency of the Federal Government other than the Department of Defense.
“Nondefense agency that is an element of the intelligence community” means the agencies identified in 50 U.S.C. 401a(4) which include the—
(1) Office of the Director of National Intelligence;
(2) Central Intelligence Agency;
(3) Intelligence elements of the Federal Bureau of Investigation, Department of Energy, and Drug Enforcement Agency;
(4) Bureau of Intelligence and Research of the Department of State;
(5) Office of Intelligence and Analysis of the Department of the Treasury;
(6) The Office of Intelligence and Analysis of the Department of Homeland Security and the Office of Intelligence of the Coast Guard; and
(7) Such other elements of any department or agency as have been designated by the President, or designated jointly by the Director of National Intelligence and the head of the department or agency concerned, as an element of the intelligence community.
This subpart applies to all acquisitions made by nondefense agencies on behalf of DoD. It does not apply to contracts entered into by a nondefense agency that is an element of the intelligence community for the performance of a joint program conducted to meet the needs of DoD and the nondefense agency.
(a) A DoD acquisition official may request a nondefense agency to conduct an acquisition on behalf of DoD in excess of the simplified acquisition threshold only if the head of the nondefense agency conducting the acquisition on DoD's behalf has certified that the agency will comply with applicable procurement requirements for that fiscal year except when waived in accordance with paragraph (e) of this section.
(b) A nondefense agency is compliant with applicable procurement requirements if the procurement policies, procedures, and internal controls of the nondefense agency applicable to the procurement of supplies and services on behalf of DoD, and the manner in which they are administered, are adequate to ensure the compliance of the nondefense department or agency with—
(1) The Federal Acquisition Regulation and other laws and regulations that apply to procurements of supplies and services by Federal agencies; and
(2) Laws and regulations that apply to procurements of supplies and services made by DoD through other Federal agencies, including DoD financial management regulations, the Defense Federal Acquisition Regulation Supplement (DFARS), DoD class deviations, and the DFARS Procedures, Guidance, and Information (PGI). (The DFARS, DoD class deviations, and PGI are accessible at: http://www.acq.osd.mil/dpap/dars).
(c) Within 30 days of the beginning of each fiscal year, submit nondefense agency certifications of compliance to the Director, Defense Procurement and Acquisition Policy, Department of Defense, 3060 Defense Pentagon, Washington D.C. 20301-3060.
(d) The DoD acquisition official, as defined at 17.701, shall provide to the servicing nondefense agency contracting officer any DoD-unique terms, conditions, other related statutes, regulations, directives, and other applicable requirements for incorporation into the order or contract. In the event there are no DoD-unique requirements beyond the FAR, the DoD acquisition official shall so inform the servicing nondefense agency contracting officer in writing. Nondefense agency contracting officers are responsible for ensuring support provided in response to DoD’s request complies with paragraph (b) of this section.
(e) “Waiver”. The limitation in paragraph (a) of this section shall not apply to the acquisition of supplies and services on behalf of DoD by a nondefense agency during any fiscal year for which the Under Secretary of Defense for Acquisition, Technology, and Logistics has determined in writing that it is necessary in the interest of DoD to acquire supplies and services through the nondefense agency during the fiscal year. The written determination shall identify the acquisition categories to which the waiver applies.
(f) Nondefense agency certifications, waivers, and additional information are available at http://www.acq.osd.mil/dpap/cpic/cp/interagency_acquisition.html.


Match Play. Red leads 4-0 to 5 (Crawford). How should Red play 42?
pips Red=110 White=111
(CorrectAnswer= 0/0, ErrorScore= 0)
If the score was 4-1 then 22/16*would be a catastrophic error. However, at 4-0 losing a gammon is irrelevant to Red and so he should hit 22/16*.
The second-best play, and not an error, is 8/4, 6/4, which is likely to build a stronger home board more quickly than 11/5.
The second-best play, and not an error, is 8/4, 6/4, which is likely to build a stronger home board more quickly than 11/5.
1. Cubeful 2-ply 22/16* Eq.: -0.353 0.350 0.111 0.001 - 0.650 0.285 0.027 2. Cubeful 2-ply 8/4 6/4 Eq.: -0.375 (-0.023) 0.316 0.030 0.000 - 0.684 0.069 0.002 3. Cubeful 2-ply 11/5 Eq.: -0.378 (-0.026) 0.314 0.028 0.000 - 0.686 0.071 0.001 4. Cubeful 2-ply 11/9 8/4 Eq.: -0.397 (-0.044) 0.306 0.030 0.000 - 0.694 0.076 0.003 5. Cubeful 2-ply 8/4 5/3 Eq.: -0.406 (-0.053) 0.302 0.026 0.000 - 0.698 0.078 0.003


Let all text be red. Call alert when clicking any element.参考
Add a text enclosed by "div" element at the end of the component. 参考
Add a text by finding an element by an id.
Delete an element that will be found by an id.
Add a SVG
Draw a SVG with moving by async.
Add a canvas and draw a 2d graphic.
Draw a circle.
Draw many circles.
Move blocks.


--- layout: post title: Instance Methods Called on null References date: 2010-07-12 19:27:21.000000000 +02:00 categories: [] tags: - C# - call - callvirt - CLR - IL status: publish type: post published: true meta: {} author: login: admin email<EMAIL_ADDRESS>display_name: Philippe first_name: Philippe last_name: Vlérick excerpt: !ruby/object:Hpricot::Doc options: {} ---
In a previous post, I wrote how you can call Extension Methods on null references, as in fact the are static methods with one more parameter, the extended object itself.
I’m currently reading CLR via C# (which is a fascinating read), and I was surprised to learn in chapter 6 how the CIL instructions call and callvirt actually work.
What is amazing is that for methods called with the call instruction, the CLR does not check if the referenced object is null. The method call will succeed, but the this reference will be null in the instance method. Actually, in both cases, the reference to the object that the method was called on is passed as a hidden parameter to the method.
Before examining this, another interesting fact is the that the C# compiler mostly emits callvirt instructions when calling a method, which checks if the reference is null. To test the call instruction easily, we will have to disassemble, modify then reassemble the following code:
public class SomeClass { public String GetHello() { if (this == null) { return "Amazing!"; } return "Hello"; } } class Program { static void Main(string[] args) { var o = null as SomeClass; var hello = o.GetHello(); Console.WriteLine(hello); } }
Pretty dumb, right? Especially the if statement where we check if this is null. It’s seems logical to most of us that this will throw a NullReferenceException. However, this is just to get the compiler to build us code that is very close to what to achieve, so we don’t have to write IL ourselves.
After running ILDasm.exe on the assembly, this is what we have in the Main method:
.method private hidebysig static void Main(string[] args) cil managed { .entrypoint // Code size 18 (0x12) .maxstack 1 .locals init ([0] class Sandbox09.SomeClass o, [1] string hello) IL_0000: nop IL_0001: ldnull IL_0002: stloc.0 IL_0003: ldloc.0 IL_0004: callvirt instance string Sandbox09.SomeClass::GetHello() IL_0009: stloc.1 IL_000a: ldloc.1 IL_000b: call void [mscorlib]System.Console::WriteLine(string) IL_0010: nop IL_0011: ret } // end of method Program::Main
As we can see, the call to GetHello is done with the callvirt instruction. As this instruction checks if the object is null (and in this case, it is), this will fail at runtime.
Just to make sure, I used ILasm.exe to build the assembly and ran it, here is what it outputs:
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Pvle.Program.Main(String[] args)
Now, let’s try to replace the callvirt by call to see how it behaves.
IL_0004: call instance string Sandbox09.SomeClass::GetHello()
Now, run it again trough ILasm.exe once more and run it. Here’s what it outputs:
Amazing!
The actual difference between call and callvirt is that call calls the method on the compile time type of the object, so there is no need to check if the reference is null. The object will be passed as a hidden parameter to the method and will be references as this. It’s very similar to extension methods.
Callvirt, on the other hand, will resolve the method that is to be called at runtime, depending on the runtime type of the object, so the object cannot be null. The CLR enforces this check at runtime.
For value types, it’s a bit different. As they are implicitly sealed, the only methods that are virtual are the ones that are defined in System.Object. Oh wait, there is another case: if the value type is cast to an interface it implements, calls to methods on that variable will be using callvirt, as the value type will have to be boxed.
Here is some sample code that demonstrates this:
public interface ISomeInterface { String GetHelloFromInterface(); } public struct SomeClass : ISomeInterface { public String GetHello() { return "Hello"; } public override string ToString() { return "Hello"; } public String GetHelloFromInterface() { return "Hello from interface"; } } class Program { static void Main(string[] args) { var o = new SomeClass(); var hello = o.GetHello(); o.ToString(); o.GetHelloFromInterface(); ((ISomeInterface)o).GetHelloFromInterface(); o.GetHashCode(); } }
And here is the corresponding IL for the Main method:
.method private hidebysig static void Main(string[] args) cil managed { .entrypoint // Code size 66 (0x42) .maxstack 1 .locals init ([0] valuetype Pvle.SomeClass o, [1] string hello) IL_0000: nop IL_0001: ldloca.s o IL_0003: initobj Pvle.SomeClass IL_0009: ldloca.s o IL_000b: call instance string Pvle.SomeClass::GetHello() IL_0010: stloc.1 IL_0011: ldloca.s o IL_0013: constrained. Pvle.SomeClass IL_0019: callvirt instance string [mscorlib]System.Object::ToString() IL_001e: pop IL_001f: ldloca.s o IL_0021: call instance string Pvle.SomeClass::GetHelloFromInterface() IL_0026: pop IL_0027: ldloc.0 IL_0028: box Pvle.SomeClass IL_002d: callvirt instance string Pvle.ISomeInterface::GetHelloFromInterface() IL_0032: pop IL_0033: ldloca.s o IL_0035: constrained. Pvle.SomeClass IL_003b: callvirt instance int32 [mscorlib]System.Object::GetHashCode() IL_0040: pop IL_0041: ret } // end of method Program::Main
We can see that when calling the method trough the interface, the value type is boxed.
I find this very interesting in understanding how calls to methods actually work. Getting your nose in IL is always a good idea when you want to see what happening under the hood, but I have to admit that this is the first time that I modify it and reassemble it.


If you don't need or want certain features for your application, you can disable them here.
Disabling a feature only changes the display in Spinnaker - it won't delete any actual data.


{{JmxRefresher.error}}
{{settings.url}}
Expand the tree below, and select the attributes you want to plot. Then click "View Plot" above.
These have been selected for plotting


{% extends "global/Page.html" %} {% load otree %} {% block title %} Part 1 question 20 - Which side has more dots? {% endblock %} {% block content %}
Left
Right


How it all Started:
Our company was founded one rainy day in March when our CEO Pat accidentally used salmon paste in his cookie instead of chocolate chips. And the rest? History.
Locations:
We sell delicious salmon-flavored cookies all across the greater Seattle region. We currently have stores in downtown Seattle, SeaTac airport, Capitol Hill, and Alki beach!
Child Labor:
We are firm believers in a child's right to be gainfully employed. Our cookies are made with all of the love and wonder that only kids truly have, and we know that it shows in the taste. Ethical child labor is one of the core principles of our business model.
Merch Store:
Check out our merchandise! We are currently selling salmon cookie T-shirts and plushies. Keep an eye out for more to come!
Business Hours:
All stores are open from 8pm to 6am on weekdays, and 24 hours a day on weekends!


--- layout: post title: O2 look busy date: 2006-11-15 00:00:00 categories: business mobile ---
O2 look busy: "O2 has unveiled a content-sharing service called My Blue Book that enables consumers to upload text, photos and videoclips to a dedicated website to share with friends and family."
Also, SeeMeTV-style action:
"O2 has also revealed that one customer using its ‘Look at Me’ user-generated content channel has earned £525 in the last three months via the 10% commission users receive when a clip they have uploaded is downloaded by another customer. "


RA
fast_rewind
Main
settings
Settings
fast_rewind
Main
settings
Settings
menu
Recipe Name
Image Url
Ingredient List
Direction List
Add Recipe


We 3 coders, Harsh, Hrishikesh and govind created this farmer portal keeping the all important farmers in our mind This website is a try to have the provider with improved features to have his crops sold at a price that he deserves


Basic Example 3
| Media | Name | Spent | Change |
|---|---|---|---|
| 1 |
Facebook Ads |
$ 402 |
up
|
Twitter Ads1k Likes, 128 Shares |
$ 489Spent |
-9
down
|
|
Instagram Post1k Follows, 228 Likes |
$ 718Spent |
16
up
|
|
LinkedIn Post1k Follows, 228 Likes |
$ 768Spent |
27
up
|
|
Google +1k Follows, 228 Likes |
$ 1768Spent |
27
up
|


--- layout: post title: thumber a movie thumbnailer date: '2008-07-08T16:31:56+01:00' tags: [] tumblr_url: http://backlog.robbevan.com/post/41476419/thumber-a-movie-thumbnailer ---
Thumber: A Movie Thumbnailer


---
layout: post
title: Adox MCC 110 Print Sample Update
tags:
- Adox MCC 110
- Black and White
- prints
- Site News
status: publish
type: post
published: true
meta:
_edit_last: "2"
aktt_tweeted: "1"
aktt_notify_twitter: "yes"
_edit_lock: "1262808988"
tt_auto_tweet: "false"
tt_auto_tweet_text: "New blog post: [TITLE] [URL] "
dsq_thread_id: "373212976"
---
Well, I guess I am not crazy for thinking that at least a couple people would want print samples. I may still be crazy for thinking that I can do this for $8.99 and keep my sanity. We will see - the jury is still out. Just wanted to post a brief update and answer a couple of questions that people had on the print samples. So here we go.
1) I absolutely will ship internationally. So far I have had a couple of people inquire about this. For the most part I am willing to eat the cost difference to the EU for a single print. For more than one - get in touch and we can work something out.
2) I mentioned a brief write up will be included - here is what it amounts to: My shooting notes when I made the negative. My darkroom notes from when I processed the negative - times/temps/agitation/etc. My darkroom notes on how the print was made - exposure/contrast/developer/etc. I do throw in a couple of observations about the entire print/film/exposure decisions/etc. This is a very brief one pager - not a how to book.
3) Unless something changes I will probably be expanding and fine tuning this a little. I have already gotten some interesting ideas and suggestions so if you have a suggestion/request feel free to let me know via email or just comment on the site.
I was really surprised at the reasons that people might want a sample print - My intent was just to give people an up close and personal of some specific black and white papers with common film formats. Of course that is great but the reasons for some people wanting these is very diverse - specific lenses, cameras, films, developers. Etc. So far I have accommodated special requests - If I can I will.
The first products will ship this weekend - Thanks for all the encouragement and seriously let me know what other things might be of interest. If you want one of the highly NOT collectable sample prints from edition one gotta get me the order before Friday morning.
RB


---
type: algorithm_coursera
title: Social Network Connectivity Problem
category: Algorithm/Coursera
---
{{ page.date | date_to_string }}
Problem Description
-
There is a social network of n members and a log file containing m timestamps at which times pairs of members formed friendships.
-
Determine the earliest time at which all members are connected.
- Assume the log file is sorted by timestamp and that friendship is an equivalence relation.
-
Running time should be mlogn or better and use extra space proportional to n.
Personal Thoughts
-
Model n members as n nodes in the union-find problem.
-
m timestamps indicate that there are m connected links in the model. Here we assume that the log file not only contains the timestamp, but also the pair of nodes connected. The format of logs file looks like this:<PHONE_NUMBER> 101 100 (timestamp friend_A_notation friend_B_notation).
-
Then, we can use the weighted quick union as our helper class. The union method in the class takes O(log n) time and the find method also takes O(log n) time.
-
We use an array to store the n nodes and each node store the its own corresponding index. The condition for all the nodes to be connected is that there is only one node left storing its own corresponding index. Hence, we may use a counter which is initialized to the length of the array.
-
We can iterate through each line of log file and conduct find() method on each pair to see whether this pair is already connected. If true, we continue the looping, else, we conduct union() on that pair and decrement the counter we initialized previously by 1.
-
When the counter is decreased to 1 during the iteration, that particular line of input will contains the earliest timestamp when all friends are connected.


Passive Scan Rules - Alpha
The following alpha status passive scan rules are included in this add-on:
An example passive scan rule which loads data from a file
This implements an example passive scan rule that loads strings from a file that the user can edit.
For more details see: Hacking ZAP Part 3: Passive Scan Rules.
Latest code: ExampleFilePassiveScanRule.java
Base64 Disclosure
- ASP.NET ViewState Disclosure: An ASP.NET ViewState was disclosed by the application/web server
- ASP.NET ViewState Integrity: The application does not use a Message Authentication Code (MAC) to protect the integrity of the ASP.NET ViewState, which can be tampered with by a malicious client
- Base64 Disclosure: Base64 encoded data was disclosed by the application/web server
Note: At Low Threshold all occurrences within each response will be included.
Latest code: Base64Disclosure.java
Example Passive Scan Rule: Denial of Service
This implements a very simple example passive scan rule.
For more details see: Hacking ZAP Part 3: Passive Scan Rules.
Latest code: ExampleSimplePassiveScanRule.java
Fetch Metadata Request Headers Scan Rule
Fetch Metadata Request headers are HTTP request headers that provide additional information about a request's origin.
This additional information helps the server to implement resource isolation policy, allowing external sites to request only
those resources that are intended for sharing, and that are used appropriately. This approach can help mitigate common
cross-site web vulnerabilities such as CSRF, Cross-site Script Inclusion, timing attacks, and cross-origin information leaks.
The Fetch Metadata Request headers are:
- Sec-Fetch-Site
- Sec-Fetch-Mode
- Sec-Fetch-Dest
- Sec-Fetch-User
(from Fetch Metadata Headers)
Sec-Fetch-Site indicates the relationship between a request initiator's origin and the origin of requested resource.
(from Sec-Fetch-Site)
Sec-Fetch-Mode allows the server to distinguish between requests originating from a user navigating between HTML
pages and requests to load images and other resources.
(from Sec-Fetch-Mode)
Sec-Fetch-Dest indicates where and how the requested resource will be used.
(from Sec-Fetch-Dest)
Sec-Fetch-User is only sent for requests initiated by user activation.
(from Sec-Fetch-User)
Alerts generated:
- Sec-Fetch-Site Header is Missing
- Sec-Fetch-Site Header Has an Invalid Value
- Sec-Fetch-Mode Header is Missing
- Sec-Fetch-Mode Header Has an Invalid Value
- Sec-Fetch-Dest Header is Missing
- Sec-Fetch-Dest Header Has an Invalid Value
- Sec-Fetch-User Header is Missing
- Sec-Fetch-User Header Has an Invalid Value
Latest code: FetchMetadataRequestHeadersScanRule.java


Size Chart
Note: If more than one jersey required with different no.printed on each, contact Divyansh Chug


class: center, middle Elements of Data Science - F2019 # Regression and Classification 09/30/2019 --- Summary - Correlation - Simple Linear Regression - Multiple Regression - Interpreting Coefficents - Regression for Real Valued Prediction - Regression for Classification - Distance Based Models - Tree Based Models - Neural Network Models --- # Example Tips Data - Load tips dataset .smaller[ ```python tips = sns.load_dataset('tips') tips.shape ``` ``` (244, 7) ```] -- count:false .smaller[ ```python tips.head(5) ```] ![:scale 50%](images/tips_head.png) --- # Correlation - **Question:** are total_bill and tips correlated? -- count:false .smallest[ ```python sns.jointplot(x='total_bill',y='tip',data=tips); ```] .center[ ![](images/tips_totalbill_joint.png)] --- # Aside: Pearson Corr Coef. - **Question:** are total_bill and tips correlated? -- count:false - Could calculate Pearson Correlation Coefficient -- count:false - Assumes normally distributed data! (which is not true here) -- count:false ```python from scipy.stats import pearsonr r,p = pearsonr(tips.total_bill,tips.tip) print(f'r: {r:.2f}, p: {p:.2f}') ``` ``` r: 0.68, p: 0.00 ```
-- count:false .smallest[ [On the Effects of Non-Normality on the Distribution of the Sample Product-Moment Correlation Coefficient](https://www.jstor.org/stable/2346598?seq=1#page_scan_tab_contents) ] --- # Obligitory Correlation vs. Causation .center[![](images/correlation.png)] -- count:false - correlation does not mean causation! -- count:false - causal inference -- count:false - controlled experiment -- count:false - control for confounding variables --- # Spurious Correlation -- count:false - Also, look hard enough and you'll find correlation. - See [spurious correlations](https://www.tylervigen.com/spurious-correlations) for examples -- count:false ![](images/spurious_correlation.png) --- #Linear Relationship - Is there a linear relationship between total_bill and tips? -- count:false .smallest[ ```python sns.jointplot(x='total_bill',y='tip',data=tips, kind='reg'); ```] .center[ ![](images/tips_totalbill_joint_reg.png)] ] --- #Simple Linear Regression
-- count:false .center[ $\Large y_i = \beta x_i + \alpha + \varepsilon_i$ ]
-- count:false - **$y_i$** : dependent, endogenous, target, label (Ex: `tips`) -- count:false - **$x_i$** : independent, exogenous , feature, attribute (Ex: `total_bill`) -- count:false - **$\beta$** : coefficient, slope -- count:false - **$\alpha$** : bias term, intercept -- count:false - **$\varepsilon_i$** : error, hopefully small, often assumed $\mathcal{N}(0,1)$ -- count:false - Want to find values for $\beta$ and $\alpha$ that best fit the data. --- #Finding $\beta$ and $\alpha$ -- count:false - **prediction**: $\hat{y}_i = f(x_i) = \beta x_i + \alpha$ -- count:false - **error**: $error(y_i,\hat{y}_i) = y_i - \hat{y}_i$ -- count:false - **sum of squared errors**: $\sum_{i=1:n}{\left(y_i - \hat{y}_i\right)^2}$ -- count:false - **least squares**: make the sum of squared errors as small as possible -- count:false - **gradient descent**: minimize error by following the gradient wrt $\beta,\alpha$ -- count:false - can sometime be optimized in closed form -- count:false - often done iteratively --- #Aside: Gradient Descent -- count:false - Want to maximize or minimize something (Ex: squared error) -- count:false - **Gradient** : direction, vector of partial derivatives -- count:false - can get complicated, will often estimate this -- count:false - **Gradient Descent** : take steps wrt the direction of the gradient -- count:false - **maximize** : in the direction of the gradient -- count:false - **minimize** : in the opposite direction of the gradient -- count:false - **Global Maximum/Minimum** : the single best solution -- count:false - **Local Maximum/Minimum** : the best solution in the neighborhood --- #Aside: Gradient Descent .center[ ![](images/gradient_descent.png)] - Finding a global min using gradient descent .smallest[ - From Data Science From Scratch ([Chapter 8](https://ezproxy.cul.columbia.edu/login?qurl=https%3a%2f%2fsearch.ebscohost.com%2flogin.aspx%3fdirect%3dtrue%26db%3dnlebk%26AN%3d979529%26site%3dehost-live%26scope%3dsite&ebv=EK&ppid=Page-__-84))] --- # OLS in Statsmodels -- count:false - OLS : Ordinary Least Squares -- count:false .smaller[ ```python import statsmodels.api as sm X = tips['total_bill'] # independent variable X = sm.add_constant(X) # bias term y = tips['tip'] # dependent variable model_slr = sm.OLS(y,X).fit() # initialize the model and fit ```] -- count:false .smaller[ ```python model_slr.params ```] .smaller[ ``` const 0.920270 # alpha total_bill 0.105025 # beta dtype: float64 ```] -- count:false .smallest[ [ols documentation](https://www.statsmodels.org/dev/examples/notebooks/generated/ols.html) ] --- # Interpreting Coefficients .smaller[ ``` const 0.920270 # alpha total_bill 0.105025 # beta dtype: float64 ```] -- count:false .center[ tips = 0.11 * total_bill + 0.92]
-- count:false - What are tips when total_bill = 0? -- count:false - tips = .92 (tips start at about $1) -- count:false - How do changes in total_bill affect tip? -- count:false - when we increase total_bill by 1 -- count:false - tips go up 11 cents --- # Plotting the Fit ```python y_hat = model_slr.predict(np.array([[1,0],[1,50]])) ax = sns.scatterplot(tips.total_bill,tips.tip); ax.plot([0,50],y_hat); ``` .center[ ![:scale 50%](images/fit_plot.png)] --- # Evaluating Fit: Residuals -- count:false - Residuals : $y - \hat{y}$ - We we like to see normally distributed error .smallest[ ```python x_obs = np.random.rand(500) # our observed x values y_obs = 1*x_obs + 0 + np.random.normal(0,1.0,size=(500)) # observed y, with error y_hat = 1*x_obs + 0 # a very good guess resid_ = y_obs - y_hat # residuals ax = sns.scatterplot(y_hat,resid_); ax.set_xlabel('y_hat'); ax.set_ylabel('residual'); ```] .center[![](images/residplot_normal.png)] --- # Evaluating Fit: Residuals .smaller[ ```python ax = sns.scatterplot(modle_slr.predict(),model_slr.resid/np.std(model_slr.resid)) ax.set_ylabel('standardized residual'); ```] .center[![:scale 50%](images/tips_resid.png)] [Interpreting residual plots](http://docs.statwing.com/interpreting-residual-plots-to-improve-your-regression/) --- # Evaluating Fit: R-Squared - **R-Squared** or **Coefficient of Determination** : .smaller[ - **Fraction of the total variation** in the **dependent variable** captured by **the model**] -- count:false - $\bar{y} = \frac{1}{n}\sum\_{i=1}^n y\_i$ -- count:false - $SS\_{tot} = \frac{1}{n}\sum\_{i}\left(y_i - \bar{y}\right)^2$ -- count:false - $SS\_{res} = \frac{1}{n}\sum\_{i}\left(y_i - \hat{y}\_i\right)^2$ -- count:false - $R^2 = 1 - \frac{SS\_{res}}{SS_{tot}}$ -- count:false - Max: 1, all variation captured -- count:false - Min: ? -- count:false ```python model_slr.rsquared # 0.457 ``` --- # Multiple Linear Regression -- count:false - Including multiple independent variables -- count:false .center[ $y\_i = \beta\_0 + \beta\_1 x\_{i1} + \beta\_2 x\_{i2} + \ldots + \beta\_m x\_{im} + \varepsilon\_i$] Note: $\beta_0 \equiv \alpha$ -- count:false - Ex: .center[ `tips = beta_0 + beta_1 total_bill + beta_2 size` ] -- count:false .smaller[ ```python X = tips[['total_bill','size']] X = sm.add_constant(X) y = tips['tip'] model_mlr = sm.OLS(y,X).fit() ```] -- count:false - Note: 'multivarariate' usually refers to multiple *dependent* variabels --- # MLR: Interpreting Coefficients ```python model_mlr.params ``` ``` const 0.668945 total_bill 0.092713 size 0.192598 dtype: float64 ``` -- count:false - If we hold everything else constant, what effect does the variable have -- count:false - If `size` is held constant, a rise of 1 total_bill -> rise of .09 tip -- count:false - If `total_bill` is held constant, a rise of 1 size -> rise of .19 tip -- count:false - Can add interaction terms to allow both to move - Ex: total_bill * size - more complicated to interpret --- # Colinarity -- count:false - MLR assumes features are linearly independent -- count:false - Can't rewrite one column as a weighted sum of the others -- count - Ex: `entrees ordered` will likely be linearly related to `size` -- count:false - Issue: Model won't know how to estimate $\beta$ - If we add to one and subtract from the other, there will be no change -- count:false - Try to remove obvious colinearity - can use correlation and linear regression to detect -- count:false - Important to consider when constructing categorical features --- # MLR: R-Squared -- count:false - $R^2 = 1 - \frac{\frac{1}{n}\sum\_{i}\left(y\_i - \hat{y}\_i\right)^2}{\frac{1}{n}\sum\_{i}\left(y_i - \bar{y}\right)^2}$ -- count:false - an increase in the number of features will only increase $R^2$ -- count:false - Adjusted $R^2$: account for the number of features -- count:false $R\_{adj}^2 = 1 - (1-R^2)\frac{n - 1}{n-m-1}$ - $n$ is number of observations, $m$ the number of features -- count:false .smaller[ ```python model_mlr.rsquared, model_mlr.rsquared_adj ```] .smaller[ ``` 0.468, 0.463 ```] --- #Statsmodels Summary .smallest[ ```python model_mlr.summary() ```] .center.smallest[``` OLS Regression Results ============================================================================== Dep. Variable: tip R-squared: 0.468 Model: OLS Adj. R-squared: 0.463 Method: Least Squares F-statistic: 105.9 Date: Mon, 30 Sep 2019 Prob (F-statistic): 9.67e-34 Time: 11:16:52 Log-Likelihood: -347.99 No. Observations: 244 AIC: 702.0 Df Residuals: 241 BIC: 712.5 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 0.6689 0.194 3.455 0.001 0.288 1.050 total_bill 0.0927 0.009 10.172 0.000 0.075 0.111 size 0.1926 0.085 2.258 0.025 0.025 0.361 ============================================================================== Omnibus: 24.753 Durbin-Watson: 2.100 Prob(Omnibus): 0.000 Jarque-Bera (JB): 46.169 Skew: 0.545 Prob(JB): 9.43e-11 Kurtosis: 4.831 Cond. No. 67.6 ============================================================================== ```] --- # Aside: Interpretation Vs. Prediction -- count:false - Interpretation: Explain how observed features relate to observed target -- count:false - Prediction: Given new features, can we generate a prediction -- count:false - Often asked to do one or the other, be clear which is most important -- count:false - In prediction, may not worry about interpreting the model! -- count:false - There is a push to change this, increase interpretability --- class:middle # Questions re Regression? --- # Classification -- count:false - **Regression** -> predict a real value (Ex. predict tip) -- count:false - **Classification** -> predict a discrete class, category -- count:false - **Binary** classification : two categories - pos/neg, cat/dog, win/lose -- count:false - **Multiclass** classification : more than two categories - red/green/blue, flower type, integer 0-10 -- count:false - **Multilabel** classification : can assign more than one label to an instance - paper topics, entities in image --- # Tips as Classification -- count:false Instead of tip amount, let's look at high or low tips. -- count:false .smaller[ ```python def map_tips(x): return True if x > tips.tip.median() else False tips['tip_high'] = tips.tip.apply(map_tips) ```] -- count:false .center[![](images/tips_lowhigh.png)] --- # Tips as Classification .center[![](images/tips_lowhigh_slr.png)] -- count:false - want a number between 0 and 1 -- count:false - want something that looks like a threshold --- # Logistic Regression - $logistic(x) = \frac{1}{1+e^{(-x)}}$ -- count:false .smallest[ ```python def logistic(x): return 1 / (1+np.exp(-x)) x = np.linspace(-10,10,1000) plt.plot(x,logistic(x)); plt.xlabel('x');plt.ylabel('logistic(x)'); ```] .center[![](images/logistic.png)] --- # Logistic Regression with sklearn Our problem (with one feature) becomes: .center[$y_i = logistic(\beta_0 + \beta_1 x_i) + \varepsilon_i$] -- count:false ```python from sklearn.linear_model import LogisticRegression lr = LogisticRegression(fit_intercept=True) lr.fit(tips.total_bill.values.reshape(-1,1),tips.tip_high) print(f'alpha = {lr.intercept_[0]:0.2f}') print(f'beta_1 = {lr.coef_[0][0]:0.2f}') ``` ``` beta_0 = -2.96 beta_1 = 0.16 ``` --- # Interpreting Logistic Regression -- count:false - After some math .center[ $\log\left(\frac{y\_i}{1-y\_i}\right) = \beta\_0 + \beta\_1 x\_{i1}$] -- count:false - log odds ratio of p(y=1)/p(y=0) -- count:false - odds range from 0 to positive infinity -- count:false - odds(5) -> 5/1 -> 5 out of 6 times -> .83 -- count:false - odds(.2) -> 1/5 -> 1 out of 6 times -> .16 -- count:false See [here](https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logistic-regression/) for a good explanation --- # Review -- count:false - Regression -- count:false - simple linear regression -- count:false - multiple linear regression -- count:false - Classification -- count:false - logistic regression -- count:false - So far all **Linear Models** -- count:false - Next up: -- count:false - distance based -- count:false - tree based -- count:false - network based --- class:middle # Questions?


3 references to PrepareCalled
System.Management.Automation (3)
engine\remoting\fanin\WSManPluginShellSession.cs (2)
63
transportMgr.
PrepareCalled
+= this.HandlePrepareFromTransportManager;
325
transportMgr.
PrepareCalled
-= this.HandlePrepareFromTransportManager;
engine\remoting\fanin\WSManPluginTransportManager.cs (1)
262
PrepareCalled
(this, EventArgs.Empty);


Gauss's law for electrostatics (differential form) can be expressed as :
$$ \nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_{0}}$$
Where $\displaystyle \nabla $ is the divergence operator. A simple way to visualise this law is through electric field lines.
Geometrically, the divergence of a field is represented by the net number of field lines moving in or out of a volume element.
So Gauss's law states that the number of field lines moving in or out of a volume element is proportional to the charge density inside the element.
We can see this is true if electric charges act as a source or sink of field lines, as shown in the visualisation to the right.
Consider a sphere of radius $R$ and non-uniform density $\displaystyle \rho $, defined by;
$$ \rho = r^3 e^{-cos\theta}$$.
What is the Electric field of the sphere in the radial direction?
Solution:
We want $E_r$ (Electric field in radial direction) as a function of $r, \theta, and \phi$
1) Use Gauss Law in integral form;
$$\int \int E \cdot dS = \frac{1}{\epsilon_0} \int \int \int \rho dV $$
2) For the RHS use $\displaystyle dQ=\rho dV$ and hence
$$ Q= \int\rho dv = \int r^3 e^{cos\theta} dV $$
where $\displaystyle dV=r^2 sin\theta d\theta dr d\phi$ in spherical polar coordinates.
3) Compute the integral
4) We now deal with the LHS. Since we only want the E-field in the radial direction we only
need to consider the dot product of $\displaystyle E_r$ with $\displaystyle dS$. Recall from
vector calculus (insert hyperlink?) that for spherical polar co-ordinates, in the $\displaystyle
\tilda{r}$ direction, $\displaystyle dS$ is given by;
$$ dS= r^2 sin \theta d\theta d\phi \tilda{r}$$
5)Compute the integral of $\displaystyle E \cdot dS$
6) Divide by $\displaystyle 4 \pi r^2$ and in the wise words of VJT, VOILA! We obtain
$$ E=\frac{k R^6}{6 \epsilon_0 r^2} sinh(1) $$
Gauss's law for electrostatics (integral form) can be expressed as :
where $V$ is the volume enclosed by the closed surface $S$.
Geometrically, $\mathbf {E} \cdot \mathrm {d} \mathbf {S}$ represents the net flux of $\mathbf {E}$ through $\mathrm {d} \mathbf {S}$. This law relates the net flux through a closed surface to the net charge contained within.
In this visualisation, we have a 2D representation of the law.
The loop, which represents a 2D slice of a surface, is generated randomly.
The number in the loop is the scaled net flux through the loop.
In the 'manual loop' option, ...
Insert interactive part for the first visualisation here.