text:
Review - Hume
An Intellectual Biography
by James A. Harris
Cambridge University Press, 2015
Review by Gregory F.W. Todd, J.D., MSc
Aug 27th 2019 (Volume 23, Issue 35)
James Harris's impressive Hume: An Intellectual Biography was published in hardback in late 2015. As of January 2019, it has been issued as well in paperback, making the work easily affordable to any reader with a serious interest in Hume. Harris is Professor in the History of Philosophy at the University of St Andrews, Scotland, with a long association not only with Hume's epistemology and ethics (as taught today, his "philosophy"), but also Hume's six-volume History of England, for which Hume was best known during his lifetime, and his extensive writings on economics and politics. Harris's undertaking is comprehensive, and he has accomplished it with a depth of focus, thoroughness, and rigor that are quite remarkable. The result is a work of scholarship that will be useful for a long time to come.
We should understand what Harris means by an "intellectual biography". It is not a standard biography, with a primary focus on the life, times, character, and motivations of Hume, the man (viii). Rather, it is a thorough review and analysis of Hume's works, set in the matrix of the unfolding events of Hume's life, in which the background, and intellectual content of each of such works is taken on its own terms, without characterizing any work as derivative of another or part of a system or a "unified whole" (25). Harris sets aside two earlier frameworks by which the totality of Hume's works has been considered. An early view held that Hume had written all he had to say on "philosophy" by his late 20s, and with the realization that it led nowhere, as well perhaps as being "greedy of fame", he abandoned philosophy in favor of a miscellany of unrelated empirical works. (7,8). A later (still widely held) view found to the contrary that Hume's works after the Treatise of Human Naturerepresent the working-out of his project for a 'science of man' referenced in the preface to the Treatise. (9). Rejecting both conceptions, Harris sees Hume as a eighteenth-century "man of letters", whose works are united not by a unified content but by the "disengaged, skeptical, philosophical frame of mind of their author" (viii), whose goal is to abstract from particulars, and to identify underlying general principles. "This is philosophy understood not as a body of doctrine or a subject matter, but rather as a habit of mind, a style of thinking, and of writing, such as could in principle be applied to any subject whatsoever." (18).
There are important advantages to Harris's project in doing so. Treating each work as a standalone project permits Harris to investigate and describe fully the intellectual background of the issues Hume addressed in each work, and to locate Hume in the narrative tradition of each of the many streams of discourse with which Hume engaged. In the early chapters on the Treatise, Harris provides a rich and detailed background on the influences of Shaftesbury, Mandeville, Bayle, and Hutcheson, synthesizing much current Hume scholarship. In the chapters on Hume's History of England, we learn a great deal about the historians who preceded Hume, both Whig and Tory - more, perhaps, some readers may feel they need to know, but a valuable historiographical resource.
The result is a masterful piece of scholarship that will hold an important place for Hume studies for a long time. This is not to say however that it represents the final word in the intellectual history of Hume's works; how could it be? While Harris is understandably reluctant to speculate about possible (thought not certain) influences, more attention might be given to Edinburgh's early, but important, Rankenian Club (mentioned by footnote, though not in the text); although too early directly to influence Hume, its concerns characterized Edinburgh intellectual circles in Hume's early years. Something more could be said as well about writers that Hume may have read in France. And while Harris offers much about the development of Hume's approach to his subjects, and his strategies for engaging his readership, Harris has less to say about the development of Hume's thought per se: shifts (or not) in his conceptions of the outside world; modifications of (or adherence to) his secularism; his belief in the unity of human nature; or his antipathy to institutional religion, as examples. I do not wish to overstate this point, for Harris has much to say about changes in Hume's outlook, and it may well be that Hume's works do not constitute a purposefully systematic body; but some Hume scholars will feel that there is more substantive connective tissue between Hume's works than Harris's methodological commitments give full room to explore.
A few words about my reading experience of Hume. An eBook version is available on the Cambridge University Press website, and for reasons of curiosity, convenience, and cost, I opted for that. After a couple of glitches (promptly solved by the third-party distributor), I found this a very handy format for reading, on both my regular and my mini-iPads. I made notes either by highlighting or, once I learned a quirk or two, by making comments on pages. Since I expect to refer again to Harris's work, the eBook's search capability will be useful. On the Cambridge website, the paperback Hume lists at $34.99, the hardcover at $60, and the eBook at $28.
Hume will be of most value to serious students of Hume; indeed, its scope and detailed information may overwhelm a beginning or casual reader. As other reviews have uniformly noted, Hume is meticulously compiled. (I found just one typo – "born" on 27 should be "borne" -- while another reviewer found a single missing word. This is a minuscule number of misprints for a work of this length.) Whatever criticisms we may have fade to the vanishing point given the tremendous value of the research presented. Hume is, in summary, a tremendous resource, which either in the new paperback edition or by eBook, is now available at very modest cost. For anyone with a serious in Hume, this is a compelling book for purchase.
© 2019 Gregory Todd
Gregory F.W. Todd, J.D., MSc History, New York City


mTOR/P70S6K promotes spermatogonia proliferation and spermatogenesis in Sprague Dawley rats.
Spermatogenesis is a critical process for maintaining male fertility. Sustained spermatogonial stem cell self-renewal and differentiation ensures constant spermatogenesis, and several signalling pathways regulate this process. An increasing number of studies have suggested that the mammalian target of rapamycin (mTOR) signalling pathway plays an important role in spermatogenesis; however, the mechanism remains unknown. Our study showed that mTOR was positively related with spermatogenesis by detecting mTOR expression and the expression of its target p70s6k, rps6 and 4e-bp1 at different developmental stages. Phosphorylated p70s6k, rps6 and 4ebp1 levels were independently and gradually down-regulated with age. Subsequently, we showed in vivo and in vitro that, upon mTOR inactivation by rapamycin, the number of sperm significantly decreased (P < 0.05) and spermatogonia proliferation was blocked. Phosphorylated p70s6k and rps6 levels were down-regulated, but the levels of phosphorylated 4e-bp1 did not change. Spermatogonia were treated with the specific PI3K inhibitor LY294002, and p70s6k, rps6 and 4ebp1 phosphorylation overtly decreased. Therefore, we suggest that mTOR plays an important role in spermatogenesis by regulating p70s6k activation and that 4e-bp1 is either directly or indirectly regulated by PI3K.


text:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jma;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 *
 * @author vernkin
 */
public class ComparisonXmlUpdator {
    public static void updateComparisonXml(Document doc)
    {
        Element root = doc.getRootElement();
        Element differs = root.element("differs");
        Element stat = root.element("stat");
        if(stat == null)
            stat = root.addElement("stat");

        int upTotal = 0;
        int downTotal = 0;
        int sameTotal = 0;
        int sameError = 0;
        int upDiffError = 0;
        int downDiffError = 0;

        Iterator<Element> senItr = (Iterator<Element>)differs.elementIterator();
        while(senItr.hasNext())
        {
            Iterator<Element>  blocks = (Iterator<Element>)senItr.next().elementIterator();
            // ignore the origText, suggestion, N-best and feedback
            for(int i=0;i<4;++i)
                blocks.next();
            while(blocks.hasNext())
            {
                Element block = blocks.next();
                if(block.getName().equals("single"))
                {
                    ++sameTotal;
                    ++upTotal;
                    ++downTotal;
                    if(block.attribute("error").getValue().equals("1"))
                        ++sameError;
                }
                else if(block.getName().equals("double"))
                {
                    Element up = block.element("up");
                    Element down = block.element("down");

                    Iterator<Element> smallItr = (Iterator<Element>)up.elementIterator();
                    while(smallItr.hasNext())
                    {
                        ++upTotal;
                        if(smallItr.next().attribute("error").getValue().equals("1"))
                            ++upDiffError;
                    }

                    smallItr = (Iterator<Element>)down.elementIterator();
                    while(smallItr.hasNext())
                    {
                        ++downTotal;
                        if(smallItr.next().attribute("error").getValue().equals("1"))
                            ++downDiffError;
                    }
                }
            }
        }

        addXmlTextNode(stat, "upTotal", String.valueOf(upTotal));
        addXmlTextNode(stat, "downTotal", String.valueOf(downTotal));
        addXmlTextNode(stat, "sameTotal", String.valueOf(sameTotal));
        addXmlTextNode(stat, "sameError", String.valueOf(sameError));
        addXmlTextNode(stat, "upDiffError", String.valueOf(upDiffError));
        addXmlTextNode(stat, "downDiffError", String.valueOf(downDiffError));
    }

    private static void addXmlTextNode(Element fatherEle, String childName, String val)
    {
        Element ele = fatherEle.element(childName);
        if(ele != null)
        {
            ele.setText(val);
        }
        else
        {
            fatherEle.addElement(childName).addText(val);
        }
    }

    /**
     * Update All xml Counter
     */
    public static synchronized void updateAllXmlCounter()
    {
        File root = new File(StatisticManager.DB_PATH);
        File[] children = root.listFiles();
        int id = 0;
        for(File child : children)
        {
            try{
                id = Integer.parseInt(child.getName());
            }catch(NumberFormatException e){
                //only care about the directories with number as name
                continue;
            }
            updateXmlCounter(child, id);
        }
    }

    private static void updateXmlCounter(File father, int index)
    {
        File diffFile = new File(father, StatisticManager.DIFF_FILE_NAME);
        if(!diffFile.exists())
            return;
        try{
            Document d = FreqUtil.createDocument(diffFile);
            updateComparisonXml(d);
            FreqUtil.writeStringToFile(diffFile, d.asXML());

            // update the global statistic manager
            StatisticManager statManager = StatisticManager.getInstance();
            if (statManager.hasRecord(index) == false) {
                System.err.println(new java.util.Date());
                System.err.println("ComparisonXmlUpdator request to update record id " + index + ", which does not exist in StatisticManager.");
                return;
            }
            statManager.getRecord(index).setFromDocument(d);
        }catch(Exception ex){
            System.err.println("Error in update File " + diffFile +
                    " : " + ex.getMessage());
            ex.printStackTrace();;
        }
    }

    /**
     * Whether user do something on this sentence
     * @param sentEle
     * @return
     */
    private static boolean isModifiedSentence(Element sentEle)
    {
        Iterator<Element>  blocks = (Iterator<Element>)sentEle.elementIterator();
        blocks.next(); //origText
        if(blocks.next().getTextTrim().length() > 0) // suggestion
            return true;
        blocks.next(); //n-best
        if(blocks.next().getTextTrim().length() > 0) // feedback
            return true;

        while(blocks.hasNext())
        {
            Element block = blocks.next();
            if(block.getName().equals("single"))
            {
                if(block.attribute("error").getValue().equals("1"))
                    return true;
            }
            else if(block.getName().equals("double"))
            {
                Element up = block.element("up");
                Element down = block.element("down");

                Iterator<Element> smallItr = (Iterator<Element>)up.elementIterator();
                while(smallItr.hasNext())
                {
                    if(smallItr.next().attribute("error").getValue().equals("1"))
                        return true;
                }

                smallItr = (Iterator<Element>)down.elementIterator();
                while(smallItr.hasNext())
                {
                    if(smallItr.next().attribute("error").getValue().equals("1"))
                        return true;
                }
            }
        }

        return false;
    }

    private static void collectModifedSentencesForDoc(Document doc, Element destEle)
    {
        Element root = doc.getRootElement();
        Element differs = root.element("differs");

        Iterator<Element> senItr = (Iterator<Element>)differs.elementIterator();
        while(senItr.hasNext())
        {
            Element sen = senItr.next();
            if(isModifiedSentence(sen))
            {
                destEle.add((Element)sen.clone());
            }
        }
    }

    public static synchronized Document collectAllModifiedSentence()
    {
        File root = new File(StatisticManager.DB_PATH);
        File[] children = root.listFiles();
        List<File> diffFiles = new ArrayList<File>(children.length);
        for(File child : children)
        {
            try{
                Integer.parseInt(child.getName());
            }catch(NumberFormatException e){
                //only care about the directories with number as name
                continue;
            }
            File diffFile = new File(child, StatisticManager.DIFF_FILE_NAME);
            if(diffFile.exists())
                diffFiles.add(diffFile);
        }

        return collectModifedSentences(diffFiles);
    }

    public static Document collectModifedSentences(List<File> files)
    {
        Document doc = DocumentHelper.createDocument();
        Element root = doc.addElement( "jmacomp" );
	    Element differs = root.addElement( "differs" );
        Element stat = root.addElement( "stat" );
        stat.addElement("id").addText(JMAXmlServlet.STAT_ID);
        stat.addElement("name").addCDATA("Modified Sentences");

        for(File file : files)
        {
            if(!file.exists())
                continue;
            try{
                Document d = FreqUtil.createDocument(file);
                collectModifedSentencesForDoc(d, differs);
            }catch(Exception ex){
                System.err.println("Error in collect File " + file +
                        " : " + ex.getMessage());
                ex.printStackTrace();;
            }
        }

        updateComparisonXml(doc);
        return doc;
    }

    public static void main(String[] args) throws Exception
    {
        File f = new File("/home/vernkin/temp/seg-diff.xml");
        /*
         Document d = FreqUtil.createDocument(f);
        updateComparisonXml(d);
        System.out.println(d.asXML());
         */

        List<File> files = new ArrayList<File>();
        files.add(f);
        Document dd = collectModifedSentences(files);
        System.out.println(dd.asXML());
    }

}

redpajama_set_name: RedPajamaGithub


A great start for hopeful Manitoba Provincial Nominee Program applicants – 626 invitations has been issued to candidates in the draw released as on 17th January 2019. There are three streams through which Manitoba contributes to the economic growth of Canada those are Skilled Workers Overseas, Skilled Workers in Manitoba and International Education streams. 394 invitations were issued under Skilled Worker Overseas stream whereas 232 invitations were issued under-skilled workers in Manitoba stream. Both these streams are best the best alleyways for Indian applicants.
17th January draw issued some invitations to candidates from the express entry stream which is linked to the federal Express Entry system, which handles three main federal economic immigration programs — the Federal Skilled Worker Class, Federal Skilled Trades Class, and the Canadian Experience Class. Skilled Workers Overseas is an Express Entry-linked immigration module allowing Manitoba, one of the nine provinces to appoint appropriate Express Entry entrants for acquiring Canada PR. Once a candidate is issued with an ITA from Manitoba, the applicant is immediately awarded with 600 additional points towards their Express Entry ranking score which guarantees an invitation to apply for Canadian permanent residence candidate. All the express entry candidates who are interested to file their application under MPNP must register a separate EOI on factors based on education, age, experience, language etc. The score of the lowest-ranked Skilled Workers Overseas candidate in the two groups above was 575; however, the minimum score for candidates invited through a Strategic Recruitment Initiative was 729.
• Minimum age 21 years and maximum age 45 years.
• Minimum of 2 years of experience in relevant field.
Manitoba has one of the best and swiftest immigration applications processing time out of all 9 Canadian provinces. Most of the cases take the minimum of 4 months, however, the application needs to be verified at both the state and the federal level and for this entire process, the average processing time is between 12 to 15 months after meeting the cut off released by the state.
The minimal language proficiency required by the province is a CLB6 (Check the Clb to Ielts Converter) across all categories of the IELTS exam i.e. in reading, writing, speaking and listening. This requirement is lesser than the Federal Skilled Worker Express Entry program.
Fill out our free assessment form to get started today!
Don't get panic about the other fraudulent consultancies. AP immigration is one of the best service providers, way talking and way of behaving and service and genuine full and fully 5* if there 100* definitely I'll go for that. Especially Vickey thank you, bro, for clearing all of my doubt.
AP Immigration is an elite immigration consultancy and application assistance enterprise. We offer unparalleled immigration services to students and professionals alike for immigration primarily to Canada and Australia. We have no other branches in any part of India.


text:
Small Cap Growth Stock To Buy From IT - Subex
Subex, provider of fraud management and revenue assurance solutions to global telecom players, was one of the worst hit companies due to a slump in the telecom sector in the last eight quarters globally.
The company struggled to remain afloat as its clients from the telecom sector postponed investments in new projects. Now, the worst seems to be over for the sector. Telcos are showing signs of revival, which means that the investments could get back in the sector. This augurs well for Subex.
Subex earned Rs 600 crore in the last fiscal from product licences and managed services. Though products contribute over 90% of the revenue, the company is keen on improving the share of the services component as this offers higher margins in the long term. Subex offers solutions to more than half of the top 70 telcos in the world. Apart from its biggest market in the US, it has 54 clients in the African continent and six in India. It has 1,200 employees on its payroll. Its clientlist includes Bell, Comcast, T Mobile, Telefonica, Verizon, BT, Zain, Vodafone, BSNL, Reliance Communications, and Telstra among others.
Inorganic growth has played an important part in Subexs growth strategy. In the last five years it has acquired four companies in the field of revenue assurance, fraud management, and services fulfillment.
Between FY04 and FY07, the company grew its topline four times aided by acquisitions. Its net profit shot up by a similar magnitude during the said period. However, the next two years proved to be challenging given the slowdown in the global telecom sector. Though topline continued to grow, profits were hard to come by. The company reported losses at the operating level in FY08 and FY09 since costs escalated at a faster pace than the revenues.
The December 09 quarter reflects signs of revival as the company returned to profitability. It has also restructured foreign currency loans that are convertible into equity shares. This has reduced its debt burden by around 24%.
STOCK VALUATIONS:
Subexs trailing twelve month (TTM) P/E (price-earnings ratio) cannot be considered since the company had posted losses during the first half of FY10. Assuming stable earnings per share for each of the quarters in FY11, its forward P/E comes out to be 6.7 at the current market price of Rs 66 per share. This makes it reasonably valued among the other mid-tier IT players which command P/Es of eight-to-ten . The book value is at Rs.97 which makes this a value stock to buy.
GROWTH PROSPECTS:
Subexs 07 acquisition of services fulfillment player Syndesis went awry as global telcos cut new capex postsubprime crisis. Subex took a big hit because of this since it was betting on selling the next generation deliverables of Syndesis. Given the recovery in the telecom space currently, Subex is hopeful of reviving the Syndesis business. The company is also aggressively expanding its services portfolio, which would generate recurring revenue. With the restructuring of its FCCBs and other debts, its interest costs will fall. This will support its net margin in the future quarters. Investors can consider to buy stocks on a long-term basis.
Source:ET Investors Guide
Labels: IT-Telecom, Small Cap Stocks

redpajama_set_name: RedPajamaCommonCrawl


Thinking about new application architecture with Spring Cloud with Netflix OSS I've stuck on a problem of time you need to wait until the Ribbon client is ready to serve. It looks by default you need to wait 30s before server list is fetched from Eureka server and Ribbon load balancer can be used to route traffic to specific service. This is a pain in dev env because here we frequently need to restart services and test some results again and again. 30s is not an option, so I've been looking for decreasing this time what finally turned out to be a difficult thing.
* This is an example controller method doing request using ribbon load balancer.
So, we call this application a template, it will work on 39199 port and it should be registered in Eureka Discovery Service working on port 39101. After registration the application is visible in Eureka and returns its Hello World! string at http://localhost:39199/. However, it should return also the same string at http://localhost:39199/test but this time it gets this data by a remote call. Instead of using plain URL to access itself through HTTP it uses Ribbon load-balanced RestTemplate and template service name.
$ tail -f template.log | grep "addServer\|clearing"
First, the Eureka client needs to register into Eureka server what is done after the first heartbeat, and this heartbeat is sent by default after 30s. This is controlled by eureka.instance.leaseRenewalIntervalInSeconds property on the client side.
Then, the Eureka client needs to get config from Eureka server. However, Eureka server caches reposponses to clients so the newly registered service may not be seen until the cache is invalidated. The refresh timeout for the cache is by default 30s and is controlled by eureka.server.response-cache-update-interval-ms property on the server side.
When the Ribbon balancer wants to get services list from Eureka client, Eureka client will use another cache, which is its own local cache of previously fetched services list from Eureka server. This is another cache with 30s refresh rate controlled by eureka.client.registryFetchIntervalSeconds property on the client side.
To make things cached yet again, the Ribbon balancer holds its own server list cache. You'd never guess, but it is refreshed every 30s by default and is controlled by ribbon.ServerListRefreshInterval (or <clientName>.ribbon.ServerListRefreshInterval) property on the client side.


Houston in the 1920s is a city of established cotton kings and newly rich oil barons, where the elite live in beaux art mansions behind the gates of Courtlandt Place. Kirby Augustus Allen, grandson of the Allen brothers who founded Houston as a real estate deal, is grooming his daughter Hetty to marry Lamar Rusk, scion of the Splendora oil fortune. Instead, at the No-Tsu-Oh Carnival of 1928, beautiful, rebellious Hetty encounters a mysterious man from Montana dressed in the gear of a wildcatter--an outsider named Garret MacBride. Hetty is torn between Lamar's lavish courtship and her instinctive connection to Garret. As Lamar's wife she would be guaranteed acceptance to the highest ranks of Houston society. Yet Garret, poor but powerfully ambitious, offers the adventure she craves, with rendezvous in illicit jazz clubs and reckless nights of passion. The men's intense rivalry extends to business, as rumors of a vast, untapped ocean of oil in East Texas spark a frenzy that can make fortunes--or shatter lives and dreams beyond repair. A sweeping, sumptuous debut that evokes the turmoil and drama rippling through the history of the Lone Star State, Magnolia City is a story of love, greed, jealousy, and redemption, brought to life through the eyes of its unforgettable heroine.
I was ecstatic when I finished Duncan W. Alderson's Magnolia City, euphoric even. I'd come, I'd read, and though it was an uphill battle from the beginning, I had conquered. This smug sense of triumph set the tone for my review, imbuing my commentary with a sarcasm Alderson's work didn't necessarily deserve, something I realized while proofing my work. Don't misunderstand, I am still delighted at being done with this book. I'm simply acknowledging that quiet reflection afforded an appreciation for the story that was not evidenced until I'd said goodbye to Hetty Allen, Lamar Rusk and Garret MacBride.
From a historical perspective, Magnolia City is a masterpiece. Layers of minute detail provide an astounding backdrop, effectively transporting readers to a bygone age. Alderson's subtle manipulation of fact is delicately refined and so seamless that one hardly realizes where truth meets fiction.
Alderson's prose adds another dimension to the narrative. The glittering opulence of Bayou Bend, the fiery burn of mescal, the unmistakable scent of oil fresh from the earth. His evocative and lyrical descriptions produce a piercingly vivid portrait, one that wholly immerses his audience in Hetty's experiences and complex affairs.
The problem I have with this piece, is its length. Alderson's themes are introduced early on, but they so vague and scattered that pinpointing their nature and connecting one to the next is a practical impossibility. I'm not exaggerating, I spent most of the narrative frustrated at what I identified as lack of direction, fighting the urge to scream at what seemed a mishmash of unrelated concepts. I often felt lost in the immense scope of the narrative and though I was ultimately impressed with Alderson's thesis, I can't help feeling the novel is about two hundred pages longer than it needs to be.
Would I recommend the book? I don't know. I suppose it would depend on the reader. Magnolia City is by no means an easy read and might not be the best choice for those seeking immediate satisfaction, but it is a dramatic and emotionally poignant story that shouldn't be undervalued.
"The Old Houston and all it stood for, is demolished. We're living in a Depression, in case you hadn't noticed. We can't afford these pretensions anymore."
Xerxes, the Great King of Persia invades Greece in 480 B.C. at the head of over a million barbarians. 300 Spartan's led by King Leonidas die heroically blocking the Persian advance at the pass of Thermopylae. The Persians are poised to conquer all of Greece. The only one standing in their way is a woman – Gorgo, Queen of Sparta. Though history has relegated her role to an interested bystander, what if she played a central part at the heart of the Greek resistance to the Persian invasion. What if she kept her true role a secret in order to play it more effectively? What if she was hiding other secrets too – dark secrets of murder and vengeance? What if the only person who truly appreciated her genius was an enemy prisoner? What if after their victory, the Greeks start to turn on each other? What if, eventually, Gorgo has to choose between the security of Sparta and safety of her son? And what if the only one who could find a way out is the same prisoner whom she has vowed to kill?
When I looked at T.S. Chaudhry's The Queen of Sparta I told myself $9.99 was too much for a kindle book, I told myself I'd regret it, I told myself to wait for a detailed review, and then I told myself to shut up... not one of my better moments, I assure you.
The Queen of Sparta is fact heavy, so much so that reading it felt like attending an academic dissertation. The text is chock full of names, pedigrees, alliances, military campaigns and political discourse. Don't get me wrong, meticulous research is well and good, but trying to keep up with this piece was mentally exhausting, especially as my understanding of the Peloponnesian War is limited to the basics. The end result is informative, but also taxing and that is not something I particularly appreciate in fiction.
There is no thematic material to be seen in this piece. No underlying ideas or motifs. The story is glaringly self-evident, lacking both drama and tension. There is not a single character arc in the entire novel, nor a clearly defined antagonist for that matter. Yes, the idea that Gorgo might have been the mastermind behind the Greek resistance is intriguing, but it does not make a story in and of itself. Chaudhry needed to bring depth and dimension to the narrative and his failure to so left me disheartened and unsatisfied.
The narrative is almost entirely driven by dialogue, conversations that are splendidly eloquent, but wooden and uninteresting for their excessive exposition. The characters are universally flat and static, with many like Elpinince, Lampito and Cleonice who seem to exist for the sole purpose of expounding superfluous accounts of archaic detail. Even Gorgo's relationship with Sherzada lacks tangible emotion.
To be perfectly honest, I feel cheated of both my time and money. This piece had loads of potential, but the reality of its execution left much to be desired.
Battle, they say, is everything that manhood is about; the very epitome of glory. But what glory, I asked myself, is there in a spear-point sticking out of a jaw or a mangled headless body rotting on the ground?
Author interviews are one of my favorite things to post which is why I am super excited to welcome author Carol M. Cram to Flashlight Commentary to discuss her latest release, The Towers of Tuscany.
Welcome to Flashlight Commentary Carol. Great to have you with us. To start things off, please tell us a bit about The Towers of Tuscany.
The Towers of Tuscany tells the story of a fictional woman artist in fourteenth century Italy. As far as we know, there were no female artists in 14th century Italy. We do know that nuns in convents illuminated manuscripts and women artisans in northern Europe created embroideries and other textiles. However, women were not known to have worked on the panels, altarpieces, and frescoes that adorned the churches and palazzos of Italy during the period 1338 to 1348 covered by the novel. I was intrigued with the possibility that a woman could have been a painter, even if she had to do so in secret. I knew that painting in the 14th century was very much a family affair. The master painter (the maestro) ran a workshop where he trained his sons and worked with his brothers and other family members. I got to thinking that a master painter who had a daughter and no son could well have trained her in the painter's trade. Like fathers through the ages, the father of Sofia, my heroine, adored his young daughter and so when his wife died, he trained his daughter as his apprentice and took her with him to fulfill painting commissions all over Italy. I consulted with Dr. Efrat El-Hanany, an expert in the art of the period who teaches at Capilano University in North Vancouver, and she agreed that the existence of a woman painter in the 14th century, while not likely, was certainly plausible. That's all I needed to get going and invent Sofia!
Historically speaking, what research went into The Towers of Tuscany and did you discover anything particularly surprising while investigating material for the book?
I read quite a few books, consulted with some experts in the art of the period, and traveled to Italy where I spent a great deal of time looking at the art and just wandering the medieval streets of San Gimignano and Siena. One of the coolest things I found in my research was a museum called San Gimignano 1300 in San Gimignano, the Tuscan city of towers where much of the novel takes place. This museum includes an incredible scale model of San Gimignano as it appeared in the year 1300. I took numerous pictures of the model so that when I returned home to Bowen Island (near Vancouver, BC), I could imagine Sofia walking through the narrow streets and painting in her tower room. Here is a close-up of the scale model. Readers can imagine Sofia painting in a small room at the top of one of the towers.
Sofia is a painter. Are there any panels that inspired you while writing your narrative?
I love the style of art of the period, particularly frescoes that showed secular subjects. The vast majority of the art of the period was religious. However, some painters were starting to depict architecture, daily activities, and regular people, particularly in frescoes. Sofia actually paints a view of the towers of San Gimignano at the end of the novel. Landscape paintings were extremely rare during this period; however, painters were starting to experiment and I wanted to make my Sofia one of those painters. Her painting is inspired by a real painting done by Ambrogio Lorenzetti in the 1340s. Here's a picture of it. Sofia's painting would have been similar to this—very stylized and, in my opinion, just wonderful!
You probably have many, but is there a scene that particularly stands out to you?
I think my favorite scene—and one of the most difficult to write—was the scene when Sofia rejects the life that Matteo Salvini offers her. Like many of my readers, I wanted Sofia to get her man and continue to paint. But like Sofia, I knew that as the wife of a nobleman of Siena, Sofia could not possibly continue painting. I've had some readers say that surely, over time, Sofia could have convinced Matteo to let her paint again and I suppose that could have happened. But for Sofia, the risk that Matteo would never allow her to paint again was just too great. She'd made the mistake once of marrying a man who turned into a tyrant. She could not afford to make the same mistake twice. Writing the scene where she refuses Salvini, then regrets her decision, then realizes that she is right was difficult. Sofia is a woman of the 14th Century. She would not think the way a modern woman thinks about freedom and self-expression. Such concepts would be foreign to her. However, Sofia is guided throughout the novel by her emotions rather than by her intellect. Her heart knows that she must choose a life of uncertainty and the constant fear of exposure over a life of security and ease.
This scene is pivotal because it dramatizes Sofia's attempt to control her own destiny. Of course bad things happen to her (it's a novel!), but she is definitely not a victim. For example, when faced with an abusive marriage, Sofia finds the courage to leave. And when she is returned to San Gimignano against her will, she combats despair by choosing to love her unborn child.
What scene posed the greatest challenge for you as an author?
The scene described above was one of the most challenging to write, but another scene was when Sofia held her dying son and realized she had to leave him to save her daughter and herself. At that moment, Sofia also realizes that she has not been a good mother to her son. She resented and neglected him and now he is dying of the plague. It was tough to show her sorrow and her regret while still giving her a way to justify leaving her son and escaping the city with Antonia and Marcello.
What would you say is the central theme of the novel?
The central theme of the novel is the triumph of the creative spirit. In the modern epilogue, Marla purchases Sofia's painting and returns it to exact location where it had been painted 700 years ago. Sofia does not survive because, of course, she could not live forever. However, her work does survive and one of her paintings helps a grieving woman find the strength she needs to care for her own unborn child in the aftermath of a terrible tragedy. I believe in the healing power of creative endeavor—art, music, writing, theatre. When people are engaged in creating art, they are fully present and operating, I think, in the spirit realm. By that I mean that the act of creating something new that has as its central purpose the engagements of minds and hearts is one of our greatest pursuits as human beings. When we are creating, we cannot be destroying.
Sofia's complex relationship with Giorgio isn't ideal. How did you approach this aspect of her story and what do you hope readers take from it?
In the 14th Century (and in the 21st Century in certain parts of the world), many girls were not allowed to choose their husbands. I decided to play a bit with this convention and have Sofia's father allow her to choose her husband, and then to have her make the wrong choice. Maestro Barducci, Sofia's father, knows that Giorgio Corelli is not the right choice for his bright, headstrong daughter. However, Barducci's weakness is that he is a very fond father. He is strict with Sofia in the workshop, but he really is incapable of denying her anything she really wants. When Sofia asks to marry Giorgio, Barducci gives his consent. Ironically, Sofia might have been better off in an arranged marriage, although we'll never know. What we do know is that Sofia comes to regret her decision to marry Giorgio. At twenty years old, after four years of a childless and increasingly loveless marriage, she knows she has only herself to blame for choosing Giorgio over a life in her father's workshop. I guess what I'm thinking readers may take from the story of Sofia's relationship with Giorgio is that poor choices are nothing new. Many women marry the wrong guy and live to regret their decision. I also really wanted to make sure readers understand that Sofia is not a victim; she suffers as a result of her own choices. This doesn't mean, of course, that she deserves to suffer, only that she has the capability to make bad choices and good choices, as we all do.
Historical novelists frequently have to adjust facts to make their stories work. Did you have to invent or change anything while writing The Towers of Tuscany and if so, what did you alter and why?
All the events in The Towers of Tuscany are fictional. Examples include the attack on the Delpino palazzo in San Gimignano, Sofia's desire to go to a shrine on the road to Florence (I know of no such shrine), the attack in the woods on the way from San Gimignano to Siena (I don't know if such woods existed), and Sofia's viewing of the frescos in the Palazzo Pubblico (I don't know if the public would be allowed into the palazzo to view the frescoes). The frescoes themselves certainly existed at the time Sofia viewed them. The beautiful Duccio panels that Sofia views in Siena cathedral and the works of art she refers to in San Gimignano are also real and still exist. All references to streets and places in San Gimignano and Siena are real. The tower across the valley from San Gimignano that Marcello takes Sofia and Antonia to escape the plague is also real. In the epilogue, the villa built on top of the foundations of the 12th Century tower also exists. The villa was built in the early 1800's and is now a fabulous bed and breakfast that I stayed in. For the purposes of the epilogue, I made the villa a private home.
If you could sit down and talk with one of your characters, maybe meet and discuss things over drinks, who would you choose and why?
I think I'd choose Francesco. While I love Sofia, she is quite a formidable, strong-willed character. I am very fond of Francesco. He is the only character who loves Sofia unconditionally and is completely loyal to her. If Sofia had lived, Francesco would have taken care of her. Fortunately, Francesco will take care of Sofia's daughter Antonia. He will take her to Siena and see that she is looked after. And yes, I'm considering a sequel—what happens to Antonia in Siena? Does she meet her father Salvini? Does she grow up to be a painter?
Authors are famous, or infamous depending on your point of view, for writing their own experiences, friends and acquaintances into their narratives. Is there anything in The Towers of Tuscany that sprung directly from your personal history?
The descriptions of the Tuscany countryside and the streets and piazzas of San Gimignano and Siena all come from my own experience of them (but without the filth!). Otherwise, all the characters are from my imagination. One very small incident that does come from "real life" is when Sofia mentions that a rat gnawed a chunk of her hair one night while she slept. Readers may think of that incident as an example of the terrible conditions in medieval Italy, but I have four very dear friends who know otherwise. A few years ago, I went with these four friends who I have known since childhood, for a girl's weekend away. We rented a lovely cabin on the beach near Sechelt on the west coast of British Columbia. One of my friends chose to sleep on the floor in the main room. She was awakened in the night by a rat gnawing at her hair! Needless to say, she was not pleased. I couldn't resist putting that incident into the novel knowing that my four friends would get a huge kick out of reading it. And now everyone knows!
Okay, we've talked a lot about your book. Let's switch gears and talk a little bit about you. How would you describe your writing process?
I'd like to say that I sit down at 9 am, write until noon, have a light lunch, then write until dinner but unfortunately that is not true! I write in short, furious spurts—often in public places. I love to write in coffee shops and restaurants, and on the ferry. I live on an island off the coast of Vancouver, BC, and need to take a 20-minute car ferry when I want to go into the city. It's surprising how much writing I can get done during the crossing when I have no Internet to distract me (so long as I leave my phone in the car).
Much to my husband's dismay, one of my most creative times for writing when I'm at home is from 5 to 6:30 in the evening (right at our dinner time!) I am the cook in the family and have burned many a meal while writing just one more sentence. Fortunately, my husband is a painter and understands the creative process. He's incredibly supportive (and sometimes rather hungry).
Two words: writer's block. How do you deal with it?
I treat myself to a few days away in a hotel or resort in one of BC many scenic locales. I get easily distracted by the admittedly exhilarating activities related to marketing The Towers of Tuscany and so I am finding it challenging to work on the next novel. For example, this week I'm taking off to write in a sphere that hangs thirty feet in the air suspended between three trees. Here's a picture of my sphere (more pictures at http://www.freespiritspheres.com). I hope I get lots of work done; I'll be in there for about 48 hours.
Jane Austen, hands down, followed by an eclectic selection that includes L.M. Montgomery, J.K. Rowling, Tracey Chevalier, Marion Keyes, and Maeve Binchy in addition to fun reads like Nora Roberts and Sophie Kinsella, historical fiction that helps me learn about a certain period while also delivering a great story (Follett, Michener, Alison Weir, Deborah Swift and so many more that I'm just discovering and haven't had a chance to read yet), literary fiction by some of our wonderful Canadian authors (Ivan Coyote, Margaret Lawrence, Will Ferguson, Richard Wagamese), and lots more that I can't think of at the moment.
I'm just starting my three-day writing retreat so the only thing I'm reading are research books, including the biography of Clara Schumann because my next novel is about a female concert pianist and composer in 1830's Vienna. When I'm actually writing (as opposed to editing), I don't read much fiction. For some reason when I'm writing scenes and developing characters, I don't want to be influenced by other people's work. This is unfortunate, because now that I'm writing fiction full time, I don't have nearly as much time available for reading fiction. And a good writer must read!
What do you like to do when you're not writing? Any hobbies?
I love to travel and when I'm not traveling I love planning trips. In the fall of 2014, I'm going to Vienna to do the final bits of research for my next novel (hopefully due out in November 2014) and then to Bath and London to research the third novel that is set in the theater in 1809. My daughter is then flying to London and we're going to do a quick car trip through Scotland where maybe I'll find even more inspiration! I also play piano, teach Nia dance (www.nianow.com), go for walks in the forest near my home on beautiful Bowen Island, and volunteer as president of the local arts council. Thanks to a great career as an author of textbooks for a major US publisher (Cengage Learning), I am now very blessed to have the freedom to pursue my new career as an historical novelist.
Where do you stand on the coffee or tea debate?
Coffee most of the time because my husband makes the best coffee and he brings me a cup of fresh coffee most afternoons (I get the morning ones myself!). When I'm on my own, I drink tea simply because I don't know how to make coffee as well as my husband does.
And finally, what's next for you? Do you have a new project in the works? Planning a vacation? Anything exciting and/or noteworthy?
My goal is to develop a series of historical novels with an arts twist. Each novel will focus on a particular art genre—painting, music, theater, etc. My next novel (working title: Nocturnes) is about a six foot tall concert pianist and composer named Isabette Grüber. The novel opens in Vienna on March 29, 1827, the day of Beethoven's funeral, and follows Isabette as her career intersects with Schubert and Chopin and she copes with numerous challenges that threaten her livelihood, her passions, and perhaps even her mind. Stay tuned!
Carol M. Cram has enjoyed a great career as an educator, teaching at Capilano University in North Vancouver for over twenty years and authoring forty-plus bestselling textbooks on business communications and software applications. She holds an MA in Drama from the University of Toronto and an MBA from Heriot-Watt University in Edinburgh, Scotland. Carol is currently focusing as much of her attention as she can spare between walks in the woods on writing historical novels with an arts twist.
She and her husband, painter Gregg Simpson, share a life on beautiful Bowen Island near Vancouver, Canada.
Set amid the twisting streets and sunlit piazzas of medieval Italy, the Towers of Tuscany tells the story of a woman who dares to follow her own path in the all-male domain of the painter's workshop. Sofia Barducci is born into a world where a woman is only as good as the man who cares for her, but she still claims the right to make her own mistakes. Her first mistake is convincing her father to let her marry Giorgio Carelli, a wealthy saffron merchant in San Gimignano, the Tuscan city of towers. Trained in secret by her father to create the beautifully-crafted panels and altarpieces acclaimed today as masterpieces of late medieval art, Sofia's desire for freedom from her father's workshop leads her to betray her passion and sink into a life of loveless drudgery with a husband who comes to despise her when she does not produce a son. In an attack motivated by vendetta, Sofia's father is crushed by his own fresco, compelling Sofia to act or risk the death of her soul. The choice she makes takes her on a journey from misery to the heights of passion—both as a painter and as a woman. Sofia escapes to Siena where, disguised as a boy, she paints again. When her work attracts the notice of a nobleman who discovers the woman under the dirty smock, Sofia is faced with a choice that nearly destroys her. The Towers of Tuscany unites a strong heroine with meticulously researched settings and compelling characters drawn from the rich tapestry of medieval Italy during one of Europe's most turbulent centuries. The stylishly written plot is packed with enough twists and turns to keep readers up long past their bedtimes.
Carol M. Cram's The Towers of Tuscany is a tough book for me to review. It's a nice story, with strong themes and I think it offers interesting insight to the painter's trade, but it is an emotion driven drama which was something of a challenge as I am naturally drawn to conflict based narratives or complex political intrigues. I say this so that readers might understand my point of view and take my rating with a grain of salt.
My favorite aspect of the piece were the details regarding Sofia's trade. The creation of the panels and frescos, from their earliest design to the mixing of the colors, Cram's illustration of technique captured my imagination and more than once sent me in search of examples from the period. Art is about passion and the intricate details and descriptions found here forced Sofia's enthusiasm and zeal from the page in a display of spirit that even one such as myself couldn't help but appreciate.
I also liked the depth Cram created within these pages. The flashbacks in particular allow the reader a deep understanding of Sofia's background and experience while adding significant perspective to the decisions she makes later in life. The larger picture develops slowly, but like a painting, the layers build on one another, each added texture and dimension to the finished product.
The characters themselves didn't speak to me, but that probably has more to do with my background and interests than it does anything else. Again, I have trouble with deeply personal themes and ask that be taken into account when considering this particular review.
Pleasantly enjoyable and well-researched, The Towers of Tuscany delves into the trials faced by centuries of women as they struggle to be heard in a male dominated society.
Her skill with a brush might not be enough. Doubt after doubt roiled through her, weakening her knees, making her want to fall again to the earth, bury her face in the leaves, and pray for death. To go back meant Giorgio and the end of all painting. To go forward might mean imprisonment, even death.
Penelope MacLaughlin marries a miller and gradually discovers he is not as she imagined. Nonetheless she remains determined to make the best of life at the lonely mill up the Gunn Brook as she struggles to build a home around her husband's eccentricities. His increasing absence leaves Penelope to run the mill herself, providing her with a living but also destroying the people she loves most. Penelope struggles with loss and isolation, and suffers the gradual erosion of her sense of self. A series of betrayals leaves her with nothing but the mill and her determination to save her grandchildren from their disturbed father. While she can prepare her grandsons for independence, her granddaughter is too young and so receives the greater gift: the story that made them all.
Much like Anna Hope's Wake, I found Linda Little's Grist difficult to get into. Harshly emotional and more than a little sobering, I felt like I'd run a marathon by the time I finished the book and was, quite frankly, happy to done with it. I drafted my review soon after, but it languished in my pending folder for weeks before I returned to polish it.
Usually, this is where I reword the entry, format the coding for my blog post, add an image if applicable and check my grammar, but that didn't happen with Grist. Somewhere along the line the themes had settled in and while I still feel it a challenging piece, I found I truly appreciated the ideas and motifs Little worked into the narrative.
Penelope is dealt a rough hand, but manages it with an atypical sort of strength. She's different, but her subtleties are uniquely attractive. Her husband, when one really considers him, is equally complex despite his dark and ugly nature. Interesting if not admirable, he is as unconventional as his spouse. An antagonist one can despise, but almost understand in his insanity.
The shifting point of view, especially when focused on the supporting cast, was distracting and the pacing left much to be desired, but under that exists something truly special. An enduring message of perseverance, courage and hope in the face of overwhelming heartache and oppression that haunts the reader long after the final page.
This is the story of how you were loved. All that came before, all you saw and heard, all you lost and lived without, this will be the truth to carry you, Granddaughter. Your brothers can walk into a world built for men. They will become men with wives to make them kings of their homes and to carry their pain and produce their joys. Truth would only slow them down. But you, my granddaughter, this is yours—the story that made you.
Author interviews are one of my favorite things to post which is why I am super excited to welcome author G.K. Holloway to Flashlight Commentary to discuss his latest release, 1066: What Fates Impose.
Welcome to Flashlight Commentary. Great to have you with us. To start things off, please tell us a bit about 1066: What Fate Impose.
Historically speaking, what research went into 1066: What Fates Impose and did you discover anything particularly surprising while investigating material for the book?
I spent many hours on research for the book, which mainly comprised reading secondary sources. I did enjoy visiting locations that feature in the book including battlefields, Bosham and also Bayeux, to see the famous tapestry. What I found particularly surprising was just how wealthy, powerful, cultured and democratic, if only in a fledgling kind of way, England was at that time.
Oh, that's a hard one to answer. I'm particularly proud of some of the battle scenes and also the court intrigues and methods of disposing of a rival but there are two scenes in particular I really enjoyed writing and they are; Godwin's return from exile and his arrival in London. I would love to have been there. But the opening scene where the dying William is confronted by his past, overwhelmed with guilt and filled with fear about his future, which is likely to be in hell, stands out for me.
The scene in the mill! Anyone who's read the book will know exactly what I mean. The Normans went to extremes in the south after they had landed. They were particularly brutal even in a brutal time and I attempted to distill their savagery and the consequences for the native population in to one scene. The idea was that the reader would be informed as to exactly what the English had to fear and why Harold felt he needed to act so urgently.
How much are we in control of our own destinies?
Sometimes fiction takes on a life of its own and forces the author to make sacrifices for the sake of the story. Is there a character or concept you wish you could have spent more time with or expanded on?
All of them really! There is a lot of historical fact to deal with so I felt inclined to deal with the major players but because of the constraints some characters, two of Harold's brothers in particular, haven't had the exposure they deserve.
Historical novelists frequently have to adjustment facts to make their stories work. Did you have to invent or change anything while writing 1066: What Fates Impose and if so, what did you alter and why?
There is surprisingly little invention in the novel. The era is an absolute gift to novelists. I am amazed there aren't as many books about the period as there are about the Tudors for instance. In Queen Elizabeth's time there was the fear of The Spanish Armada. In 1066 there were two armadas! Henry VIII made an enemy of the Pope, so did Harold, albeit for different reasons. In Tudor times political intrigue was rife, the same was true in Anglo Saxon England. There is just so much going on I didn't need to make much up – there's even a comet appearing in the sky at exactly the right moment. What more could anyone possibly want?
King Harold would be my first choice. There are millions of questions I'd love to ask him especially the decisions he made in those few weeks in the autumn of 1066. The decisions he made then were crucial to his and England's survival. History could have been so different. You didn't specify when I would meet one of my characters. I've taken the liberty of assuming you meant going back to their time era. In which case there might even be the opportunity to offer Harold some advice – who knows what the consequences of that might be?
What do you hope readers take away from their experience with your novel?
At the risk of sounding pretentious, if they had a clearer idea about how much they control their destinies that would be great. But if at least they enjoy a stomping good read and feel more informed about a major historical event then I'd be very happy about that. Finally, if they just managed to escape the troubles and pressures of their own lives for a few hours, I'd be happy with that, too.
Authors are famous, or infamous depending on your point of view, for writing their own experiences, friends and acquaintances into their narratives. Is there anything in 1066: What Fates Impose that sprung directly from your personal history?
Some of the characters in the book are based on people I know or used to know, including a murderer. I won't say which character is based on what friend for obvious reasons but as I was writing about a character an image would appear in my mind's eye. On another level, every year in a place called Abbotts Bromley there is a horn Dance. It lasts all day and involves a group of about a dozen men parading about the village and surrounding area with deer antlers on their heads, a hobby horse rider and a man with a pig's bladder on a stick hitting maidens on the head to make them pregnant. The antlers used are used once a year for this purpose only. They have been dated to pre-1066. This ritual was written into the novel.
Okay, we've talked a lot about your book. Let's switch gears and talk a little bit about you. How would describe your writing process?
Chaotic; a kind of controlled anarchy. I had quite a good idea of what I wanted to do, where I wanted to start and end. I also had pretty firm ideas about which characters would appear in the novel. The thing is, as I learned more about the period ideas would come into my head, including in dreams, and so I would write them into the book. I honestly think, if it wasn't for computers and the flexibility they give you, I'd never have finished.
Go for a walk. That sounds trite, I know, but I live in a particularly beautiful part of Bristol with easy access to Durdham Downs. It takes an hour at most to complete a circuit, so on those rare occasions when I get stuck, I take a walk I don't know if it's the rhythm of walking that frees the imagination or the fresh air that gets the creative juices flowing but it works for me.
Richard Ford, William Boyd, Ian McEwan, Pat Barker, Barbara Tuchman, Cormac McCarthy, Carlos Ruiz Zafon, George Orwell – to name but a few.
All Hell Let Loose by Max Hastings. I'm finding it totally engrossing. It's a comprehensive history of the Second World War. He manages to discuss the strategy of high command and the experiences of the common soldier or some innocent civilian with consummate ease.
I love music, photography, reading, walking, travel and generally pottering about.
I don't stand anywhere; I sit on the fence. I drink coffee in the morning and tea in the afternoon.
I'm 56,000 words into the sequel to 1066 which I'm already looking forward to publishing. As for vacations, I've recently returned from a long weekend in Iceland which I think is one of the most amazing places I've ever seen. I'm also arranging a surprise holiday in November to celebrate my wife's birthday. She knows we're going away but doesn't know where we're going. I only hope it lives up to Iceland.
I have been interested in history since I was a boy, which I suppose explains why, when I came across a degree course in History and Politics at Coventry University that looked tailor made for me, I applied right away.
In my first year at Coventry I lived in the halls of residence within a stone's throw of the Leofric Hotel. In the opposite direction, just a short walk from my halls, is the bell tower that houses a clock, which when its bell chimes the hour, produces a half size model of naked Lady Godiva riding a horse for the titillation of tourists. Above her, Peeping Tom leans out of a window for a better view. In all of the three years I was there, it never once occurred to me that I would one day write a book featuring Earl Leofric and his famous wife, as key players.
After graduating I spent a year in Canada before I returned to England to train as a Careers Officer in Bristol. Later, I lived and worked in Gloucestershire as a Careers Officer and then in Adult Education as an Education Guidance worker.
After I met my wife, I moved back to Bristol to live and I worked at Bath Spa University as a Student Welfare Officer for a number of years. It was about this time I read a biography about King Harold II which fascinated me so much I read more and more about the man and the times. I found the whole pre-conquest period of England so interesting I couldn't understand why no one had written a novel about it. So, I decided to write one myself. Now, after many years of study and time spent over a hot keyboard, I have finally produced thatnovel.
1066: What Fates Impose is the result of all that study and hard work and is the first book I've written. I am now working on a sequel.
In accordance with FTC Guidelines, I disclose how I obtained every title for review at Flashlight Commentary. Books accepted free of charge were provided with the understanding that gifted material is subject to the same unbiased review standard I use for titles I purchase.
Flashlight Commentary claims no credit for any images posted on this site unless otherwise noted. Images on this blog are the copyright property of their respective owners. Any image without an attribution is, to the best of my knowledge, free of copyright in the United States.
If there is an image on this blog that belongs to you and you do not wish for it appear on this site, please notify me at the email address below my FAQs and your work will be promptly removed.
Layered Pages | Interviews, Book Reviews, Guest Post and More!


text:
Students tackle human rights and crime fighting at 2019 NMLS lecture
Published:Sunday | March 24, 2019 | 12:27 AMNickoy Wilson - Gleaner Writer
Scott-Mottley
Amid concerns about human-rights infringements during the government-imposed states of public emergency and zones of special operations (ZOSOs), Norman Manley Law School students will this Tuesday host their annual lecture at The University of West Indies, Mona, focusing on striking a balance between crime fighting and human rights.
The annual lecture, being held under the theme 'ZOSO: The Balance – Human Rights and Crime Fighting', will explore the administration of the ZOSOs, as well as similar regimes, and their socio-economic impact on the rights of citizens.
Kenisha Gordon, member of the Norman Manley Lecture Committee, said that the topic was chosen given the controversy surrounding the execution of the crime-fighting strategies – ZOSO and the states of public emergency – and their infringement on human rights.
"We feel like having this discussion would be important, especially for Kingstonians, to understand the dynamics of the legislative framework and what it is that it's trying to achieve because there has been a lot of contention as it relates to its purpose and how it has been affecting human rights as it relates to the detention aspect and how persons have been treated," Gordon told The Gleaner yesterday.
Among the speakers slated for the event are National Security Minister Dr Horace Chang, Opposition Spokesperson on Justice Senator Donna Scott-Mottley, Deputy Public Defender Herbert McKenzie, and President of the Cornwall Bar Association Stacy-Ann Young.
ZOSOs were imposed on Mount Salem, St James, and Denham Town, Kingston, while SOEs were imposed on St James, the St Catherine North Police Division, and sections of the Corporate Area.
Despite resulting in a reduction in crime in areas where they were imposed, all SOEs lapsed at the end of January after the Parliamentary Opposition refused to vote in favour of their extension.
The People's National Party cited that further extensions would be in breach of the constitutional rights of those affected.
nickoy.wilson@gleanerjm.com
«Brown alleges more corruption at education ministry
Religion & Culture | Ancestor Veneration: The benefits of communicating with loved ones (Pt1) »


text:
BIN = ./bin/graphmap-not_release
BIN_DEBUG = ./bin/graphmap-debug
BIN_LINUX = ./bin/Linux-x64/graphmap
BIN_MAC = ./bin/Mac/graphmap
OBJ_TESTING = ./obj_test
OBJ_TESTING_EXT = ./obj_testext
OBJ_DEBUG = ./obj_debug
OBJ_LINUX = ./obj_linux
OBJ_EXTCIGAR = ./obj_extcigar
OBJ_MAC = ./obj_mac
SOURCE = src
CODEBASE = codebase
# This finds all 'src' folders at maximum depth 2 (level one inside each submodule's folder).
CODEBASE_SRC_FOLDERS = $(shell find $(CODEBASE) -maxdepth 2 -type d -name "src" -exec echo "-I"{} \;)
# $(shell find $(CODEBASE) -maxdepth 3 -type d -name "libs" -exec echo "-I"{} \;)
# $(shell find $(CODEBASE) -maxdepth 2 -type d -name "src" -exec echo "-I"{}"/*/" \;)

# ? allows override by user using env var
GCC ?= g++
# define variables for GCC version check here
GCC_MAJOR_VERSION_GE_4 := $(shell expr `$(GCC) -dumpversion | cut -f1 -d.` \>= 4)
GCC_MINOR_VERSION_GE_7 := $(shell expr `$(GCC) -dumpversion | cut -f2 -d.` \>= 7)
GCC_MAC ?= /opt/local/bin/g++-mp-4.8

# CPP_FILES := $(wildcard $(SOURCE)/*/*.cpp) $(wildcard $(SOURCE)/*.cpp) $(wildcard $(SOURCE)/libs/*/*.cpp)
# CC_FILES := $(wildcard $(SOURCE)/*/*.cc) $(wildcard $(SOURCE)/*.cc) $(wildcard $(SOURCE)/libs/*/*.cc)
# H_FILES := $(wildcard $(SOURCE)/*/*.h) $(wildcard $(SOURCE)/*.h) $(wildcard $(SOURCE)/libs/*/*.h)
CPP_FILES :=  $(wildcard $(CODEBASE)/*/src/*.cpp) $(wildcard $(CODEBASE)/*/src/libs/*/*.cpp) $(wildcard $(CODEBASE)/*/src/*/*.cpp) $(wildcard $(SOURCE)/*/*.cpp) $(wildcard $(SOURCE)/*.cpp) $(wildcard $(SOURCE)/libs/*/*.cpp)
CC_FILES :=  $(wildcard $(CODEBASE)/*/src/*.cc) $(wildcard $(CODEBASE)/*/src/libs/*/*.cc) $(wildcard $(CODEBASE)/*/src/*/*.cc) $(wildcard $(SOURCE)/*/*.cc) $(wildcard $(SOURCE)/*.cc) $(wildcard $(SOURCE)/libs/*/*.cc)
H_FILES := $(wildcard $(CODEBASE)/*/src/*.h) $(wildcard $(CODEBASE)/*/src/libs/*/*.h) $(wildcard $(CODEBASE)/*/src/*/*.h) $(wildcard $(SOURCE)/*/*.h) $(wildcard $(SOURCE)/*.h) $(wildcard $(CODEBASE)/*/src/*.hpp) $(wildcard $(CODEBASE)/*/src/*/*.hpp) $(wildcard $(SOURCE)/*/*.hpp) $(wildcard $(SOURCE)/*.hpp) $(wildcard $(SOURCE)/libs/*/*.h)

OBJ_FILES := $(CPP_FILES:.cpp=.o) $(CC_FILES:.cc=.o)
OBJ_FILES_FOLDER_TESTING := $(addprefix $(OBJ_TESTING)/,$(OBJ_FILES))
OBJ_FILES_FOLDER_TESTING_EXT := $(addprefix $(OBJ_TESTING_EXT)/,$(OBJ_FILES))
OBJ_FILES_FOLDER_DEBUG := $(addprefix $(OBJ_DEBUG)/,$(OBJ_FILES))
OBJ_FILES_FOLDER_LINUX := $(addprefix $(OBJ_LINUX)/,$(OBJ_FILES))
OBJ_FILES_FOLDER_EXTCIGAR := $(addprefix $(OBJ_EXTCIGAR)/,$(OBJ_FILES))
OBJ_FILES_FOLDER_MAC := $(addprefix $(OBJ_MAC)/,$(OBJ_FILES))

LIB_DIRS = -L"/usr/local/lib"
CC_LIBS = -static-libgcc -static-libstdc++ -D__cplusplus=201103L
# INCLUDE = -I"./src/" -I"/usr/include/" -I"libs/libdivsufsort-2.0.1/build/include" -I"libs/seqan-library-1.4.2/include"
# INCLUDE = -I"./src/" -I"/usr/include/" -I"src/libs/seqan-library-1.4.2/include"
INCLUDE = -I"./src/" -I"/usr/include/" -I"$(CODEBASE)/seqlib/src/libs/seqan-library-2.0.1/include" -I"$(CODEBASE)/seqlib/src/libs/libdivsufsort-2.0.1-64bit/" $(CODEBASE_SRC_FOLDERS)

CC_FLAGS_DEBUG = -O0 -g -rdynamic -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c++11 -Werror=return-type -pthread -march=native
CC_FLAGS_RELEASE = -DRELEASE_VERSION -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c++11 -Werror=return-type -pthread # -march=native
CC_FLAGS_EXTCIGAR = -DRELEASE_VERSION -DUSE_EXTENDED_CIGAR_FORMAT -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c++11 -Werror=return-type -pthread -march=native
CC_FLAGS_NOT_RELEASE = -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c++11 -Werror=return-type -Wuninitialized -pthread -march=native
CC_FLAGS_NOT_RELEASE_EXT = -O3 -DUSE_EXTENDED_CIGAR_FORMAT -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c++11 -Werror=return-type -Wuninitialized -pthread -march=native
LD_FLAGS = -static-libgcc -static-libstdc++ -m64 -ffreestanding
# LD_LIBS = -lpthread -lgomp -lm -lz -ldivsufsort64
LD_LIBS = -lpthread -lgomp -lm -lz

all: gcc_version_check linux

install: /usr/bin/graphmap

/usr/bin/graphmap: bin/Linux-x64/graphmap
	cp bin/Linux-x64/graphmap /usr/bin/graphmap

modules:
	git submodule update --init --recursive
	# git submodule foreach git pull origin master

testing: $(OBJ_FILES_FOLDER_TESTING)
	mkdir -p $(dir $(BIN))
	$(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN) $(OBJ_FILES_FOLDER_TESTING) $(LD_LIBS)

obj_test/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE) -o $@ $<

obj_test/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE) -o $@ $<

testingext: $(OBJ_FILES_FOLDER_TESTING_EXT)
	mkdir -p $(dir $(BIN))
	$(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN) $(OBJ_FILES_FOLDER_TESTING_EXT) $(LD_LIBS)

obj_testext/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE_EXT) -o $@ $<

obj_testext/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE_EXT) -o $@ $<

gcc_version_check:
ifneq ($(GCC_MAJOR_VERSION_GE_4), 1)
	$(warning "*** WARNING $(GCC) major version <4 ***")
endif
ifneq ($(GCC_MINOR_VERSION_GE_7), 1)
	$(warning "*** WARNING $(GCC) minor version <7 ***")
endif

debug: $(OBJ_FILES_FOLDER_DEBUG)
	mkdir -p $(dir $(BIN_DEBUG))
	$(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN_DEBUG) $(OBJ_FILES_FOLDER_DEBUG) $(LD_LIBS)

obj_debug/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_DEBUG) -o $@ $<

obj_debug/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_DEBUG) -o $@ $<

linux: $(OBJ_FILES_FOLDER_LINUX)
	mkdir -p $(dir $(BIN_LINUX))
	$(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN_LINUX) $(OBJ_FILES_FOLDER_LINUX) $(LD_LIBS)

obj_linux/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_RELEASE) -o $@ $<

obj_linux/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_RELEASE) -o $@ $<

extcigar: $(OBJ_FILES_FOLDER_EXTCIGAR)
	mkdir -p $(dir $(BIN_LINUX))
	$(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN_LINUX) $(OBJ_FILES_FOLDER_EXTCIGAR) $(LD_LIBS)

obj_extcigar/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_EXTCIGAR) -o $@ $<

obj_extcigar/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_EXTCIGAR) -o $@ $<

mac: $(OBJ_FILES_FOLDER_MAC)
	mkdir -p $(dir $(BIN_MAC))
	$(GCC_MAC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN_MAC) $(OBJ_FILES_FOLDER_MAC) $(LD_LIBS)

obj_mac/%.o: %.cc $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC_MAC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_RELEASE) -o $@ $<

obj_mac/%.o: %.cpp $(H_FILES)
	mkdir -p $(dir $@)
	$(GCC_MAC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_RELEASE) -o $@ $<

# deps:
# 	cd libs; cd libdivsufsort-2.0.1; make clean; rm -rf build; ./configure; mkdir build ;cd build; cmake -DBUILD_DIVSUFSORT64:BOOL=ON -DCMAKE_BUILD_TYPE="Release" -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="/usr/local" .. ; make

clean:
	-rm -rf $(OBJ_LINUX) $(BIN_LINUX)

cleantesting:
	-rm -rf $(OBJ_TESTING) $(BIN)

cleandebug:
	-rm -rf $(OBJ_DEBUG) $(BIN_DEBUG)

cleanlinux:
	-rm -rf $(OBJ_LINUX) $(BIN_LINUX)

cleanextcigar:
	-rm -rf $(OBJ_EXTCIGAR) $(BIN_LINUX)

cleanmac:
	-rm -rf $(OBJ_MAC) $(BIN_MAC)

cleanbin:
	-rm -rf bin/

cleanall: clean cleantest cleandebug cleanmac cleanbin

rebuild: clean all

rebuilddebug: cleandebug debug

rebuildlinux: cleanlinux linux

rebuildtesting: cleantesting testing

rebuildmac: cleanmac mac

# divsufsort:
# 	cd libs; ./build-libdivsufsort.sh


In support of Dying Matters Week (8th-14th May) this article is for those who are going through any loss, grief or bereavement.
Grief and loss come in many forms, whether that is the death of a loved one, terminal illness, the loss of a job position or income, children leaving home (also known as empty nest syndrome), life changes and upheavals such as divorce, moving home or retirement, pets dying or running away, or any other type of loss. Grief and Bereavement is a different experience for everyone, and no two people will go through the process of grieving in quite the same way.
There are usually around five stages of grief, the first being denial/numbness: Some may feel a kind of numbness, and this should not be confused with not caring, but is in fact a normal part of the grieving process. It is the way our subconscious mind protects us from the intensity of the loss. So although it may come across as denial it can be a useful tool in helping us to deal with the important actions that need to be carried out such as planning and notifying others etc. helping us to slowly acknowledge the disbelief and impact of the loss.
Sometimes there is another stage of grief and this is known as the bargaining stage. This usually hits somewhere between the first stage of denial/numbness and the next stage of anger. Like all of the other stages it isn't black and white and can vary from person to person. In this stage tormented thoughts and memories can continually run through the mind, causing guilt and feelings of helplessness. Eventually, the mind settles and returns to the conclusion that the loss is real and we cannot change what has happened.
Anger is the next and most common stage of grief. This usually happens when we feel we are powerless to do anything and the anger stems from fear, feelings of abandonment, loss and even rage at a higher power or life in general.
After the anger, depression is another common phase of loss and it is during this stage that we can feel lonely, full of self-pity, isolated, lost, empty, have trouble with insomnia and lack of appetite. Also feelings of anxiousness or apathy are common.
Usually, the last stage is when we move into acceptance – this isn't to say we ever let go or forget, but little by little we begin to learn how to live again and put the loss into perspective.
Not only is talking to friends and loved ones an important part of grieving but finding support groups, online information and utilising therapies such as hypnotherapy, counselling and BWRT (Brain Working Recursive Therapy) are also valuable tools in the healing process.
Hypnosis for dogs Anxiety stuck in fight or flight?


text:
Report: Pirates-Nationals Talking Melancon TradeMark Melancon, a three-time All-Star and one of the best closers in the game, is drawing trade interest across the league according to Ken Rosenthal of Fox Sports.
Fantasy Baseball Owners Must Anticipate Trade Deadline DealsNow is the sneaky time for fantasy baseball owners to anticipate action at the Major League Baseball trade deadline coming up on July 31. If a team moves a star player, someone has to take that player's place in the lineup. There are statistics to be had there in such a vacancy, so if you can get the jump on a replacement now, your fantasy baseball team will be the better off for it. Likewise, if one of your star player's value takes a hit with a trade, you have to be ready to replace lost stats. Always keep an eye on the MLB trade deadline!
5 MLB Players That You Didn't Know Defected From CubaIn light of the Boston Red Sox signing Cuban outfielder Rusney Castillo to a seven-year, $72.5 million deal, let's take a look at other MLB players who defected from Cuba.
Fantasy Baseball Preview: Relief PitcherCBS Local Sports breaks down the top relief pitchers for your fantasy baseball draft.
'Bucco Time Machine': What We Were Saying A Year Ago TodayThe Fan Morning Show takes a look at what we were saying about the Bucs one year ago today.
Walk On Wednesday: Latos, Reds Should Be Angry At Chapman, Not BucsPirates color commentator and former pitcher Bob Walk joined The Fan Morning Show today for another edition of his weekly segment, "Walk on Wednesday."
Pirates To Get Payback From Reds Last year the Reds closer Aroldis Chapman beamed Pirates star Andrew McCutchen with a 100-mile per hour fastball to the back.
Devin Mesoraco Could Mean Extra Value At Catcher For RedsDevin Mesoraco is an x-factor who could provide extra value to a team that's already one of the best in the big leagues.
Pirates' Center Fielder Andrew McCutchen Making Push For Cover of MLB '13 The ShowPirates All-Star Andrew McCutchen joined Starkey and Miller on Sports Radio 93-7 The FAN to talk about getting on the cover of the video game "MLB '13 The Show" and the upcoming season.
Controversial Hit To McCutchen Has Pirates Fans TalkingIt's the hit heard 'round Pittsburgh. It was a quiet game Friday night between the Pirates and the Cincinnati Reds until Andrew McCutchen was hit by a 101 mile-an-hour fastball by Reds' closer Aroldis Chapman.
Woman Found In Reds Pitcher's Hotel Room ChargedThe woman who claimed she was tied up and robbed in a Cincinnati Reds pitcher's hotel room at the Omni William Penn is now facing charges.
Pirates Beat Reds In Extra Innings, 5-4(93-7 The FAN) -- Back-to-back doubles by Clint Barmes and Michael McKenry in the top of the 10th inning gave the Pirates enough to earn a 5-4 win Thursday night and take two of three games from NL Central leading Cincinnati.
Police Not Buying Story Of Woman In Reds Pitcher's Hotel RoomClaudia Manrique, 26, claims she was the target of a thief who ransacked the room when she wouldn't give up the valuables. KDKA-TV has learned the woman was indeed targeted, but she may not be an innocent victim like she claimed.
Woman Found In Cincinnati Reds' Pitcher's Room QuestionedClaudia Manrique was escorted out of the Pittsburgh Police Zone 2 station Wednesday evening by a man police said was her husband. She had a blanket over her head and did not respond to questions from KDKA's Kym Gable.


text:
#ifndef POSEIDON_SOLVERS_CUDA_PRACTICAL_LIQUIDS_SOLVER2_H
#define POSEIDON_SOLVERS_CUDA_PRACTICAL_LIQUIDS_SOLVER2_H

#include <hermes/numeric/cuda_grid.h>
#include <hermes/parallel/cuda_reduce.h>
#include <poseidon/math/cuda_fd.h>
#include <poseidon/simulation/cuda_defs.h>
#include <poseidon/simulation/cuda_integrator.h>
#include <poseidon/simulation/cuda_level_set.h>
#include <poseidon/simulation/cuda_particle_system2.h>

namespace poseidon {

namespace cuda {
// Discretization goes as follows:
// - velocity components are stored on face centers (staggered)
// - level set distances are stored on cell centers
// - all other fields are stored on cell centers
// So, for a NxM resolution simulation, the sizes of the grids are:
// - N+1xM for u velocity component
// - NxM+1 for v velocity component
// - NxM for level set distances
// - NxM for other fields
// For cell i,j:
//              v(i,j+1)
//          --------------
//         |              |
//         |              |
//  u(i,j) |    p(i,j)    | u(i+1,j)
//         |              |
//         |              |
//          --------------
//              v(i,j)
template <hermes::cuda::MemoryLocation L> class PracticalLiquidsSolver2 {
public:
  PracticalLiquidsSolver2() {
    setSpacing(hermes::cuda::vec2f(1.f));
    setOrigin(hermes::cuda::point2f(0.f));
  }
  /// \param res **[in]** resolution in number of cells
  void setResolution(const hermes::cuda::vec2u &res) {
    for (int i = 0; i < 2; i++) {
      velocity_[i].resize(res);
      surface_ls_[i].setResolution(res);
    }
    material_.resize(res);
    solid_velocity_.resize(res);
    pressure_.resize(res);
    divergence_.resize(res);
    solid_ls_.setResolution(res);
    force_field_.resize(res);
    pressure_matrix_.resize(res);
    init();
  }
  /// \param s **[in]** distance between two cell centers
  void setSpacing(const hermes::cuda::vec2f &s) {
    for (int i = 0; i < 2; i++) {
      velocity_[i].setSpacing(s);
      surface_ls_[i].setSpacing(s);
    }
    solid_velocity_.setSpacing(s);
    material_.setSpacing(s);
    pressure_.setSpacing(s);
    divergence_.setSpacing(s);
    solid_ls_.setSpacing(s);
    force_field_.setSpacing(s);
  }
  /// \param o **[in]** world position of lowest cell center
  void setOrigin(const hermes::cuda::point2f &o) {
    for (int i = 0; i < 2; i++) {
      velocity_[i].setOrigin(o);
      surface_ls_[i].setOrigin(o);
    }
    solid_velocity_.setOrigin(o);
    material_.setOrigin(o);
    pressure_.setOrigin(o);
    divergence_.setOrigin(o);
    solid_ls_.setOrigin(o);
    force_field_.setOrigin(o);
  }
  void init() {
    hermes::cuda::fill2(velocity_[SRC].u().data(), 0.f);
    hermes::cuda::fill2(velocity_[SRC].v().data(), 0.f);
    hermes::cuda::fill2(force_field_.u().data(), 0.f);
    hermes::cuda::fill2(force_field_.v().data(), 0.f);
    hermes::cuda::fill2(solid_ls_.grid().data(),
                        hermes::cuda::Constants::greatest<float>());
    fluidIntegrator.set(pressure_.info());
  }
  /// \param box **[in]**
  /// \param velocity **[in]**
  void rasterSolid(const hermes::cuda::bbox2f &box,
                   const hermes::cuda::vec2f &velocity);
  /// \param time_step **[in]**
  void step(float time_step) {
    while (time_step > 0) {
      float dt = min(time_step, dtFromCFLCondition());
      std::cerr << "timestep: " << dt << std::endl;
      // input: LS[SRC] output: LS[DST]
      updateSurfaceDistanceField();
      // input: LS[DST] output: material
      classifyCells();
      fill2(velocity_[DST].u().data(), 0.f);
      fill2(velocity_[DST].v().data(), 0.f);
      fill2(divergence_.data(), 0.f);
      fill2(pressure_.data(), 0.f);
      // input: material, force, v[SRC] output: v[DST]
      applyExternalForces(dt);
      // input: material, v[DST] output: v[SRC]
      propagateVelocity();
      // velocity_[DST].copy(velocity_[SRC]);
      advectVelocity(dt);
      // inpute materia, v[DST] output: v[DST]
      enforceBoundaries();
      // input: v[DST] output: divergence
      computeDivergence();
      // input: material, divergence output: pressure
      // solvePressure(dt);
      solve2ndOrderPressure(dt);
      // input: v[DST], material
      computeFluidKineticEnergy();
      // input: v[DST] output: v[DST]
      project(dt);
      // input: v[DST], material
      computeFluidKineticEnergy();
      std::cerr << std::endl;
      // input: material, v[DST] output: v[SRC]
      propagateVelocity();
      // input: material, v[SRC], LS[SRC] output: LS[DST]
      advectFluid(dt);
      velocity_[DST].copy(velocity_[SRC]);
      time_step -= dt;
      SRC = (SRC) ? 0 : 1;
      DST = (DST) ? 0 : 1;
    }
  }
  LevelSet2<L> &surfaceLevelSet() { return surface_ls_[SRC]; }
  LevelSet2<L> &solidLevelSet() { return solid_ls_; }
  hermes::cuda::VectorGrid2<L> &forceField() { return force_field_; }
  hermes::cuda::StaggeredGrid2<L> &velocity() { return velocity_[SRC]; }

private:
  /// \return float maximum value allowed for dt
  float dtFromCFLCondition() {
    using namespace hermes::cuda;
    float min_s = fminf(material_.spacing().x, material_.spacing().y);
    float max_v = fmaxf(maxAbs(velocity_[SRC].u().data()),
                        maxAbs(velocity_[SRC].v().data()));
    // std::cerr << "max_v " << max_v << std::endl;
    if (max_v < 1e-8)
      return Constants::greatest<float>();
    return min_s / max_v;
  }
  /// Propagate distances from liquid surface
  void updateSurfaceDistanceField();
  /// Given a level set distance defined over the entire domain,
  /// classify cells in FLUID, AIR or SOLID
  void classifyCells();
  /// Apply an external force field to fluid cells
  /// \param dt **[in]**
  void applyExternalForces(float dt);
  /// \param dt **[in]**
  void computeDivergence();
  /// \param dt **[in]**
  void solvePressure(float dt);
  void solve2ndOrderPressure(float dt);
  /// \param dt **[in]**
  void project(float dt);
  /// \param dt **[in]**
  void advectVelocity(float dt);
  /// \param dt **[in]**
  void advectFluid(float dt);
  /// Propagates velocities throughout a narrow band outside fluid.
  /// The surface distance level set must be previously computed
  void propagateVelocity();
  // After velocity advection, solid walls may end up with wrong velocities
  // This function sets velocity components values on solid walls appropriately
  void enforceBoundaries();
  /// Computes approximated total kinetic energy of the system
  void computeFluidKineticEnergy();

  size_t SRC = 0;
  size_t DST = 1;
  hermes::cuda::StaggeredGrid2<L> velocity_[2];
  hermes::cuda::StaggeredGrid2<L> solid_velocity_;
  hermes::cuda::VectorGrid2<L> force_field_;
  LevelSet2<L> surface_ls_[2];
  LevelSet2<L> solid_ls_;
  FDMatrix2<L> pressure_matrix_;
  hermes::cuda::RegularGrid2<L, float> pressure_;
  hermes::cuda::RegularGrid2<L, float> divergence_;
  hermes::cuda::RegularGrid2<L, MaterialType> material_;
  SemiLagrangianIntegrator2 fluidIntegrator;
};

using PracticalLiquidsSolver2D =
    PracticalLiquidsSolver2<hermes::cuda::MemoryLocation::DEVICE>;
using PracticalLiquidsSolver2H =
    PracticalLiquidsSolver2<hermes::cuda::MemoryLocation::HOST>;

} // namespace cuda

} // namespace poseidon

#endif


text:
Q: Why isn't .AsNoTracking() enabled when I bury it down inside of a repository? The codebase I work on uses Entity Framework and the repository pattern. In order to get decent performance (i.e., 150 ms database calls instead of 1500 ms calls), I've found I need to use AsNoTracking when selecting data to avoid caching.
The following code works splendidly:
using (var context = new DeviceCloudModel())
{
    var model = context.Devices
        .AsNoTracking()
        .Include(d => d.DeviceSettings)
        .Where(d => d.SerialNumber == serialnumber && o.IsActive).FirstOrDefault();
}

However, this doesn't, and is just as slow (I'm guessing it's caching again):
var predicate = (filter ?? (x => true)).Compile(); // assume filter is always null

var model = _repository
        .Get(o => o.SerialNumber == serialnumber && o.IsActive)
        .Where(predicate)
        .FirstOrDefault();

Here's my repository Get method:
public override List<Device> Get(Expression<Func<Device, bool>> filter = null)
{
    var predicate = (filter ?? (x => true)).Compile();

    var ret = _context.Devices
        .AsNoTracking()
        .Include(d => d.DeviceSettings)
        .Where(predicate)
        .ToList();

    return ret;
}

We want to improve our performance, but we don't want to get rid of the repository pattern or throw an ugly hack on top of it. Is there any way to use AsNoTracking with the current repository code we have in place?

A: Query 1 calls FirstOrDefault and returns the first result from the database. So even if the database contains 5000 matches only the first one will be returned from the database.
Your repository wrapper call calls ToList and returns all the results from the database and only then does your code take the first result from everything already returned. So if ToList returns 5000 matches all of those will be loaded into memory and then you take the first one.

Side note 1

(I'm guessing it's caching again)

Don't guess. Use a profiling tool (like Sql Server Profiler if your Database is Sql Server) and see what the actual query being executed is and compare that to what you are expecting it to be (based on your first code sample that "works splendidly"). In this case you could capture the queries and notice that the first probably returns a single result and the other returns many other records.

Side note 2
I would like to point out that it is almost always a bad idea to wrap the Entity Framework functionality in a Repository or UoW patterns.
The type DbContext is an implementation of a UoW pattern and the type DbSet<T> is an implementation of a Repository pattern. Why re-wrap these types in your own implementation of the same pattern? You are adding nothing of value, just more code and a poor abstraction which results in code that is harder to read, debug, and use correctly.

redpajama_set_name: RedPajamaStackExchange