Whenever you've completed and customized an essential resume template, you also could choose whether you will need to beef up this to fancier version. So in the event that you become stuck composing your resume, then consider using an easy resume template to get your creative juices flowing. The fundamental template can be used to make the very simple information you need to develop a resume which is uncomplicated, yet sells your identifying value to a potential employer. A excellent quality template provides guidance about ways to write your resume objective statement.
Much like every other job, companies find employees that are trusted and dependable. Really the employers expect you to alter the layout predicated on exactly what they might need to your own job. When applying for merchandising jobs, it is crucial your resume are at least as attention-grabbing, so it stands out to potential companies. Mainly because some potential employers could possibly be resistant to starting attachments, paste your resume at the root of your own email or give an on-line connect to a resume onto your private site or LinkedIn profile.
A work application is the secret to unlocking livelihood chances. The procedure is more quite exhausting. The choosing method is currently thoroughly automatic and systemized into the point of creating job-hunting tiredness.
Beginning your restart might be challenging. That usually means you can observe how they range. Now, the tip which should be deciphered here is the way to write CV effortlessly. Specially supposing it is your highly relevant into this location where you're applying. State that you are aware we have not any open positions in the present moment, however, you would love to get contemplated for any potential openings.
In the event that you should think your professional career to get a movie, your restart could function as the preview. When you save each occupation that you want to apply for, then click on My accounts" in the very top of each page. Perhaps you're looking for a summer job or internship, even or perhaps a faculty or scholarship program takes one to add a resume. If you should be outside of job at the Bluegrass State and intend to fill out an application for unemployment benefits, you can ascertain the number of advantages you are going to get prior to filing your unemployment claim. It's not necessary to list each job you've held before, particularly supposing it's not related to the present position or sector you're focusing on. If you're looking for a physical occupation at a pristine surroundings, a project to get a warehouse worker may be fit for you.
All manuals, nonetheless they are assembled together, want to be more well-written and an easy task to scan for advice. You might desire to have a look in any way the hints, for this problem. Teacher dictionary has to be properly recognized document.
To begin the restart, arrange the advice that you need to comprise. You could also have advice about any expert memberships which you've in it. You should be certain the reader knows all of the advice offered. You are able to likewise incorporate advice about the assessments, you've emerged or about the conventions or seminars that you've attended. Remember that if you want to make certain you do not miss any important advice resume, it really is quite as important to ensure that you never set an inordinate quantity of advice as well as your own resume. It is essential to include information on the subject of the teaching certifications within an instructors resume.
To perform dataentry, it will help to have special sorts of abilities that help execute the task economically. Request a friend or relative to aid you with a mock meeting so you might apply your interview capabilities. You are able to create a resume that highlights your delicate skills and also downplays your deficiency of specialized abilities and experience. Therefore, it really is advised that you simply set your keywords even though your level of proficiency has ever already been zero. Nonetheless, my studying ability is in factn't the problem.
For the very best possiblity to acquire the kind of therapeutic massage therapist position you're looking in the sort of surroundings you'd prefer to utilize, you have to be specific regarding your livelihood objectives in your resume. Additionally describe the way that your individual and experience qualities will reap the particular needs kids that you wish to help. You don't have a whole lot of knowledge or employment background to individualize your resume, but you'll create certain your resume is just a skillful presentation of everything you've got to offer you.
Industry analysts ought to be more familiar with both. An organization analyst ought to be more updated from the newest technological innovation trends and the applications packages launched recently, as a way to have the ability of supplying a viable and advanced solution. Enterprise analyst resume sample I Prove Your Skills in the event that you may really like to make a program to your company analyst jobs, you definitely need to show you adventures from the business discipline. Therefore arriving full circle, acquiring the name Company Analyst doesn't signify you're a Business Analyst. Tech savvyThe stock analyst needs to comprehend that the technical processes they're supplying for to be able to appraise the need and amounts, so as to track down relevant replacements for high priced stuff with out damaging grade.
Based on the states of the arrangement, a Facility supervisor can give a vast variety of companies. If an advertisement manager is organizing an advertising budget, he or she's going to need accurate data to allocate funds in the proper areas. During purchaser segmentation, in case the promotion manager does not have the ideal info, he or she is perhaps not going to be able to center on the target marketplace. Being aware of exactly what experts and hiring professionals do together with your resume at each step along the application will make it possible for you to establish expectations regarding if and when you are going to be supplied a response.
You are the only individual who's liable for landing do the job. You happen to be on your final job a exact long minute. In the event that you want the brand new work, you are definitely going for at earn a superb belief. Additionally, it is sensible to temporarily clarify the true project that you have done earlier from the specific article. Even if you succeeded in choosing the work, you should keep your resume present. In the event you wish to hear more about how I are going to find a way to assist you acquire your dream occupation or at case you would got a response from the restart.
As it has to perform boosting your resume, not all tasks are created the same. From the current economic climate people usually apply for tasks way under their usual pay-scale. Even in the event that you believe that the complete project provides seem like a few details could change. One of their absolute most high-value analyst projects is in operations or company alternatives.
Even in the event you believe you do not possess adequate skills or experience, you ought maybe not lie in your job application. Together the specific lines as grammar, there are in reality a great deal of chances to exude assurance within your resume. You may possibly secure the opportunity to benefit your dream enterprise or a dream job.
When you're hiring a consultancy business for the company wisdom duties, you need to continue to keep a couple essential aspects at heart. Additionally, it also it's well worth it to learn the organization's competitive landscape, she explained. Be aware by what's going on at the business. The company will even find much greater ways to engage with clients and boost their own performance. The worldwide commerce industry has a variety of networks for example partnerships and alliances. This means that you are in the marketplace to get 25 or so verbs. In the event you've been in the work marketplace for awhile and also have functioned to get a substantial number of employers, pay attention to some livelihood milestones in the past ten decades or so.
Actually in case you believe all the information concerning you and your knowledge are essential, attempt to fit everything on a couple pages. Create sections regarding every one of these information which you want to present. Thus far, the info in the path I've obtained generally seems to be quite sequential, thus rendering it a ton better to trace along.
Picking work candidate desires a wide selection of bits of advice, including the candidate's title and CV, and also details of this labour . You are also considered like a solid candidate for the business analyst job position if you have the additional complementary skills required to work in a small business setting. The NLP technique can definitely locate the far better candidates to get a work application without a individual biases.
Your resume may be about you but additionally, it is very much about the recruiter. Besides that, the recruiter will like to be more sure he will put you at the front of the consumer and look optimistic, professional. For this reason, you ought to establish the interviewer you always focus in your abilities. The recruiter must detect probably the most indispensable details on you directly away. Recruiters advise job-seekers that answering the telephone is the most suitable choice, and you ought to produce every effort to accomplish that. A recruiter by the substantial international corporation will revolve round unique talents and encounter compared to sole working in an compact office.
Study what other writers have had to state about each website. International writers seem to receive a lousy dosage in regards to online freelance composing. The bulk of the moment, manufacturers and designers are enthusiastic of the things they might love to see in a model. It will be potential that you bring in an mode in scratch or you might duplicate it from a present article. Besides listing basic instructional achievements, like the degrees you maintain, a thorough restart could have many different different components of information that reveal how well-rounded you are.
Educating a course even though will give you future credibility and some thing further to grow your own resume. Only honest assurance can be obtained. Each time an audit is conducted, then it needs to be performed in accord using ISAs or federal auditing requirements, and if it is a statutory audit, then it cannot be restricted in any fashion. Profession Planning is just a significant portion of college and several college students have comparable questions regarding their future. A thorough restart should incorporate all of your professional-level work encounter. ResumeMaker's detail by detail guide will assist you to develop a professional resume that showcases your identifying experience also.
Luckily, there are tons of sites out there which choose english-speaking authors from all around the world. Main source for lots of armed forces resume packages. In the event you want the picture on our site, please don't be afraid to visit again and get inspiration out of all of the houses in the image of our internet image. Format was provided. Ideal cv arrangement is required. All you want to do is simply edit the record to add your very own personal specifics. It's mandatory that you customize the restart along with resume cover letter based upon the needs you have.
Nowadays you've obtained to promote your book bar. Based in your market, you may have the ability to track down a publication club by way of an organization or association you are already a component of. In addition you need to find out whether you wish to become specific regarding the form of all men and women who you will welcome from the center. It's possible for you to search for a book club that has already started, or you are able to commence your own personal. It's not an absolute best manner of selecting director. Operation administrators are responsible for the everyday operations of a business. Therefore the recommendation to start as a Freight Broker Agent is legal from which you are able to pay attention to a single piece of the business enterprise which is thought to function as absolutely the absolute most essential region of the organization, relationship building.
For the motivation letter to be profitable, it should address particular critical issues and should be at the most proper format. Clearly Establishing Your Purpose With your readeras attention currently inplace, you should be positive that you additionally directly manage the prompt or question to that you've been asked to respond. Feel free to be more creative, but remember to specifically take care of the question you have been asked!
Quite a few pupils who wish to persuade. Please consult with your academic adviser when selecting a summer internship to become sure that the internship will compliment your instruction by providing pertinent experience. Degree and you will even known as a stepping rock. An even of imprecision is inevitable as a consequence of underlying doubts and usage of judgment.
The job is a responsible person. Boost your own chances of getting hired 2x as quick with Resume-Now. Reading can be more energetic and exciting in case you might have the occasion to divide the reading experience with different folks. On the job training is the best approach to obtain the acceptable expertise to establish in the event that you really have what it requires for a Freight Broker. By time to time, you might not actually have the critical work experiences that are applicable to the occupation that you're looking for. You have to equip your self with knowledge about the company, the companies you want to do the job to get and also understand what they truly are hunting for.
Every man possess a distinctive beauty inside. The target of the will be to apply only the perfect level of pressure from the macula, and it can be located in the rear of a person's attention. A religious organization like a church or temple regularly may hook you up using bookclubs. Major corporations are recognizing the ability of websites such as Facebook to accomplish enormous quantities of individuals. Arrived to presence from the calendar year 1989, the surrey garage door corporation is still a neighborhood family corporation and have been assembled in the present area from your past 12 decades. Through this informative article you are going to learn precisely what the medication organizations are looking for in a pharmaceutical product sales candidate. The pharmaceutical earnings industry supplies a high wages possibility, higher growth opportunities, and superior benefits and advantages.


SO LOOK NO MORE, WE ARE ARE HERE TO HELP YOU PRESERVE AND IMPROVE YOUR SMILE!!!
Good Services! Everyone was beyond amazing. They were incredibly accommodating and fast.
Always Smiling! Omg everyone in this office is always Smiling, I really love the way they treat patients, I never will find another dentist office like this one keep the good work.
Son los mejores en su trabajo, los recomiendo, te hacen sentir en familia y todos sus trabajadores son los #1.
Professional and friendly Very friendly staff, helpful and knowledgeable. I`m needing a lot of dental work done and they gave me great service without any judgment which I appreciated, this is hard enough to go through without thinking your being judged. I got a good treatment plan and a copy to review and keep track of at home so we`re in the way to a healthier smile! Dr and staff are very understanding and considérate of my TMJ also. Thank you!
Always Smiling! Omg everyone in this office is always smiling, I really love the way they treat patients, I never will find another dentist office like this one keeps the good work.
I went in yesterday as an emergency walk-in. With no appointment or insurance, they went above and beyond to help me get treated and take care of my issues. The dentist and office staff was outstanding, compassionate, and very caring. I was so impressed by the service that I highly recommend this dentist. Thank you OBT Dental, you guys are the best!!!
Excellent service and human quality!!! I came with severe pain; all the staff was friendly and nice with me. DR Olmos evaluate me and explained to me that my wisdom tooth was causing problems. My wisdom tooth extraction was a success not hurt me at all. DR Olmos and the girl who atended me I think her name was Daisy, they were very considerate and kind to me. Thanks. Hallmark Dental are the best!!!!
Thank you so much Dr. Olmos and staff! You guys are truly amazing! If anyone needs a dentist I highly recommend you go to Hallmark Dental!


Highland Print Studio schedule additional classes for groups on top of our already busy programme. We have had many private groups from all over seas coming to learn a technique at the studio.
If you have a minimum of 6 participants, the Studio can arrange a class in a technique of your choice at a time to suit, please get in touch with us for more details.


SENECA ONE, LLC vs. PAUL GEULAKOS & another.
Hampden. June 3, 2015. – October 1, 2015.
Present: Meade, Hanlon, & Blake, JJ.
Lottery. State Lottery Commission. Commonwealth, Trustee process. Practice, Civil, Trustee process. Governmental Immunity. Immunity from suit. Assignment.
Civil action commenced in the Superior Court Department on September 27, 2013.
A motion for approval of trustee process attachment was heard by Edward J. McDonough, Jr., J., and a motion for reconsideration was considered by him.
Andrew Martin Batchelor, Assistant Attorney General, for State Lottery Commission.
David A. Lavenburg for the plaintiff.
HANLON, J. The State Lottery Commission (commission) appeals from an order approving an attachment by trustee process of lottery prize proceeds due Paul Geulakos. The commission argues that an action such as this is barred by G. L. c. 10, § 28(4), which prohibits the assignment of lottery prizes, except under certain very limited circumstances and, also, that the doctrine of sovereign immunity bars trustee process against the Commonwealth. The commission asks that we reverse the order. The plaintiff, Seneca One, LLC (Seneca), responds that this action is permitted under G. L. c. 10, § 28(2), which Seneca maintains effectively waives sovereign immunity in a case such as this. We disagree, and reverse the order.
Background. Seneca is a limited liability company organized in Maryland and registered with the commission to transact business in Massachusetts. It "is engaged in, among other things, the business of purchasing assignments of lottery prize payments in exchange for a discounted lump-sum payment." On April 1, 2009, Geulakos won a $ 1 million lottery prize, payable in twenty $ 50,000 annual installments. In August, 2011, he executed a demand promissory note to Seneca in the principal amount of $ 40,000 (note), as part of a "Lottery Prize Assignment Agreement" (agreement) between Seneca and Geulakos, ostensibly pursuant to G. L. c. 10, § 28(4). Under the terms of the agreement, Seneca would pay Geulakos a lump sum of $ 154,722.81 in exchange for the assignment of ten lottery payments, each in the amount of $ 20,202.21, and seven lottery payments in the amount of $ 50,000 each over a period of years, beginning in 2012 and ending in 2028, when the prize money ran out.
In January, 2012, Seneca filed a "Petition for Court Order Approving Voluntary Assignment of Lottery Prize Payments" in Superior Court in Norfolk County seeking approval of that assignment as required by the statute. The petition did not reveal that Seneca already had advanced Geulakos $ 40,000 under the note. In May, 2012, the petition was dismissed by stipulation of the parties, with prejudice and without an order approving the assignment. Seneca then filed a separate action in October, 2012, in Superior Court in Middlesex County, seeking to enforce the note. In July, 2013, in the Middlesex County case, Seneca obtained summary judgment against Geulakos for approximately $ 49,000 (including costs and attorney's fees).
In September, 2013, Seneca filed this action against Geulakos and the commission in Superior Court in Hampden County. The complaint referenced the judgment obtained in Superior Court in Middlesex County, but, in its request for relief, sought a new judgment against Geulakos for $ 49,132, and an order of trustee process against the commission. Seneca served the commission with a trustee summons seeking to attach the annual payments due Geulakos until the debt (including interest and costs) was satisfied. The commission filed an opposition to the motion for approval of the trustee process attachment claiming, inter alia, sovereign immunity. By a decision dated December 24, 2013, after a hearing, the judge allowed Seneca's motion for an order of attachment by trustee process against the commission. The commission timely appealed. The commission's motion for reconsideration was denied, and the commission again filed a timely notice of appeal.
Discussion. "The right of any person to a [lottery] prize drawn is not assignable except under . . . limited circumstances." G. L. c. 10, § 28, as amended through St. 2004, c. 149, § 23. Section 28(4) describes the circumstances under which "[p]ayment of any prize drawn may be made to a person under a voluntary assignment of the right to receive future prize payments." A significant number of conditions are specified, and the judge "may issue an order approving a voluntary assignment and directing the commission to make prize payments in whole or in part to the designated assignee, if the court finds that all of [those] conditions have been met" (emphasis supplied). Ibid. This subsection serves to safeguard the rights of the lottery winner and to assure, as far as possible, that no unfair advantage is taken by predatory lenders or others.
The parties agree that Seneca failed to secure a valid assignment under G. L. c. 10, § 28(4), because the proposed assignment was never approved by the court. However, G. L. c. 10, § 28(2), provides that "[p]ayment of any prize drawn may be made to any person under an appropriate judicial order." It was under this provision that the motion judge issued the order for trustee process in this case, adopting Seneca's reasoning that Seneca was not seeking to enforce an assignment, but rather to collect on a judgment in connection with an underlying $ 40,000 debt arising out of an unpaid promissory note.
It has long been the rule that trustee process actions against the Commonwealth are barred by sovereign immunity. See William J. McCarthy Co. v. Rendle, 222 Mass. 405, 406 (1916); MacQuarrie v. Balch, 362 Mass. 151, 152 (1972); Massachusetts Elec. Co. v. Athol One, Inc., 391 Mass. 685, 688 (1984). See also Randall v. Haddad, 468 Mass. 347, 354 (2014) ("The general rule of sovereign immunity provides that '[t]he Commonwealth "cannot be impleaded into its own courts except with its consent, and, when that consent is granted, it can be impleaded only in the manner and to the extent expressed . . . [by] statute."' Woodbridge v. Worcester State Hosp., 384 Mass. 38, 42 , quoting Broadhurst v. Director of the Div. of Employment Sec., 373 Mass. 720, 722 . With respect to the remedy of trustee process, . . . [the] court has held that 'the Commonwealth cannot be summoned as a trustee under trustee process without statutory authorization and, therefore, there can be no attachment by trustee process' absent such an authorization. MacQuarrie v. Balch, [supra]"). Nothing in either G. L. c. 10, § 28, or G. L. c. 246 (governing trustee process), explicitly states that the Commonwealth has waived its immunity as to trustee process actions. See Midland States Life Ins. Co. v. Cardillo, 59 Mass. App. Ct. 531, 536 (2003) (Midland) (rules of construction for statutory waivers of sovereign immunity are "stringent").
Seneca argues that this case is distinguishable from both Singer Friedlander, supra, and Midland, supra, because Seneca is not seeking to enforce the never-approved assignment, but rather simply to collect on an unpaid debt incurred when it provided Geulakos with a cash advance. We are not persuaded. In fact, this debt arose specifically out of an attempted assignment of a lottery prize and for that reason cannot reasonably be described as "independent from § 28." Moreover, even were this a simple debt collection action, nothing in § 28 necessarily implies that the commission waived its immunity to trustee process actions.
We also have in mind the commission's argument that subjecting it to trustee process actions by creditors of prize recipients puts an undue burden on the commission's and Commonwealth's resources, the type of harm that sovereign immunity is designed to forestall. See New Hampshire Guar. Assn. v. Markem Corp., 424 Mass. 344, 351 (1997) (purpose of sovereign immunity is not only to protect public treasury from money judgments, but also to protect "public administration from interference by the courts at the behest of litigants"). See also Herzig v. Horrigan, 34 Conn. App. 816, 821 (1994) (commenting on potential burden on State posed by numerous lottery winners who were or become judgment debtors).
In this case, on the other hand, there are no such compelling facts. Indeed, the public policy considerations argue for the opposite result. Specifically, this action in fact arose from an attempt at an assignment of approximately $ 550,000 in lottery payments in return for a lump sum advance of $ 154,722.81 (and perhaps also the undisclosed $ 40,000 advance). Seneca's tactics essentially constitute an "end run" around the required process by first failing to disclose the $ 40,000 advance in the ultimately-abandoned Norfolk County action pursuant to G. L. c. 10, § 28, and dismissed in May, 2012, and then seeking to attach the lottery payouts by forcing the commission to make payments directly to it in what it now describes as an unrelated action. If permitted, this would vitiate the careful protections drafted by the legislature to protect lottery winners from predatory practices.
At least in the circumstances of this case, we are satisfied that the trustee process attachment issued by the judge was not an "appropriate judicial order," and must be reversed.
 "Payment of any prize drawn may be made to a person under a voluntary assignment of the right to receive future prize payments, in whole or in part, if the assignment is made to a person or entity named as the assignee in an appropriate judicial order of a court of competent jurisdiction, which shall be the superior court sitting within and for the county in which the commission is situated or in which the assignor resides. Under this paragraph, a court may issue an order approving a voluntary assignment and directing the commission to make prize payments in whole or in part to the designated assignee, if the court finds that all of the following conditions have been met . . ." (emphasis supplied). G. L. c. 10, § 28(4), as amended through St. 2004, c. 149, § 23. Specifically, the judge must find, inter alia, that the assignor "(i) is of sound mind and not acting under duress, (ii) has been advised . . . by his independent legal counsel and independent certified financial planner . . . [and] 'independent' shall mean unrelated to, unassociated with, and not compensated by the assignee or the assignee's affiliates; (iii) irrevocably agrees that he is subject to state income tax with respect to a gain or income which the assignor will recognize . . . ; and (iv) understands and agrees that with regard to the assigned payments, the commonwealth, the commission, and the director shall have no further liability or responsibility to make said payments to the assignor." G. L. c. 10, § 28(4)(B). Subsection (4)(B)(v) also requires "the personal appearance and in-court affirmation of the assignor" "absent a showing of special circumstances or hardship." Other provisions establish requirements for registering a business seeking approval for the assignment, as well as for the payment of delinquent child support and taxes on the prize money. See G. L. c. 10, § 28.
 In a previous Norfolk County action, Seneca had obtained an order in April, 2010, assigning twelve of Geulakos's lottery prize payments, each in the amount of approximately $ 30,000. Seneca than filed a subsequent Norfolk County action in November, 2010, seeking another order of assignment. However, shortly after that order was issued, it was vacated with prejudice. Neither of these actions is part of the instant appeal.
 It is not clear as to when Geulakos would have to reimburse the money advanced. Nothing in the case before us ultimately turns on that question.
 In December, 2013, Seneca secured an execution on the judgment against Geulakos for approximately $ 56,000.
 Section 28 was rewritten by the Legislature in 2004 to permit assignments of future lottery payments, subject to court review and approval. See St. 2004, c. 149, § 23. Prior to that amendment, such assignments were illegal in Massachusetts. See Singer Friedlander Corp. v. State Lottery Commn., 423 Mass. 562, 565-567 (1996).


text:
from multiprocessing import Process, Queue
from urllib.parse import urlparse
import requests, sys
import pandas as pd
import sqlalchemy as s
from sqlalchemy.ext.automap import automap_base
from sqlalchemy import MetaData, and_
import statistics, logging, os, json, time
import numpy as np
import scipy.stats
import datetime
from sklearn.ensemble import IsolationForest
from workers.worker_base import Worker
import warnings
warnings.filterwarnings('ignore')

class InsightWorker(Worker):
    """ Worker that detects anomalies on a select few of our metrics
    task: most recent task the broker added to the worker's queue
    child: current process of the queue being ran
    queue: queue of tasks to be fulfilled
    config: holds info like api keys, descriptions, and database connection strings
    """
    def __init__(self, config={}):

        worker_type = "insight_worker"

        given = [['git_url']]
        models = ['insights']

        data_tables = ['chaoss_metric_status', 'repo_insights', 'repo_insights_records']
        operations_tables = ['worker_history', 'worker_job']

        # Run the general worker initialization
        super().__init__(worker_type, config, given, models, data_tables, operations_tables)

        self.config.update({
            'api_host': self.augur_config.get_value('Server', 'host'),
            'api_port': self.augur_config.get_value('Server', 'port')
        })

        # These 3 are included in every tuple the worker inserts (data collection info)
        self.tool_source = 'Insight Worker'
        self.tool_version = '1.0.0'
        self.data_source = 'Augur API'

        self.refresh = True
        self.send_insights = True
        self.anomaly_days = self.config['anomaly_days']
        self.training_days = self.config['training_days']
        self.contamination = self.config['contamination']
        self.confidence = self.config['confidence_interval'] / 100
        self.metrics = self.config['metrics']

    def insights_model(self, entry_info, repo_id):

        logging.info("Discovering insights for task with entry info: {}\n".format(entry_info))

        """ Collect data """
        base_url = 'http://{}:{}/api/unstable/repo-groups/9999/repos/{}/'.format(
            self.config['api_host'], self.config['api_port'], repo_id)

        # Dataframe to hold all endpoint results
        # Subtract configurable amount of time
        begin_date = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) - datetime.timedelta(days=self.training_days)
        index = pd.date_range(begin_date, periods=self.training_days, freq='D')
        df = pd.DataFrame(index=index)

        # Hit and discover insights for every endpoint we care about
        for endpoint, field in self.metrics.items():
            # Hit endpoint
            url = base_url + endpoint
            logging.info("Hitting endpoint: " + url + "\n")
            try:
                data = requests.get(url=url).json()
            except:
                data = json.loads(json.dumps(requests.get(url=url).text))

            if len(data) == 0:
                logging.info("Endpoint with url: {} returned an empty response. Moving on to next endpoint.\n".format(url))
                continue

            if 'date' not in data[0]:
                logging.info("Endpoint {} is not a timeseries, moving to next endpoint.\n".format(endpoint))
                continue

            metric_df = pd.DataFrame.from_records(data)
            metric_df.index = pd.to_datetime(metric_df['date'], utc=True).dt.date
            df = df.join(metric_df[field]).fillna(0)
            df.rename(columns={field: "{} - {}".format(endpoint, field)}, inplace=True)

        """ End collect endpoint data """

        # If none of the endpoints returned data
        if df.size == 0:
            logging.info("None of the provided endpoints provided data for this repository. Anomaly detection is 'done'.\n")
            self.register_task_completion(entry_info, repo_id, "insights")
            return

        """ Deletion of old insights """

        # Delete previous insights not in the anomaly_days param
        min_date = datetime.datetime.now() - datetime.timedelta(days=self.anomaly_days)
        logging.info("MIN DATE: {}\n".format(min_date))
        logging.info("Deleting out of date records ...\n")
        delete_record_SQL = s.sql.text("""
            DELETE
                FROM
                    repo_insights_records
                WHERE
                    repo_id = :repo_id
                    AND ri_date < :min_date
        """)
        result = self.db.execute(delete_record_SQL, repo_id=repo_id, min_date=min_date)

        logging.info("Deleting out of date data points ...\n")
        delete_points_SQL = s.sql.text("""
            DELETE
                FROM
                    repo_insights
                USING (
                    SELECT ri_metric, ri_field
                    FROM (
                        SELECT *
                        FROM repo_insights
                        WHERE ri_fresh = TRUE
                        AND repo_id = :repo_id
                        AND ri_date < :min_date
                    ) old_insights
                ) to_delete
                WHERE repo_insights.ri_metric = to_delete.ri_metric
                AND repo_insights.ri_field = to_delete.ri_field
        """)
        result = self.db.execute(delete_points_SQL, repo_id=repo_id, min_date=min_date)

        # get table values to check for dupes later on
        insight_table_values = self.get_table_values(['*'], ['repo_insights_records'], where_clause="WHERE repo_id = {}".format(repo_id))

        to_model_columns = df.columns[0:len(self.metrics)+1]

        model = IsolationForest(n_estimators=100, max_samples='auto', contamination=float(self.contamination), \
                        max_features=1.0, bootstrap=False, n_jobs=-1, random_state=32, verbose=0)
        model.fit(df[to_model_columns])

        def classify_anomalies(df,metric):
            df = df.sort_values(by='date_col', ascending=False)

            # Shift metric values by one date to find the percentage chage between current and previous data point
            df['shift'] = df[metric].shift(-1)
            df['percentage_change'] = ((df[metric] - df['shift']) / df[metric]) * 100

            # Categorise anomalies as 0 - no anomaly, 1 - low anomaly , 2 - high anomaly
            df['anomaly_class'].loc[df['anomaly_class'] == 1] = 0
            df['anomaly_class'].loc[(df['anomaly_class'] == -1) & (df[metric] != 0) & (df[metric] != 1)] = 2
            max_anomaly_score = df['score'].loc[df['anomaly_class'] == 2].max()
            medium_percentile = df['score'].quantile(0.24)
            df['anomaly_class'].loc[(df['score'] > max_anomaly_score) & (df['score'] <= medium_percentile)] = 1
            return df

        for i, metric in enumerate(to_model_columns):

            # Fit the model to the data returned from the endpoints
            model.fit(df.iloc[:,i:i+1])
            pred = model.predict(df.iloc[:,i:i+1])

            # Create df and adopt previous index from when we called the endpoints
            anomaly_df = pd.DataFrame()
            anomaly_df['date_col'] = df.index
            anomaly_df.index = df.index

            # Find decision function to find the score and classify anomalies
            anomaly_df['score'] = model.decision_function(df.iloc[:,i:i+1])
            anomaly_df[metric] = df.iloc[:,i:i+1]
            anomaly_df['anomaly_class'] = pred

            # Get the indexes of outliers in order to compare the metrics with use case anomalies if required
            outliers = anomaly_df.loc[anomaly_df['anomaly_class'] == -1]
            outlier_index = list(outliers.index)
            anomaly_df = classify_anomalies(anomaly_df,metric)

            # Filter the anomaly_df by days we want to detect anomalies
            begin_detection_date = datetime.datetime.now() - datetime.timedelta(days=self.anomaly_days)
            detection_tuples = anomaly_df.index > begin_detection_date
            anomaly_df = anomaly_df.loc[detection_tuples]

            # Make a copy of the df for logging of individual tuples in the repo_insights table
            anomaly_df_copy = anomaly_df.copy()

            # Calculate mean
            mean = anomaly_df[metric].mean()

            # Make columns numeric for argmax to function properly
            for col in anomaly_df.columns:
                anomaly_df[col] = pd.to_numeric(anomaly_df[col])

            # Split into endpoint and field name
            split = metric.split(" - ")

            most_recent_anomaly_date = None
            most_recent_anomaly = None

            insight_count = 0

            while True:

                if anomaly_df.loc[anomaly_df['anomaly_class'] == 2].empty:
                    logging.info("No more anomalies to be found for metric: {}\n".format(metric))
                    break

                next_recent_anomaly_date = anomaly_df.loc[anomaly_df['anomaly_class'] == 2]['anomaly_class'].idxmax()
                logging.info("Next most recent date: \n{}\n".format(next_recent_anomaly_date))
                next_recent_anomaly = anomaly_df.loc[anomaly_df.index == next_recent_anomaly_date]
                logging.info("Next most recent anomaly: \n{}\n{}\n".format(next_recent_anomaly.columns.values,
                    next_recent_anomaly.values))

                if insight_count == 0:
                    most_recent_anomaly_date = next_recent_anomaly_date
                    most_recent_anomaly = next_recent_anomaly

                # Format numpy 64 date into timestamp
                date64 = next_recent_anomaly.index.values[0]
                ts = (date64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
                ts = datetime.datetime.utcfromtimestamp(ts)

                insight_exists = ((insight_table_values['ri_date'] == ts) & \
                    (insight_table_values['ri_metric'] == split[0]) & (insight_table_values['ri_field'] == split[1])).any()

                if not insight_exists:

                    # Insert record in records table and send record to slack bot
                    record = {
                        'repo_id': repo_id,
                        'ri_metric': split[0],
                        'ri_field': split[1],
                        'ri_value': next_recent_anomaly.iloc[0][metric],
                        'ri_date': ts,
                        'ri_score': next_recent_anomaly.iloc[0]['score'],
                        'ri_detection_method': 'Isolation Forest',
                        "tool_source": self.tool_source,
                        "tool_version": self.tool_version,
                        "data_source": self.data_source
                    }
                    result = self.db.execute(self.repo_insights_records_table.insert().values(record))
                    logging.info("Primary key inserted into the repo_insights_records table: {}\n".format(
                        result.inserted_primary_key))
                    self.results_counter += 1

                    # Send insight to Jonah for slack bot
                    self.send_insight(record, abs(next_recent_anomaly.iloc[0][metric] - mean))

                    insight_count += 1
                else:
                    logging.info("Duplicate insight found, skipping insertion. "
                        "Continuing iteration of anomalies...\n")

                anomaly_df = anomaly_df[anomaly_df.index < next_recent_anomaly_date]

            # If no insights for this metric were found, then move onto next metric
            # (since there is no need to insert the endpoint results below)
            if insight_count == 0:
                continue

            # Begin inserting to table to build frontend charts
            for tuple in anomaly_df_copy.itertuples():
                try:
                    # Format numpy 64 date into timestamp
                    date64 = tuple.Index
                    ts = (date64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
                    ts = datetime.datetime.utcfromtimestamp(ts)

                    data_point = {
                        'repo_id': repo_id,
                        'ri_metric': split[0],
                        'ri_field': split[1],
                        'ri_value': tuple._3,
                        'ri_date': ts,
                        'ri_fresh': 0 if date64 < most_recent_anomaly_date else 1,
                        'ri_score': most_recent_anomaly.iloc[0]['score'],
                        'ri_detection_method': 'Isolation Forest',
                        "tool_source": self.tool_source,
                        "tool_version": self.tool_version,
                        "data_source": self.data_source
                    }
                    result = self.db.execute(self.repo_insights_table.insert().values(data_point))
                    logging.info("Primary key inserted into the repo_insights table: {}\n".format(
                        result.inserted_primary_key))

                    logging.info("Inserted data point for metric: {}, date: {}, value: {}\n".format(metric, ts, tuple._3))
                except Exception as e:
                    logging.info("error occurred while storing datapoint: {}\n".format(repr(e)))
                    break

        self.register_task_completion(entry_info, repo_id, "insights")

    def confidence_interval_insights(self, entry_info):
        """ Anomaly detection method based on confidence intervals
        """

        # Update table of endpoints before we query them all
        logging.info("Discovering insights for task with entry info: {}".format(entry_info))

        # Set the endpoints we want to discover insights for
        endpoints = [{'cm_info': "issues-new"}, {'cm_info': "code-changes"}, {'cm_info': "code-changes-lines"},
            {'cm_info': 'reviews'}]

        """"""

        """ For when we want all endpoints """

        # """ Query all endpoints """
        # endpointSQL = s.sql.text("""
        #     SELECT * FROM chaoss_metric_status WHERE cm_source = 'augur_db'
        #     """)
        # for endpoint in pd.read_sql(endpointSQL, self.db, params={}).to_records():
        #     endpoints.append(endpoint)

        """"""

        # If we are discovering insights for a group vs repo, the base url will change
        if 'repo_group_id' in entry_info and 'repo_id' not in entry_info:
            base_url = 'http://{}:{}/api/unstable/repo-groups/{}/'.format(
                self.config['api_host'],self.config['api_port'], entry_info['repo_group_id'])
        else:
            base_url = 'http://{}:{}/api/unstable/repo-groups/9999/repos/{}/'.format(
                self.config['api_host'],self.config['api_port'], repo_id)

        # Hit and discover insights for every endpoint we care about
        for endpoint in endpoints:

            # Hit endpoint
            url = base_url + endpoint['cm_info']
            logging.info("Hitting endpoint: " + url + "\n")
            r = requests.get(url=url)
            data = r.json()

            def is_unique_key(key):
                """ Helper method used to find which keys we want to analyze in each data point """
                return 'date' not in key and key != 'repo_group_id' and key != 'repo_id' and (
                    key != 'repo_name') and key != 'rg_name'

            # Filter out keys that we do not want to analyze (e.g. repo_id)
            raw_values = {}
            unique_keys = None
            if len(data) > 0:
                try:
                    unique_keys = list(filter(is_unique_key, data[0].keys()))
                except Exception as e:
                    logging.info("Length bigger than 0 but cannot get 0th element? : {}, {}".format(data, e))
            else:
                logging.info("Endpoint with url: {} returned an empty response. Moving on to next endpoint.\n".format(url))
                continue

            # num issues, issue comments, num commits, num pr, comments pr
            logging.info("Found the following unique keys for this endpoint: {}".format(unique_keys))
            date_filtered_data = []
            i = 0
            not_timeseries = False
            begin_date = datetime.datetime.now()

            # Subtract configurable amount of time
            begin_date = begin_date - datetime.timedelta(days=self.training_days)
            begin_date = begin_date.strftime('%Y-%m-%d')
            for dict in data:
                try:
                    if dict['date'] > begin_date:
                        date_filtered_data = data[i:]
                        logging.info("data {} days ago date found: {}, {}".format(self.training_days, dict['date'], begin_date))
                        break
                except:
                    logging.info("Endpoint {} is not a timeseries, moving to next".format(endpoint))
                    not_timeseries = True
                    break
                i += 1
            if not_timeseries:
                continue

            date_found_index = None
            date_found = False
            x = 0

            begin_date = datetime.datetime.now() - datetime.timedelta(days=self.anomaly_days)
            for dict in date_filtered_data:
                dict_date = datetime.datetime.strptime(dict['date'], '%Y-%m-%dT%H:%M:%S.%fZ')#2018-08-20T00:00:00.000Z
                if dict_date > begin_date and not date_found:
                    date_found = True
                    date_found_index = x
                    logging.info("raw values within {} days ago date found: {}, {}".format(self.anomaly_days, dict['date'], begin_date))
                x += 1
                for key in unique_keys:
                    try:
                        trash = int(dict[key]) * 2 + 1
                        raw_values[key].append(int(dict[key]))
                    except:
                        try:
                            trash = int(dict[key]) * 2 + 1
                            raw_values[key] = [int(dict[key])]
                        except:
                            logging.info("Key: {} is non-numerical, moving to next key.".format(key))

            for key in raw_values.keys():
                if len(raw_values[key]) > 0:
                    mean, lower, upper = self.confidence_interval(raw_values[key], confidence=self.confidence)
                    logging.info("Upper: {}, middle: {}, lower: {}".format(upper, mean, lower))
                    i = 0
                    discovery_index = None
                    insight = False
                    max_difference = 0
                    score = 0

                    date_filtered_raw_values = []
                    date_filtered_raw_values = date_filtered_data[date_found_index:]
                    logging.info("Raw values: {}".format(date_filtered_raw_values))
                    for dict in date_filtered_raw_values:
                        if (dict[key] > upper and dict[key] - upper > max_difference) or (dict[key] < lower and lower - dict[key] > max_difference):
                            logging.info("Band breached at {}. Marking discovery. dict: {}, key: {}, mean: {}".format(i, dict, key, mean))
                            max_difference = max(dict[key] - upper,lower - dict[key])
                            score = abs(dict[key] - mean) / mean * 100
                            insight = True
                            discovery_index = i
                        i += 1
                    if insight and 'date' in data[0]:

                        ### INSIGHT DISCOVERED ###

                        # Check if new insight has a better score than other insights in its place, use result
                        #   to determine if we continue in the insertion process (0 for no insertion, 1 for record
                        #   insertion, 2 for record and insight data points insertion)
                        instructions = self.clear_insight(repo_id, score, endpoint['cm_info'], key)
                        # self.clear_insight(repo_id, score, endpoint['cm_info'] + ' ({})'.format(key))

                        # Use result from clearing function to determine if we need to insert the record
                        if instructions['record']:

                            # Insert record in records table and send record to slack bot
                            record = {
                                'repo_id': int(repo_id),
                                'ri_metric': endpoint['cm_info'],
                                'ri_field': key,
                                'ri_value': date_filtered_raw_values[discovery_index][key],#date_filtered_raw_values[j][key],
                                'ri_date': date_filtered_raw_values[discovery_index]['date'],#date_filtered_raw_values[j]['date'],
                                'ri_score': score,
                                'ri_detection_method': '{} confidence interval'.format(self.confidence),
                                "tool_source": self.tool_source,
                                "tool_version": self.tool_version,
                                "data_source": self.data_source
                            }
                            result = self.db.execute(self.repo_insights_records_table.insert().values(record))
                            logging.info("Primary key inserted into the repo_insights_records table: {}".format(result.inserted_primary_key))
                            self.results_counter += 1
                            # Send insight to Jonah for slack bot
                            self.send_insight(record, abs(date_filtered_raw_values[discovery_index][key] - mean))

                        # Use result from clearing function to determine if we still need to insert the insight
                        if instructions['insight']:

                            j = 0
                            logging.info("Starting j: {}, discovery_index: {}, data: {}".format(j, discovery_index, date_filtered_data[j]))
                            for tuple in date_filtered_raw_values:
                                try:
                                    data_point = {
                                        'repo_id': int(repo_id),
                                        'ri_metric': endpoint['cm_info'],
                                        'ri_field': key,
                                        'ri_value': tuple[key],#date_filtered_raw_values[j][key],
                                        'ri_date': tuple['date'],#date_filtered_raw_values[j]['date'],
                                        'ri_fresh': 0 if j < discovery_index else 1,
                                        'ri_score': score,
                                        'ri_detection_method': '{} confidence interval'.format(self.confidence),
                                        "tool_source": self.tool_source,
                                        "tool_version": self.tool_version,
                                        "data_source": self.data_source
                                    }
                                    result = self.db.execute(self.repo_insights_table.insert().values(data_point))
                                    logging.info("Primary key inserted into the repo_insights table: " + str(result.inserted_primary_key))

                                    logging.info("Inserted data point for endpoint: {}\n".format(endpoint['cm_info']))
                                    j += 1
                                    logging.info("incremented j: {}, discovery_index: {}, data: {}".format(j, discovery_index, date_filtered_data[j]))
                                except Exception as e:
                                    logging.info("error occurred while storing datapoint: {}".format(repr(e)))
                                    break
                else:
                    logging.info("Key: {} has empty raw_values, should not have key here".format(key))

        self.register_task_completion(entry_info, "insights")

    def send_insight(self, insight, units_from_mean):
        try:
            repoSQL = s.sql.text("""
                SELECT repo_git, rg_name
                FROM repo, repo_groups
                WHERE repo_id = {}
            """.format(insight['repo_id']))

            repo = pd.read_sql(repoSQL, self.db, params={}).iloc[0]

            begin_date = datetime.datetime.now() - datetime.timedelta(days=self.anomaly_days)
            dict_date = insight['ri_date'].strftime("%Y-%m-%d %H:%M:%S")
            if insight['ri_date'] > begin_date and self.send_insights:
                logging.info("Insight less than {} days ago date found: {}\n\nSending to Jonah...".format(self.anomaly_days, insight))
                to_send = {
                    'insight': True,
                    # 'rg_name': repo['rg_name'],
                    'repo_git': repo['repo_git'],
                    'value': insight['ri_value'], # y-value of data point that is the anomaly
                    'date': dict_date, # date of data point that is the anomaly
                    'field': insight['ri_field'], # name of the field from the endpoint that the anomaly was detected on
                    'metric': insight['ri_metric'], # name of the metric the anomaly was detected on
                    'units_from_mean': units_from_mean,
                    'detection_method': insight['ri_detection_method']
                }
                requests.post('https://ejmoq97307.execute-api.us-east-1.amazonaws.com/dev/insight-event', json=to_send)
        except Exception as e:
            logging.info("sending insight to jonah failed: {}".format(e))

    def clear_insights(self, repo_id, new_endpoint, new_field):

        logging.info("Deleting all tuples in repo_insights_records table with info: "
            "repo {} endpoint {} field {}".format(repo_id, new_endpoint, new_field))
        deleteSQL = """
            DELETE
                FROM
                    repo_insights_records I
                WHERE
                    repo_id = {}
                    AND ri_metric = '{}'
                    AND ri_field = '{}'
        """.format(repo_id, new_endpoint, new_field)
        try:
            result = self.db.execute(deleteSQL)
        except Exception as e:
            logging.info("Error occured deleting insight slot: {}".format(e))

        # Delete all insights
        logging.info("Deleting all tuples in repo_insights table with info: "
            "repo {} endpoint {} field {}".format(repo_id, new_endpoint, new_field))
        deleteSQL = """
            DELETE
                FROM
                    repo_insights I
                WHERE
                    repo_id = {}
                    AND ri_metric = '{}'
                    AND ri_field = '{}'
        """.format(repo_id, new_endpoint, new_field)
        try:
            result = self.db.execute(deleteSQL)
        except Exception as e:
            logging.info("Error occured deleting insight slot: {}".format(e))

    def clear_insight(self, repo_id, new_score, new_metric, new_field):
        logging.info("Checking if insight slots filled...")

        # Dict that will be returned that instructs the rest of the worker where the insight insertion is
        #   needed (determined by if this new insights score is higher than already stored ones)
        insertion_directions = {'record': False, 'insight': False}

        # Query current record for this
        recordSQL = s.sql.text("""
            SELECT ri_metric, repo_id, ri_score, ri_field
            FROM repo_insights_records
            WHERE repo_id = {}
            AND ri_metric = '{}'
            AND ri_field = '{}'
            ORDER BY ri_score DESC
        """.format(repo_id, new_metric, new_field))
        rec = json.loads(pd.read_sql(recordSQL, self.db, params={}).to_json(orient='records'))
        logging.info("recordsql: {}, \n{}".format(recordSQL, rec))
        # If new score is higher, continue with deletion
        if len(rec) > 0:
            if new_score > rec[0]['ri_score'] or self.refresh:
                insertion_directions['record'] = True
                for record in rec:
                    logging.info("Refresh is on or Insight record found with a greater score than current slot filled for "
                        "repo {} metric {} new score {}, old score {}".format(repo_id, record['ri_metric'], new_score, record['ri_score']))
                    deleteSQL = """
                        DELETE
                            FROM
                                repo_insights_records I
                            WHERE
                                repo_id = {}
                                AND ri_metric = '{}'
                                AND ri_field = '{}'
                    """.format(record['repo_id'], record['ri_metric'], record['ri_field'])
                    try:
                        result = self.db.execute(deleteSQL)
                    except Exception as e:
                        logging.info("Error occured deleting insight slot: {}".format(e))
        else:
            insertion_directions['record'] = True

        # Query current insights and rank by score
        num_insights_per_repo = 2
        insightSQL = s.sql.text("""
            SELECT distinct(ri_metric),repo_id, ri_score
            FROM repo_insights
            WHERE repo_id = {}
            ORDER BY ri_score ASC
        """.format(repo_id))
        ins = json.loads(pd.read_sql(insightSQL, self.db, params={}).to_json(orient='records'))
        logging.info("This repos insights: {}".format(ins))

        # Determine if inisghts need to be deleted based on if there are more insights than we want stored,
        #   or if the current insights have a lower score
        num_insights = len(ins)
        to_delete = []
        for insight in ins:
            insight['ri_score'] = insight['ri_score'] if insight['ri_score'] else 0.0
            logging.info("{}, {}, {}, {}".format(insight['ri_metric'], new_metric, insight['ri_score'], num_insights_per_repo))
            if (insight['ri_score'] < new_score and num_insights >= num_insights_per_repo) or num_insights > num_insights_per_repo or (insight['ri_metric'] == new_metric and self.refresh):
                num_insights -= 1
                to_delete.append(insight)
                logging.info("condition met, new len: {}, insight score: {}, new_score: {}".format(num_insights,
                    insight['ri_score'], new_score))

        # After psuedo-deletion, determine if insertion of the new insight is needed
        if num_insights < num_insights_per_repo:
            insertion_directions['insight'] = True

        # Delete all insights marked for deletion
        for insight in to_delete:
            logging.info("insight found with a greater score than current slots filled for repo {} new score {}, old score {}".format(repo_id, new_score, insight['ri_score']))
            deleteSQL = """
                DELETE
                    FROM
                        repo_insights I
                    WHERE
                        repo_id = {}
                        AND ri_metric = '{}'
            """.format(insight['repo_id'], insight['ri_metric'])
            try:
                result = self.db.execute(deleteSQL)
            except Exception as e:
                logging.info("Error occured deleting insight slot: {}".format(e))

        return insertion_directions

    def confidence_interval(self, data, timeperiod='week', confidence=.95):
        """ Method to find high activity issues in the past specified timeperiod """
        a = 1.0 * np.array(data)
        logging.info("np array: {}".format(a))
        n = len(a)
        m, se = np.mean(a), scipy.stats.sem(a)
        logging.info("Mean: {}, standard error: {}".format(m, se))
        h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)
        logging.info("H: {}".format(h))
        return m, m-h, m+h

    def update_metrics(self):
        logging.info("Preparing to update metrics ...\n\n" +
            "Hitting endpoint: http://{}:{}/api/unstable/metrics/status ...\n".format(
            self.config['api_host'],self.config['api_port']))
        r = requests.get(url='http://{}:{}/api/unstable/metrics/status'.format(
            self.config['api_host'],self.config['api_port']))
        data = r.json()

        active_metrics = [metric for metric in data if metric['backend_status'] == 'implemented']

        # Duplicate checking ...
        need_insertion = self.filter_duplicates({'cm_api_endpoint_repo': "endpoint"}, ['chaoss_metric_status'], active_metrics)
        logging.info("Count of contributors needing insertion: " + str(len(need_insertion)) + "\n")

        for metric in need_insertion:

            tuple = {
                "cm_group": metric['group'],
                "cm_source": metric['data_source'],
                "cm_type": metric['metric_type'],
                "cm_backend_status": metric['backend_status'],
                "cm_frontend_status": metric['frontend_status'],
                "cm_defined": True if metric['is_defined'] == 'true' else False,
                "cm_api_endpoint_repo": metric['endpoint'],
                "cm_api_endpoint_rg": None,
                "cm_info": metric['display_name'],
                "cm_working_group": metric['group'],
                "cm_info": metric['tag'],
                "tool_source": self.tool_source,
                "tool_version": self.tool_version,
                "data_source": metric['data_source']
            }
            # Commit metric insertion to the chaoss metrics table
            result = self.db.execute(self.chaoss_metric_status_table.insert().values(tuple))
            logging.info("Primary key inserted into the metrics table: " + str(result.inserted_primary_key))
            self.results_counter += 1

            logging.info("Inserted metric: " + metric['display_name'] + "\n")

    def filter_duplicates(self, cols, tables, og_data):
        need_insertion = []

        table_str = tables[0]
        del tables[0]
        for table in tables:
            table_str += ", " + table
        for col in cols.keys():
            colSQL = s.sql.text("""
                SELECT {} FROM {}
                """.format(col, table_str))
            values = pd.read_sql(colSQL, self.db, params={})

            for obj in og_data:
                if values.isin([obj[cols[col]]]).any().any():
                    logging.info("value of tuple exists: " + str(obj[cols[col]]) + "\n")
                elif obj not in need_insertion:
                    need_insertion.append(obj)
        logging.info("While filtering duplicates, we reduced the data size from " + str(len(og_data)) +
            " to " + str(len(need_insertion)) + "\n")
        return need_insertion

redpajama_set_name: RedPajamaGithub


In my fantasy WIP, one of my characters lives in a cave up on a mountain (and no, she's not a Neanderthal). I'm looking for information on the logistics of living in caves. What sort of water source? Underground river? Are air vents needed? Chimney hole for a fire? This world has a medieval level of technology (no electricity or gunpowder). Any suggestions on resources? All I've found in my local library is information on exploring caves, not living in one.
Since any of those things you mentioned above could come into play ... in any way you want... I'd suggest looking at some books that describe various cave systems and see which would strike you as "home". It could have a water source inside from seepage to a lake... It could have a lot of things because caves are unique to their related geopgraphical regions.
If the character lives in a cave, what kind of air vents would be needed?... Unless you plan on having him or her deep underground in which case there might be a need for "vents" to the outside world. If you have air vents you have chimney holes... You see? It's your world, or your character's. You and he or she decide these things together.
Believe it or not, I think about living in a cave quite often.
My cave has a large pool - with warm water from hot springs. The kitchen/dining room is in another chamber because there are cracks in the ceiling which allows smoke to vent. There is also a handy spring outside the main entrance and to the left. A nice mixture of deciduous and evergreen shrubs obscure the entrance and smoke holes so people won't know what I'm up to in there.
You can see one news story here (http://tinyurl.com/8f732).
I'm looking for information on the logistics of living in caves.
Waaaaaaaaay back when we had to smash our own hydrogen and oxygen atoms together to make water, when I was in college, my archaeology professor walked us through what made a good "living" cave. (For "cave," see also "abri.") Have you checked out archaeology/anthropology sources?
That happened not too far from here, lol. I'm about sick of it on the TV, but, heck, I guess they don't have anything else to talk about most of the time.
I'm bugged because the guy had MY dream home, got busted, and now the government knows where it is.
Good cave hideouts are hard to find.
Want I should keep an eye out for when it comes up on government auction?
Sure. That would be great. Think I could be so lucky as to have money at the same time it goes on the block?
Back in the day, hippie times that is, I knew some people who lived in caves. They said it was not so different from camping in a remote place. They did not burn inside the cave. It was warm (Arizona). So you have a cave instead of a tent. I went in one once. Let's see, the walls were red and dry. There were sections, smaller rooms. Some you had to lay on your tummy to get to. In the rooms were artifacts from other cave dwellers, pottery shards and such. I saw a lot of pack rat nests with interesting things in them. Of course you have the scattered bone thing from animals.Hope any of that helps.


MADISON, Wis. — After Shopko announced it is closing dozens of stores across the country, the company has given formal notice for layoffs at two stores in Madison.
The Wisconsin Department of Workforce Development (DWD) announced Friday it received a WARN (Wisconsin Business Closing and Mass Layoff ) notice from Shopko.
Shopko says the stores at 2201 Zeier Road and 7401 Mineral Point Road will close in April. Shopko says all 63 employees will be let go.
Earlier this week, Shopko announced it was filing for bankruptcy.


Our friend Bobbi posted a super fun contest on her blog this week. The contest is to see who can make an m&m on m&m's website and make it look the most like themselves. Well, of course we had to get in on the fun.
Here's an m&m I made of John. You'll notice the headphones that are attached to his head all day while he works in his studio and of course his slippers are because he works from home. The robot transformer arms? Cuz he's my techie nerd and I wouldn't have it any other way.
Here's John's take on me. He says the hat matches one that I usually wear in the winter. He's says it shows my "hyper, but mellow" personality. I'm guessing the bear is for Miles.
For more, and MUCH more creative m&m's from some of Bobbi's adorable bloggers, check out Bobbi's blog at: Bobbi's Blog You will be amazed by how much these m&m's look like their creators. There is even a dog m&m that cracked us up. Oh, and you can vote for your favorite as Bobbi is giving out a prize. Actually, the one I made for John is in the top 7, so check out the competition and vote accordingly!
Her hubby Mike's m&m is hilarious too, but I'll make you go to her website to check it out.


I entered UK with my Pakistani passport plus short term student visa valid till February 2019. I came to UK on the day I became Canadian citizen with proof of citizenship certificate and applied for my first Canadian passport from London. I'm planning on going to Europe from London and then I'll be returning to London and going to Canada few days after. So I would like to know few things: 1) since there is no exit control at London Airport which passport should I use for check in and API information? 2) which passport should I use to re enter UK from Europe since my entry stamp is on Pakistani passport. 3) I'm travelling to Europe on Canadian since i don't need a visa with that passport. So is it vice to tell this to immigration office Incase they ask me how did I enter Europe.
After reading posts I was planning to leave UK, showing Pakistani passport and entering API information of Canadian passport but then how will UK border find out I left. I can re enter on my Pakistani passport without any issue since ( I traveled to turkey from UK with Turkish visa on Pakistani passport last month) and didn't even carry Canadian passport.
No exit controls in London, but your exit is recorded. I would show the Pakistani passport, and when asked for a visa, show your Canadian passport at check-in or when asked.
You can enter on your Canadian passport without issue. I would also show my entry stamp on your Pakistani passport to the immigration officer, and your proof of departure (such as a boarding pass) and ask them if everything is okay with your record.
Use your Canadian passport only.
Not the answer you're looking for? Browse other questions tagged visas dual-nationality pakistani-citizens canadian-citizens or ask your own question.
Do I need a visa to work remotely in Europe as a Canadian citizen for six weeks?


text:
LIVE Astro W'shop FEB 23
Before You Book !
Astrology Booking Form
KR Sites
Living with Exceptional Purpose
Bodhimind Essences
Bodhimind Reiki Courses
Exceptional Purpose Program
Authentic Astrology
Spaces—Work/Home (clearing sabotage)
The Book Series
About Kerrie Redgate
ExceptionalPurpose site for more
Kerrie's Book Series
and other snippets
It's Amost Here!
Kerrie about to be
wacked
on the head
by one of her
'Transcendent Bodhisattvas'
for being so late with
the
book series!
(Nan Tien Temple,
Wollongong Australia)
PS: A snap, not a staged photo!
It has been a very long time in the making—my life's work, in fact. But at last the first set of my own book series is in sight of publication. And more books will be added to that series over the next few years (they're all in progress!). Plus another very different collaborative series that I'm hoping to publish later in 2020.
Initially, my comprehensive book series on astrology and consciousness (and related topics) began its life in 1998, seemingly destined to be a single fat paper tome (of more than 500,000 words, mostly written in just 13 months!). But the bizarre twists of Fate conspired against me, and even though I spent the following decade deep in research and investigations, the book could not be completed.
Just as well! There is no substitute for time and practice when it comes to a professional polish in one's writing. Not that I'm a master now, but there have been visible improvements! (And I'm now officially an award-winning author.)
A huge change arrived for me in 2011, when I sat in front of Dale Beaumont, one of Australia's most prolific authors (and now founder and CEO of Business Blueprint) who advised us to not think "book", but to think "book series". And even though I'd had an American publisher interested in the concept of my book, Dale was the first person to convince me that self-publishing was the way to go.
The Anthologies
I'd had articles published in a number of magazines from the late 1980s, and made my first anthology contribution to Ian White's book Australian Bush Flower Healing in 1999.
Though, this was an odd experience, as my very rough first trial draft which had been written quickly for basic subject approval, had been not only seriously altered by the editor (including some critical astrological spelling: I was not referring to the Kuiper Belt "trans-Neptunian" bodies, but the eight Witte-Sieggrün "Transneptunian" Points—vastly different!), but was also published, instead of my third and final draft which also contained corrections to the chart! (Getting asteroid names onto a chart for print in those days was a paper-&-scissors, cut-&-stickytape scan job!)
OOPS !!
… Self-publishing looking pretty good!
Yet, I was published again in another anthology in 2011, via the talented author/editor/multi-award-winning publisher, Sophia Fairchild of Soul Wings® Press. Sophia maintains a close working relationship with her authors, so this was a much happier experience than my first anthology contribution in 1999!
This 2011 book, Planet Whispers: Wisdom From Soul Travelers Around the World, has fourteen contributing authors, including Sophia, herself, and we received an award for the book, which is quite exciting! Also (at this time of writing), on Goodreads it's been given an average of 4.75 stars and 100% of people voting like it.
My chapter in Planet Whispers is titled "Is It the Body or the Mind That Travels?", uncovering the subtle influences that are travelling with us in foreign lands.
"The longing to reach an exotic destination
is not for the food, the entertainment, or the postcards,
but a yearning of the soul to complete something
undone long ago."
— KERRIE REDGATE
excerpt from "Is It the Body or the Mind That Travels?",
Planet Whispers: Wisdom From Soul Travelers Around the World
(Soul Wings®Press, ed. Sophia Fairchild)
My chapter also offers some clues as to how we can find our own personal Power Places. I gave away a little of my research in that book pertaining to the source of astrological influences, but that will be the focus of an entire book I'm currently completing.
. . . I do have to say, though, I have some issues with the Audible narrated version of my chapter in Planet Whispers, so I recommend the paper or ebook versions if my chapter is significant for you. See the detailed note at the bottom of this page ↓
Planet Whispers is available via Amazon (paper, Kindle ebook, Audible),
Kobo (epub ebook), Apple Books (epub ebook),
and can be ordered through your favourite book store.
National Best Book Awards 2012—USA Book News Award-Winning Finalist
Category: Best Anthology—Non-Fiction
2011 was very much a writing year for me. I had also stepped up my blog production (which I'd started in January 2010) — now lost, thanks to Yahoo!'s shenanigans. (I've since switched to a new web host for genuine customer service!) Though, I still have many of those original blog texts, so I may re-purpose some as a small ebook.
A VideoBlog
Meanwhile, my Exceptional Purpose VideoBlog is a collection of mostly videos from thought-leaders, solopreneurs, and entrepreneurs for your inspiration, with my added written commentary for context. So do check that out. The collection is building (and the blog site will soon be redesigned for a more modern, uncluttered experience).
Also that year, I was pondering deeply as to how on Earth I could slice up my gigantic 550,000-word manuscript into a series of books.
The result is that today I have about 10 books on the go! (And another 6 in the planning stages!). Three or four will be published at the same time so you can continue reading them as an interconnected series. I'm planning to make 2019 my publishing year! (2018 was a complete redesign of my major websites and the launch of my RedgateSpace web design service.)
Rescued by Scrivener
Joanna Penn (left) & myself — Feb 2017 at her writers' seminar in Brisbane Australia
For decades, I had been frustrated with the writing apps available for professional writers. I tried one after the after, but felt constrained by each one of them, including MSWord's "master document" feature (ugh!). I have since learned that I was not alone!
One of the miraculous changes that occurred for me in recent years has been the discovery of the fabulous writing and authoring software, Scrivener, created by the good people at Literature & Latte. (I use their Scapple app on the Mac, as well, for creating 'mind-maps' for StrategyTransits reports.)
I had downloaded the free 30-days-of-use trial of Scrivener in 2012 (or 2013?), but at first sight it looked complicated and ugly! I'd had no idea then that it could be completely customized, visually and practically, for your preferred work environment. It's magic!
It was not until 2015 that I discovered Joanna Penn, arguably the queen of indie author publishing! Her non-fiction book series and The Creative Penn podcast are indispensable for writers. And apart from the treasure trove of wisdom she shares for us indie authors (as also a successful indie fiction author), Joanna's podcasts and videos inspired me to try Scrivener again.
Most professional writers and authors use Scrivener as the software of choice (for MacOS, iOS, or Windows). It's not simply a writing app, but an entire research environment for your work. It can hold all of your research data—including offline web pages, videos, images, documents—that you need for your writing project, all in one place!
To think, back in the '90s, I used to print out long chapters I'd written in MSWord, slice up little sections with scissors, lay them out on the floor to get the overall picture, and then sticky tape them to where I thought they should go in the chapter! Then I had to do the same virtual cut-&-paste in MSWord itself!!
With Scrivener, you can create smaller sub-documents within a document or chapter and just slide their icons up and down in the sidebar "Binder", placing them where they would fit best in the project. Plus corkboards for synopses, character traits, etc, etc. Progress tracking, formatting for writing, as well as formatting for publishing. Easy! And that is only the beginning.
And it didn't stop there for me, as I needed help for just understanding what Scrivener was capable of doing, and how to do it. And that's when I found Karen Prince who has produced excellent, comprehensive, and affordable online courses for working with Scrivener. Here's a brief introduction, below, from Karen Prince's YouTube channel:
My mother used to say,
"You can do anything in life if you have the right tools."
My mother was absolutely correct, of course. And I now feel liberated as a writer, as I have a tool that not only has boosted my productivity (and allows me to set real-time targets), but will also help me format my books for all the various self-publishing platforms.
If you are on my emailing list (see the 'grab it here!' button, below), you will be alerted to the brief periods when my books will be discounted or free for you in the e-book versions for a limited time, or pre-released especially for review purposes.
And one of the first e-books in the series will be periodically free, with a price tag for the printed version.
Series Queries
Apologies!
I'm building a new survey form
So, please Email your Queries!
It can be easy for me to leave something significant out of my books, forgetting all the steps it had taken for my own investigations and realisations.
So I've created an easy SURVEY where you can ask me anything directly relating to my books on various topics of my work and research. And I may be able to answer your queries for everyone via my books.
The Survey guides you easily through the general topics (such as astrology, reincarnation, flower essences). You can spend as much time with it as you'd like, and only ask about the topics that interest you.
Your interactions with the survey are private, between you and me, so your queries, themselves, will not be published.
Please try it out! I'd love to hear from you.
Contents of the Series
The main theme of the series relates to "consciousness", and how it can be explained through Astrology, while delving into the deepest questions about life. This is a new system of interpretation and new research I have been developing since 1986. Some of the books will also deal with my extensive research into subtle self-sabotage in career and relationships—this is also exclusive work.
One of the earliest volumes in the series is an explanation of Reincarnation based on my research methods. This will be a comprehensive exposé covering also the significance of childhood experiences viewed here as the direct result of former causes, rather than the ultimate cause of our present condition, discussed in relation to our mind-stream ("memory-consciousness"). It includes a step by step description of the research I have undertaken with several colleagues to prove the reincarnation of consciousness as a valid process of life and spiritual development.
Another early volume describes how astrology actually works, with major references to the Earth's magnetic field and the brain. I have never supported the standard catch-cry from many astrologers that Carl Jung's theory of "Acausal Synchronicity" is behind this profound science. (I find that a lazy, straw-grasping approach.) As a Buddhist, I firmly believe that all things are a manifestation of causes and conditions. Again, my proposal is based on my own research. This book also helps to elaborate further on the process of the transmigration of consciousness, the reincarnation of the mindstream.
Yet another volume takes a further leap to elaborate on the spiritual psychology of the Yogacara Doctrine of Mind (including the Buddha Nature), a sophisticated system of eight types of consciousness which Siddhartha Gautama, the man we refer to as The Buddha, had devised through his insights during the 6th century BC. Here, I have made major correlations to brain areas and astrological signatures. Again, this is original work that I have been refining since the late 1990s.
This brings us into the deeper implications of what it means to be a spiritually mature human being, living a life of compassion through inherent wisdom. The book that addresses this theme elaborates on the idea of the modern day Bodhisattva, the courageous, awakened person who wants meaning from life, and who recognises our social responsibility. This volume will hopefully inspire the entrepreneur/solopreneur to boldly innovate with confidence that the world can be changed in a way that benefits all.
An important volume, The Insidious Saboteur in the Psyche, will elaborate on my three decades of research into subtle self-sabotage that affects many individuals around the world, wanting to express their highest purpose and to leave a legacy of a life well-lived for others. I now know where it is in the brain and how it got there! Plus how to determine it astrologically, and the steps we need to take in our lives to overcome the stagnation.
There will be other volumes that support these last two, especially, focusing on the idea of Exceptional Purpose as the new standard for business and social reform.
Healing the Source will also be a volume dedicated to Flower Essence Therapy. This will elaborate on what flower essences are, and how and why they work. Plus, I will publish some of my formulas that I have found to be effective for my clients and students. See also my new website, BodhimindEssences.com for more information on flower essences and my formulas' descriptions. Plus my Exceptional Purpose Resource newsletter, and it's accompanying blog, which will contain an exposé on a flower essence formula in each edition.
And a separate book on Astrological Transits describing the responsible way in which we may still use the current astrological influences as opportunities to develop strategies for directing our future decisions. In this way, Transiting influences become natural timers for our spiritual development, without seeing these astrological forces as being "fatalistic". This book also illustrates the common cycles of inner growth, instigated by planetary cycles, which we all experience from our birth to the end of our life; and their implications for our personal responsibility in the world.
Other books are also in the works to support these themes more specifically.
Other Topics I'm Covering in the Series
Just Briefly:
A new more positive and inspirational interpretation of the Western (Tropical) astrological chart
The use of thousands of asteroids as the body-text of your birth chart, to describe your deeper past and the concepts hidden in your brain
Unique research involving the eight Transneptunian Points for your higher spiritual evolution
The Astrological Paradigms and how you can take advantage of their mass influence, personally and professionally
Astrology and The Yogacara Doctrine of Mind, one of the highest levels of Buddhist psychology
Some Taoist Philosophy to help bring you to wholeness and inner balance with the outer world
Flower Essence therapy to help retrain your brain
A little physics and new cosmology (no black holes, dark matter, or dark energy!) to make sense out of it all
General brain science to understand your mental and emotional processes
The human energetic system related to astrological signatures including associations with the "auric fields" of consciousness, chakras, and major meridians, all offering clues for the development of further diagnostic techniques in various fields
… and a lot more!…
I apologise for the enormous delay in getting this series of books out there, but I am intending that the wait will eventually prove its worth. And I thank those who have made inquiries, for their patience and continued interest.
I have been very excited to find that the new "science of consciousness", presently emerging in our Western technological culture, is now validating many of the theorems and discoveries I have been writing about in my book series.
I will now be able to refer in my own book to many of the new scientific studies being conducted at this time, and perhaps this has had something to do with the delay of its publication. My dream of having astrology finally validated as a genuine science may possibly be moving closer to becoming a reality.
I owe a great deal of the success of this research to my clients and students, over the years, who provided the necessary feed-back, suggestions, and questions that led me to my present understanding of the wisdom and truth within the science of astrology generally.
I also want to thank the good people at Literature & Latte for creating their fabulous Scrivener software for both Mac and Windows writers, and for making it so affordable for us!
Download a copy of Kerrie Redgate's 2008 Insight Magazine article Cult or Consciousness: A Global Ultimatum (written mostly in 2007), explaining both the previous global astrological era (from 1995 to 2007) and this current one (2008 to 2023), highlighting the big changes that were yet to come at the time of writing, from an astrological viewpoint.
Many of the issues mentioned have already surfaced (note the 'cult'/'tribal' movements emerging into public prominance), and we are now already three-quarters of the way through this paradigm. This article explains the Why. Also, it includes the advantages of this era, if we avail ourselves of the opportunities.
grab it here !
YOU'LL ALSO RECEIVE FUTURE EDITIONS OF MY NEWSLETTER, WHICH WILL INCLUDE MY
EXCEPTIONAL PURPOSE RESOURCE GUIDES.
BUT EASY TO UNSUBSCRIBE IF YOU'RE NOT HAPPY FOR ANY REASON, AS THE LIST IS MANAGED AUTOMATICALLY BY THE GOOD PEOPLE AT MAILCHIMP.
Note on 'Planet Whispers'
(audio version)
There are some errors in the narration of the Audible version of my chapter in Planet Whispers. Despite my precise literary efforts to avoid confusion, the word 'tear' was mispronounced as though a rip rather than a little wet drop (even though that error made no sense to the plot!).
And also, the following Bahasa Indonesia term "maaf maaf" ("excuse me / I'm very sorry") was replaced by the narrator with a defiant "Uh-huh?", which was NOT what had happened in the actual incident!
It mortifies me to think that people hear this as me being rude to a Balinese official! I'd had a lovely exchange with that man—that was the point!
Also, I was surprised to find that there was someone on the planet, especially a narrator, who had never heard of Australia's most famous 'Bondi Beach', so it came out 'Bondee' (again, not as I had written!).
Interestingly, I tested the ebook version on my older, original Kindle, which has speakers and the auto text-reader, and I found that the Kindle's voice handled both 'tear' and 'Bondi' perfectly! (Two points for AI !)
I haven't heard all of my chapter narrated, so I have no idea how the narrater handled the astrological terms! You may still be able to hear the first page of my chapter recited in the audio sample on the Amazon Audible page for the book (if it starts with "I smiled upwards at the figure standing behind…"). I hadn't been aware of an Audible version in existence before I'd found that page.
If you are interested in my chapter, my advice is to buy the paper or the e-versions (Kindle, Apple Books, Kobo, etc). And if I decide to produce audio versions of my own books, I'll be the one doing the narration!
PS: If you are an aspiring indie author, yourself, head over to Joanna Penn's website, The Creative Penn, where life begins! (But do pop back!)
Copyright © 2018-2020 Kerrie Redgate. All rights reserved.
BOOK-LAUNCH ALERTS
POSTS FOR YOUR PURPOSE
ONLINE COURSE ALERTS
(mostly-monthly) emails with blog & podcast alerts
You can easily Unsubscribe anytime.
See my Privacy Policy HERE
For your privacy I use IP-anonymization cookies on this site. OK?OKRead more

redpajama_set_name: RedPajamaCommonCrawl


text:
Voices of the Manhattan Project: J. Robert Oppenheimer's Interview
In this rare interview, J. Robert Oppenheimer talks about the organization of the Manhattan Project and some of the scientists that he helped to recruit during the earliest days of the project.
Oppenheimer discusses some of the biggest challenges that scientists faced during the project, including developing a sound method for implosion and purifying plutonium, which he declares was the most difficult aspect of the project. He discusses the chronology of the project and his first conversation with General Leslie Groves. Oppenheimer recalls his daily routine at Los Alamos, including taking his son Peter to nursery school.
STEAM Topics Famous People & Role Models Tags
Inventions & Scientists, Nuclear Science, Physics
J. Robert Oppenheimer
Nuclear Weapons, Manhattan Project
Voices of the Manhattan Project: Oral Histories
Voices of the Manhattan Project
Our online collection features 600 audio/visual interviews with Manhattan Project workers and their families, including J. Robert Oppenheimer, General Leslie R. Groves, Glenn Seaborg, Hans and Rose Bethe, George and Vera Kistiakowsky, and many more.
https://www.manhattanprojectvoices.org/
https://www.manhattanprojectvoices.or...
Audio/Transcript


text:
Fanfiction Writer and Literary Agent Leslie E. Owen on Star Trek, Reboots, and How to Write Great Characters
Part of our mission at FAN/FIC Magazine is to highlight amazing fan creators and pull back the curtain on their creative processes. For our fourth interview, I talked to Leslie E. Owen, a literary agent and lifelong Star Trek fan. In the following interview, we discussed the emotional impact of Gene Roddenberry's Star Trek, why the J. J. Abrams reboots are "eminently forgettable," and how talking to people at the fishmonger's can help you write compelling //
Jughead Jones is Asexual and We Don't Need 'Riverdale' to Prove It
When Riverdale appeared on television screens last fall, fans of the original Archie Comics were curious about how the show was going to handle the most intriguing character in the Archieverse – Jughead P. Jones. Jughead has always been somewhat of an enigma. Why the button-clad crown? Why so many hamburgers? Why the half-lidded eyes? When Jughead was revealed as the de facto narrator-blogger-moral compass of the CW's Riverdale, the role made sense to fans of the original comics. But //
REVIEW: Logan is a Harsh, Grounded, and Psychologically Complex Superhero Film
Warning: This article contains spoilers for Logan (2017). If you haven't seen it yet, retreat back to your abandoned smelting plant and rest your adamantium-weary bones. The seeds for Logan are planted in The Wolverine, James Mangold's 2013 take on the eponymous mutant superhero portrayed by Hugh Jackman. An adaptation of the Silver Samurai storyline from a 1982 Wolverine limited series comic book, it sees the clawed Canadian travel to Japan to say goodbye to an old friend, only to //
The Last Outpost of All That Is by gekizetsu
You could look at anyone or anything and know immediately whether it was alive or not, without waiting to see if the chest would expand with air again. The vibration of everything that lived was louder in its absence than in its full, unfurled hysteria. It was subtle from a distance, but terribly obvious all the same. The world, at first glance, was dead. The Last Outpost of All That Is by gekizetsu is a post-apocalyptic fanfiction that follows Supernatural brothers Sam and Dean Winchester //


text:
Quartz at Work
Quartz Africa
Quartz India
Quartz Japan
More from Quartz
About Quartz
Quartz Creative
Follow Quartz
These are the core obsessions that drive our newsroom—defining topics of seismic importance to the global economy.
These are some of our most ambitious editorial projects. Enjoy!
Our emails are made to shine in your inbox, with something fresh every morning, afternoon, and weekend.
An African fantasy video game studio has created a comic book to reach a wider audience
Kiiroo Games
Aurion, the comic book from Kiiro o Games
By Amindeh Blaise Atabong
Yaoundé, CameroonPublished August 6, 2019 This article is more than 2 years old.
Yaoundé, Cameroon-based video game company, Kiro'o Games, has rolled out the comic book version of "Aurion: The Legacy of the Kori-Odan"; an African-themed role-playing game which debuted in 2016. Kiro'o is using Aurion's colored comic strip to target comic lovers in the US.
The video game studio decided to create a comic book, which is now available on Amazon, to enable more people have access to the fantasy world it created based on African myths. The The game's PC format had sidelined many fans from enjoying it, especially African communities with few PC gamers.
"Between 2017 and 2018, black and white chapters of the comic were made available for free online; which got about 100,000 downloads and positive feedback from fans," says William Fankam, lead community manager of Kiro'o Games.
Kiroo Games
Kiro'o has already had plenty of international media coverage and fans for its flagship video game's creativity though that hype and excitement has not yet converted that into major funding. The team is already working on releasing the next volume of the 220-page comic by November, as feedback from the current volume has been encouraging, according to Dominique Yakan Brand, co-founder of Kiro'o Games. Yakan says it has been in touch with Netflix about a possible animation version as well.
Kiroo
While its core business remains in video games it is shifting its focus away from the PC to the fast-growing African smartphone market. Kiro'o Games will be releasing in 2020 its first mobile game, a social parody simulation called The Boss. As well as moving into some of Africa's big markets the company wants to make serious inroads into the US and European markets.
Africa is estimated to represent just a little over 1%of a market that generated $138 billion in 2018. As such, the continent still has untapped potentials. Kiro's Games and other African studios are breaking into the industry to make gains from the sector that still has much opportunities for job and wealth creation. But not without difficulties.
Sign up to the Quartz Africa Weekly Brief here for news and analysis on African business, tech and innovation in your inbox
📬 Kick off each morning with coffee and the Daily Brief (BYO coffee).
By providing your email, you agree to the Quartz Privacy Policy.
Make business better™
Ethics and advertising agreements
© 2022 Quartz Media, Inc. All rights reserved.
↑ Beam me up, Scotty
Update your browser for the best experience.


I was searching for a Property and found this listing (MLS® #278860). Please send me more information regarding Picada Ct Unit 2, Bay Minette, Alabama, 36507. Thank you!
I'd like to request a showing of Picada Ct Unit 2, Bay Minette, Alabama, 36507 (MLS® #278860). Thank you!