The past couple of weeks have been way too busy over here (big changes at work and a possible relocation to Brooklyn is in the works!)… But now I'm back and have a few closet updates to share.
The picture above shows all the tops I wore this past week. Notice the 3 linen tops? They're all secondhand EF shell tops, slightly cropped. They feel very airy without the frumpy factor seen with EF's longer tunic-y tops. I love the way linen bounces back after each wash. It doesn't shrink. It contracts.
I also bought my very first organic by john patrick top (the stripe one in the middle). Love the softness and drape of it. They look tomboy-cute tucked into high waisted anything. Speaking of high waisted, I've been trying to find a good pair of secondhand madewell perfect summer jeans. I finally lost enough weight to fit into 27's again. I have a pair of pre owned size 28, which had fit around the waist but was much too baggy around my thighs. If anyone needs a size 28, let me know.
Big news in the shoe dept again. I used my credit card points to buy a new pair of arizona birkenstocks from Nordstroms this week. This time in taupe suede. The color seems to go with everything! The only problem was that I accidentally bought the soft footbed, which is disappointingly unsupportive. There is a bit of arch support but my feet are craving the beat down of the original hard footbed. Those were sold out everywhere in this color. Sad. I love the color so much though that I ended up keeping them despite the footbed.
And finally, I've mastered the everlane day flats. I Macgyver'd my way to a good fit; with a tiny pair of scissors, I cut the elastic band at the heel, discreetly from the inside and voila!, no more dents on my achilles tendons. The elastic heel issue would have been a problem even if I sized up, I think. It's ridiculous how friggin tight they made it. Seems like Everlane's Italian shoe makers don't test their shoes on real people. But I will say they are chic and I still love them.
Funny you should bring up the soft footbeds! I bought a pair of new Arizonas with soft footbeds from Nordstrom about 6 weeks ago, I kept trying and trying to love them, and I finally returned them yesterday. They are no where near as comfortable as the original beds! I kept thinking the foam would pack down, (and maybe it would with more time), but it sure didn't seem like it. Also, the foam made my feet hot! I have been wearing Birkenstocks for the better part of 20 years, and I hope the soft footbed doesn't stick around. In my opinion in negates the reason we all buy Birkenstocks.
Aw man I was hoping the foam would give way to more support over time. I'll have to wait until the hard footbed is available then sell the soft ones. Thanks for the heads up!
i would be interested in your madewell size 28s! would love more details/photos if possible.
Sure thing. Can you submit a form with your email on my blog roll page (it will be private) and I'll send you a link w the pics. Thanks!!
Moving to Brooklyn?! That would be a big change. What neighborhoods are you considering?
Where are you finding your secondhand EF shirts? If you don't mind me asking!
I daydream (kind of) about finding the perfect linen garments secondhand. I second jesse.anne.o: where do you find them?
I think recall reading that you no longer wear heels. How does that affect your day to day life? And what shoes would you wear for a formal occasion?
Yep that's right. I don't wear heels anymore and it makes life better. If I want some height I'll wear platform sandals that have a small slope. And if it is a formal occasion, I'll wear heels that are 1.5 inches with a block heel. I love a cute block heel much more than any skinny heel. They make heels way more tolerable.


There's few things more rewarding in my business than hearing about how satisfied a customer is and the joy they feel from getting back onto the water. Thank you Theo for the great message you just sent me and letting me use your words and images in the blog.
As I said there are no words, so I'm sending you another e-mail with a link that will give you access to some photos and a small video which you can use as you wish. The sun was so bright that I could hardly see my phone's screen, but the result is not so bad after all, for the first time.
Anyway, I cannot thank you enough for your patience, your passion, your insights and for making all this a reality for me!


10 interesting rules to writing by Elmore Leonard. It seems as though our literature becomes more and more concise these days. I remember a writing teacher telling me: don't describe a one-eyed vagabond with buck teeth in detail, everybody can imagine it.


Room Rate: $100/night plus tax. Rate available until 8/15/19. Two (2) night minimum. Please call the Baymont Reservations Office at 303-373-5400 and identify as attendees of the Rocky Mountain Audio Fest block. Complimentary WiFi, breakfast, and parking. Complimentary airport shuttle.
These rates are effective from Tuesday, September 3, 2019 through checkout on Monday, September 9, 2019.


Remove the door by carefully lifting it up and off the hinges.
Cable routing in a non-disk-array model, with the backplane in bank C1 cabled to an IBM SCSI-2 Fast/Wide Adapter/A 2 in expansion slot 1.
Non-disk-array model, with banks Cand D populated, and both banks connected to SCSI-2 adapters. A third SCSI-2 adapter 1 supports the backplane in bank E2.
Cable routing in a disk-array model, with the backplane in bank C1 cabled to an IBM SCSI-2 Fast/Wide Streaming-RAID Adapter/A 2 in expansion slot 1. A DASD status cable 3 connects the adapter to the backplane.
Cable routing in a disk-array model with a new backplane installed in bank D 1. A DASD status cable 2 connects the adapter to the backplane.
- Two separate cables are connected to the adapter. One cable connects to the backplane in bank C; the other cable connects to the backplane in bank D.
- When you install a backplane in banks D and E, you must connect the DASD status cable from the RAID adapter to the backplane.
Attempting to rebuild a fixed disk with the cables connected in this manner will probably result in customer data loss.


text:
About GodSongs.net
GodSongs.net is dedicated to sharing hymns and religious songs that ordinary people sing together. The site aims to share information and resources, and help you find commercial sources for materials that are still subject to copyright restrictions.
The site has these main parts:
Hymn pages have background about a hymn/song, PowerPoint slides for it, and sheet music, chord charts and on-line examples where they are available.
Book listings contain the bibliographic information and detailed contents of each hymnal that is included - enough so that you can definitely identify whether the hymn is the one you are looking for, and whether the score provided has enough detail for your needs.
The topic index and quick links (in the sidebar) give quick access to hymns with particular themes, or from some countries / themes.
People pages - biographical information about selected "Christian folk" composers and writers
Hymn requests - where you can request hymns and songs as candidates to be researches.
Where did the site come from
LiturgyTools.net was set up in 2010, to share tools and templates for music and worship-arts programmes in liturgical churches.
The material that was loaded initially included "an eclectic collection" of hymns that I happened to have made PowerPoint slides or sheet music (usually in lead-sheet format) for. As such there is a leaning towards Catholic "folk" style hymns that were used from the 1970s onwards - but the site is by no means limited to these.
Copyright restrictions meant that only public-domain or copyright-cleared songs could be loaded. Even so, many people came to the website looking for some very specific religious songs and hymns that were hard to find elsewhere.
However publishing information about hymns wasn't ideal for the website - many people who are looking for them aren't interested in formal liturgies, and people who are interested in liturgy planning aren't necessarily interested in non-liturgical songs.
So GodSongs.net was established to complement LiturgyTools.net and all the hymns were moved to this site.
The basics are the same: Copyright laws are respected. Good quality PowerPoint slides are provided for every hymn that is loaded - because PowerPoint can be loaded into almost every other display program in common use. Sheet music (generally in lead-sheet format, sometimes chord-charts) will be provided where it's available.
But instead of just loading songs that I happen to already have, I am now actively researching and documenting religious songs that people actually use and are looking for. Many of these are the sacred-music equivalent of folk-music, and this has led me to one of the guiding principles for this site: a focus on songs that people actually sing together, not ones that are mainly suitable for trained singers/musicians or commercial "talent".
As well, I have plans to gather information about some of the seminal publications which accompanied the sea-change in the music used in some liturgical churches from the 1960s onwards, which are not incorporated in the other hymnal-compilation sites on the web.
Folk-hymns?
Initially, I thought that "folk hymns" was a good word to describe the types of songs that people were clearly looking for. However this phrase has a specific meaning, relating to early American writing and use.
And the "folk music" connotation is too narrow - there are hymns which are known, used and highly significant to people who do not identify with the "folk" attitudes and behaviours associated with the term "folk".
Similarly, "contemporary hymns" is also limiting, because of the links with so-called "contemporary Christian music" that is often inaccessible to average singers.
Some people have asked why I bother with hymns and songs that are regarded as having little musical merit, or being theologically weak or "unsound".
There are a few reasons for this:
No matter how bad a hymn is, experience shows that it is meaningful and significant for some people - for whatever reason, God's people have continued to sing, and often cherish, it, even though musicians despise it.
There is a pastoral dimension too. Some of the early "Christian folk music" is associated with childhood / adolescence memories for people who are now approaching mid-life and beyond. If they've had little religious involvement in the interim, then this music may be particularly significance to them as they face the life-challenges of mid-life and beyond. People who are providing pastoral care to this group may need to access these resources for the next 50 or so years, even if many of the materials totally fade from use after that.
(This is nothing new either - there are "bad" old hymns from every generation, it just happens that we don't know about the ones from hundreds of years ago, because people stopped publishing them after their initial use.)
And lastly - who says what is theologically sound and what isn't. Christianity is a broad church, and we don't all agree on the details. I don't like or subscribe to some of the songs which I describe - but some readers don't like the songs which are precious to me, either.
Your enquiries, are welcome, especially suggestions about songs or books to be included. The Hymn Request form is set up for requesting specific songs, but can be used for general contacts.
Or you can leave a message in the Comments box near the bottom of this page.
https://www.godsongs.net/2011/07/about-godsongsnet.html
[url=https://www.godsongs.net/2011/07/about-godsongsnet.html]About GodSongs.net[/url]
Labels: Site information
http://www.godsongs.net/2011/09/receive-o-father-god-of-might.html
I know the origin of this hymn. The text was written in 1971 by a priest (as of 2015 retired but still alive) of the Archdiocese of Sydney (Australia), Father David Michael Coffey; it was written for the NEW CATHOLIC HYMNAL and the copyright is owned by the publisher of said hymnal, Faber Music Ltd.
Editor, GodSongs.net 26 January 2016 at 13:25
Thanks for the information, I've now updated the page.
jrgrant 27 February 2016 at 09:54
This is a great resource for our house church! We base our teaching on the Revised Common Lectionary and, as the song leader, I am often challenged to find an appropriate hymn to support the lesson. I'm so glad to discover your website!
Lenny Smith 10 November 2016 at 13:08
Greetings! I am the composer of the classic, "Our God Reigns." I now have a small label to offer my songs and cds containing my songs at www.greatcomfortrecords.com. Might I submit songs you may want to share with your people? I can send links and lead sheets of all my songs. Thanks, Lenny Smith
Editor, GodSongs.net 11 November 2016 at 16:39
Hi Lenny, great to hear from you. I've just made an information page about Our God Reigns, including a link to your website and a comment about your other songs being available there. (I've taken the liberty of listing the complete words to verses 2-5 from your official version - I hope this is ok with you.) I've also added you to a list of self-publishing composers that I maintain on a sister website, http://www.liturgytools.net/2012/02/self-publishing-composers.html
Blessings, and thanks for getting in touch.
Lenny Smith 3 February 2017 at 17:59
Thank you SO much. Might you add my title to your list of hymns? Thanks! Lenny
Leslie 10 January 2019 at 14:24
I wish to project the lyrics of song "Faith, Hope and Charity" by Sebastian Temple for congregational singing at Mass in my church (Church of St. Alphonsus) in Singapore. Could you advise from whom should I get the approval to do this? Or are Powerpoint slides of this song available for download?

redpajama_set_name: RedPajamaCommonCrawl


Transform your ideas and gain new insights through drawing, painting, and collage.
This workshop with artist Alison Fox will help participants use art-making as a path to transform your ideas and gain new insights through drawing, painting, and collage. Through the hand, by engaging creatively with intention, one can move an idea from the head into a space of living the idea through the heart. Alison will facilitate a dive into creating deeper understanding and integration through collage, drawing and painting. There will be some time at the end to write about the experience and solidify any new insights. Those with little to no experience with art-making are encouraged to join us! The process is one we can all engage with.
Alison was born in New York, NY in 1977. Her education includes an MFA from Hunter College (2006) and a BA (2000) from Skidmore College. She has shown her work in solo and group shows, and has work in the Guggenheim Museum, Saatchi, and Rosa De La Cruz.
This event is free but seating is limited to 12 participants! To reserve your seat, visit the NCFL.
Stories written from life by members of the North Chatham Free Library's very own memoir group.
Dive into spring with plants, books, great raffle items, and a little something to eat.
The North Chatham Free Library's annual Books & Blooms fundraiser will be held on Saturday, May 18 from 9AM to 1 PM—rain, snow, or shine! This popular event happens on the grounds of the library at 4287 Route 203 in the hamlet of North Chatham.
On the front lawn will be a glorious array of plants, both annuals and perennials, from popular area nurseries. Many of the plants will be displayed on tables for easier viewing and sheltered under tents in case the weather isn't cooperative. We've been advised by the Cornell Cooperative Extension of Columbia County to not accept plant donations from individuals to prevent the spread of the very invasive Jumping Worm found in local gardens in recent years. All plants at our sale will be free from this destructive species.
The lower level of the library will be well stocked with a terrific selection of fiction, non-fiction, and children's books. Most hardcovers are $1.00 each or 6 for $5.00 and paperbacks are 50 cents each or 3 for $1.00. Everything will be carefully arranged by category so buyers can easily focus on the titles which interest them the most. Jigsaw puzzles, DVDs, games, music, and audio books will also be available at bargain prices!
Delicious baked goods will stock the bakery café along with freshly brewed coffee, tea, water, and juices. Tables and chairs will be set up for patrons who would like to socialize on the back lawn of the library while enjoying a muffin or cookie. You can also take some goodies home to enjoy later on. We highly encourage you to do both!
Care to buy some chances on winning a little extra vacation money? 50/50 raffle tickets for $3 each or 4 tickets for $10 will be available with the winner's name drawn at 1PM on the event day. The lucky ticket holder takes half of the money collected for the raffle and the library takes the other half—a true win/win for both! Tickets are now being sold at the library and you don't need to be present on May 18th to win.
Concerned about transporting your purchases to your vehicle? No worries because we will offer free help in the form of a "white glove" service to help get your plants and books safely loaded into your car. There will be a few convenient parking spaces reserved at the entrance to our parking lot for patrons who have physical limitations.
This community event begins promptly at 9 AM but those who are anxious to begin sooner can start shopping at 8:30 for an early bird fee of just $10. We have something for everyone and hope to see you on May 18th! All profits for the day go to support the North Chatham Free Library.
Chef Linda Romeo will have us preparing and tasting a variety of dishes perfect for the spring and summer, with an emphasis on healthy eating. This hands-on session always fills up, so register early.
Join us in our inter-generational workshops.
Look for the sign-up brochure in June.
Plenty of room at the North Chatham Firehouse to learn dances from around the world, and then join in. Or, just sit back and have fun. All ages welcome!
This event is made possible in part with public funds from the New York State Council on the Arts Decentralization Program administered by Greene County Council on the Arts.


Problem-solving skills are often cited an important qualification for position openings. This should come as no surprise, but what's interesting is that was cited more often than technical skills. In this report from HackerRank, 94% of the IT employers surveyed consider problem solving skills a priority when hiring, while 55% mentioned programming proficiency. Debugging, system design and performance optimization ranked highly as well.
It should be noted that smaller companies do place more importance on program proficiency (or less importance on problem solving) than larger ones. One explanation is "the right knowledge of frameworks is more important for startups since they need to launch code quickly, and frameworks help developers push code faster." See the report for the full analysis.
Email revolutionized the way people communicate. It was a massive innovation and, like all major shifts, it took a while for people and businesses to adapt. But adapt they did. Today email is now the most common form of communication.
Today there's a new innovation changing the face of business: Applying for jobs via mobile device. While many employers have yet to embrace it fully, it's still there, and we don't have long until the concept of using your cell phone to apply for jobs becomes mainstream. Mobile is easier, faster, and much more convenient, particularly for millennials. If you don't provide the option to apply for positions via mobile, you're missing out on a large demographic. 90% of job seekers are searching for jobs via mobile, and 78% say they will apply for jobs via mobile.
It's Cyber Monday, but before you dive into online shopping on company time ahem, let's explore some information about data.
Millennials are the most ethnically diverse generation in the workforce in U.S. history. They grew up with digital technology. They have an entrepreneurial spirit. They've been called many things: socially aware, tech-savvy, go-getters who don't take no for an answer.
They've also been called narcissistic, social media-obsessed, selfie-taking, entitled children. They get labelled as 'job-hoppers', a generation always looking for the 'next best thing'.
But are these really bad things? Or are Millennials just looking for the right thing and unlike the Boomers and Gen-Xers, they're not satisfied to settle for anything less?
In 2017, Millennials make up 45% of the workforce. It is predicted by a Deloitte Millennial Survey that they are expected to make up 75% of the workforce in 2025.
Millennials are the future of business. While the Boomers and Gen X-ers still make up a good percentage of the workforce, Millennials are changing the dynamic of the workplace. Employers increasingly need to find ways to entice them to stay in a job, to help them grow and invest in the future of that company. Yet, with their search for the 'next best thing' always on the horizon, keeping and retaining this newer generation is a challenge and it is a challenge businesses are learning to embrace.
The difference between the attitudes of a Millennial vs. a Gen X-er was explained quite succinctly during a panel at the 2016 TechServe Alliance conference presented by Jim Lanzalotto, a Senior VP at Monster Worldwide. He stated that Millennials have no fear of retribution – they have something to say and they want you to hear it. Where older generations might censor how they speak to a manager and hold back what they really want to say for fear of consequences; Millennials just say it. The attitude being "Why wouldn't I say it?" vs. "Why on earth would I say that?".
Remote technology has made physical presence an option for many companies, and they allow employees to work from home at least once a week.
Herein lies the key to understanding Millennials. From the dawn of online instant messaging, to the many mobile messaging platforms of today, Millennials simply view communication differently. Their world moves faster because technology makes it so. The average Millennial spends 5.4 hours a day on social media and check their smartphones 43 times a day on average. This fact has lent itself to the rise of working remotely.
To the older generations, working remotely is a luxury and man still prefer to actually go into the office citing that they don't feel as productive at home and get more done in the office. Millennials prefer a flexible work time, a flexible work place, the ability to choose what they're working on. It is a generational difference in attitude that savvy employers are embracing in order to retain younger talent.
Millennials ultimately want to control their own destiny. They want both job satisfaction and satisfaction in their personal lives. The fact is that if they don't see or feel that their employer is going to provide the right tools to get a head start on a successful life, they will leave their job in search of one that can. They want a company to help with their career while still being in charge of said career. In the current workplace, 91% of Millennials surveyed expect to stay at a job for less than 3 years, 30% expect to leave their job within the next year and 43% said they were open to new offers.
So, how can an employer retain Millennials, knowing that they are always looking for something better and brighter? Why would you want to if they're always looking for something bigger and better?
The answer lies in embracing this attitude rather than fighting it. Empowering the Millennial generation and helping them grow is a key to their success. They are a generation that needs constant feedback, due in large part to the instant gratification of social media. Facebook posts are "liked", Tweets are re-tweeted…Millennials need approval and positive affirmation. Thus, encouragement and regular feedback in the workplace goes a long way.
And, let's face it; they are more tech-savvy than any other generation, which should be embraced and cultivated by any forward-thinking business.
Helping Millennial employees grow and develop will improve retention. Career paths must exist for them to stay interested and if one isn't there, employers should consider creating one that will tap into this need to grow and develop. It may involve creating a new title, new steps…something that will make Millennials feel that their careers can go somewhere and not remain stagnant.
Of course, nothing is easy. Currently, 55% of the workforce is composed of Gen X-ers and baby-boomers. The workforce cannot survive without these older, more seasoned employees and a balance with the Millennials is crucial. It's not an easy road but it's one that employers must learn to balance in order to have the best of both worlds. Their voices are not quiet…they may ask why they don't get the advantages that the Millennials have. Why can't they work from home? Why don't they get a fancy title? The difference is…they never asked. Millennials do. They're brazen and they're confident. They're unafraid. They're the future.
For many employers, the various types of visas and work statuses is nothing but a blur or acronyms, letters and numbers.
Yes, it is that type of blog post. I have been attending conferences for almost 20 years now in varying industries and for the most part, I truly enjoy the experience. However, there are a couple things that simply infuriate me that I keep noticing more and more frequently.


And one of them includes pizza!
It's official: winter is over and summer is on its way. But if you're feeling a little heavier on this side of winter than you did at the beginning, you might be looking for healthier dinner alternatives to help you get your weight back on track. So, say goodbye takeaway pizza boxes and Chinese containers, and hello to these lighter meals instead.
For a healthy meal, you can't go past frittata – and it's easy to make, too. Simply whisk together eight eggs, fold through 50 grams of reduced-fat feta cheese and lots of roasted veggies. I like to add one capsicum, one zucchini and 300 grams of pumpkin. Pour your mixture into a baking tray and top with a whole punnet of halved cherry tomatoes, then bake and serve with greens dressed in balsamic vinegar and lemon juice. Voila!
Eggs (the base of frittata) are super nutritious, packed with plenty of muscle-building protein as well as important micronutrients like vitamin B12 for nervous system function and iron for oxygen transport. Then you've got your veggies, which are a no-brainer. They're brimming with fibre for a healthy gut and loads of disease-fighting antioxidants. Plus, they're low in energy, so you can fill up on them for little energy cost. Lastly, a sprinkle of cheese ties it all together and provides a hit of bone-strengthening calcium, too.
Now for my personal favourite.
I love to cook fish fillets in individual parcels in the oven, topped with fresh lemon and a mixture of herbs. It's a seriously tasty protein punch that's super low in calories.
I often make sweet potato wedges to go along with my fish (about half a sweet potato per person) – they're a great source of low GI carbs that provide sustained energy, and turn out a treat when drizzled in a little olive oil before cooking. But don't go all Jamie Oliver on me! Stick to one teaspoon of oil per person when cooking (not guzzle upon guzzle) to keep the energy content under control.
And for an extra hit of veggies, I serve my fish and potatoes with a big leafy green salad, dressed in my favourite mixture of honey, mustard and good quality extra virgin olive oil.
Pizza… say what?! Yep, it can be healthy – but it certainly won't look anything like the kind from your local pizza chain. Sorry!
Start with a small wholemeal or grainy wrap as your base and add tablespoon of tomato paste. Then pile up your toppings, but forget about processed meats like salami and bacon. Instead, make veggies the star of your pizza (think mushrooms, eggplant and zucchini). To top it off, add a handful of shredded BBQ chicken and a light sprinkle of pizza cheese, then cook in the oven and enjoy piping hot.
Not only will making a healthy pizza at home save you kilojoules (and help to avoid extra inches on the waistline), you'll also ramp up your fibre intake which will leave you feeling more satisfied. What's more, the saturated fat and sodium content will be slashed, which is good for the health of your heart.
While you're here check out 3 cheap brekkies that have more protein than eggs. Plus, 6 reasons why this nutritionist never cuts carbs.


A new landscaped riverside garden has been created in Battersea Park in the latest stage of an ongoing series of improvements in the park worth £840,000.
A few days ago The Promontory was officially opened – bringing a hitherto overlooked and unused area of the park back to life as part of a £100,000 scheme.
Using a generous donation of £30,000 from local amenity group The Friends of Battersea Park, combined with £70,000 from the council, this formerly closed off area some 50 metres east of Albert Bridge has been transformed into an attractive landscaped garden, brought to life by renowned designer and landscape architect David Keary of Keary Design Associates.
This previously unused and unkempt piece of land measuring some 50 square metres is now a landmark feature of the park, offering seating and unrivalled views of the Thames and in particular of Albert Bridge.
David Keary's design incorporates sculpted mounds, a meandering path around large trees with shade tolerant plants, while visitors in the spring will see a colourful array of shrubs, ferns and herbaceous perennials, along with a cluster of Japanese maples occupying the garden's centrepiece.
The promontory is one of several areas in Battersea Park to benefit from investment worth £840,000.
Last summer a new £150,000 children's playground was opened close to East Carriage Drive, while a new pedestrian entrance has been created between Chelsea and Rosary Gates, with associated landscaping, connecting with existing paths near the Millennium Arena.
The park's historic Victorian seating shelters have also been refurbished at a cost of £65,000, while £160,000 has been pledged towards the restoration of the Cascade fountain – an important and prominent historic landscape feature which have over time deteriorated and can no longer be used.
The lion's share of the funding was generated as a direct result of staging the Formula E electric motor car racing championships in the park for two years. This raised £500,000 for park improvements, as well as another £2.5m for other frontline council services in Wandsworth.
A further £250,000 has been levied from the developers of the neighbouring Battersea Wharf and Chelsea Bridge Wharf housing schemes.
Environment spokesman Cllr Jonathan Cook said: "Battersea Park truly is one of London's most popular and attractive open spaces. No other park in the capital offers so much to see, do and enjoy.
Battersea Park covers some 200 acres and was opened by Queen Victoria in March 1858 having been created out of fields and marshland to create a place of healthy recreation for the huge numbers of people who had moved to London during the Industrial Revolution.
Under the stewardship of the Greater London Council, the park became somewhat rundown in the 1970s and 80s and it was eventually taken over by Wandsworth in 1986 when the GLC was abolished. Since then, millions of pounds have been spent transforming it into today's popular and much-loved open space.


Sunday September 16 1-2:30 pm on the labyrinth.
Family-friendly; all ages welcome. Everything is optional. Join us for all or any part of the program.
Meet at the Garden Path Labyrinth (east side of sanctuary) on Fremlin at 1 pm.
We'll cast a circle, call in the four directions and the inner masculine and feminine. Then we'll walk the labyrinth, gathering herbs and flowers to make a bouquet or bundle to take home.
We'll sit together and share our experiences of balance (or not balance) and our intentions for the coming season.
After closing the circle, we'll go into Hewett Hall to continue conversation and drinking tea together. If you'd like to bring a snack to share that would be welcome. We will provide some.
Bonus: If you'd like to start your own herb garden, we can help you take root divisions or cuttings to pot up to take home. We have several kinds of mint and sage and lots of chives to share.
Our 6th source recognizes earth-centred spiritual traditions. These celebrations borrow from both neo-pagan and Unitarian traditions.
Coordinator.: Mary Bennett RSVP appreciated but feel free to be spontaneous and just come and join us. If you can come a bit early to help set up it would be very welcome.
There may be apples from our apple orchard ready to pick or pick up!


text:
Armata Imperială Rusă a fost armata terestră a Imperiului Rus de la crearea acestuia în 1721 de către țarul Petru cel Mare până la Revoluția bolșevică din 1917 când se formează URSS. După revoluție Armata Imperială Rusă a fost redenumită în "Armata revoluționareă a Rusiei eliberate".

Note

Rusia
Armata Imperiului Rus

redpajama_set_name: RedPajamaWikipedia


text:
Q: Parsing arguments with defaults and flags I've got a ruby bin with some arguments, namely -s, -c and -r (short for scrape, create and run). Now I'd like to set some defaults to scrape and create ('.' in both cases), but if I use :default in trollop, I can't check wherever that argument is set or not.
project --scrape

should be equivalent to
project --scrape .

how to achieve that?
And while at it, how do I make
project target

to be equivalent with
project --run target

?

A: You can modify ARGV before Trollop processes it.  Your best bet would probably be to scan the input arguments, apply some basic transformations, and then run Trollop.
For example:
args = ARGV.split
idx = args.index '--scrape'
if idx != nil
    if idx < args.length
        if args[idx + 1][0..1] == '--'
            args=args[0..idx] + ['.'] + args[idx+1..-1]
        end
    else
        if args[idx + 1][0..1] == '--'
            args << '.'
        end
    end
end

This snippet should check for --scrape with no parameter following it and add in a '.' in that case.  You can do something similar to check for the omitted --run parameter.  When you are done making your modifications, use args.join(' ') to put the arguments back together into a string.  Assign this new string to ARGV, and then set Trollop loose.

redpajama_set_name: RedPajamaStackExchange


text:
Blue Hill – miejscowość w brytyjskim terytorium zamorskim Wyspa Świętej Heleny, Wyspa Wniebowstąpienia i Tristan da Cunha, położona na Wyspie Świętej Heleny. Według danych z dnia 7 lutego 2016 roku liczyła 158 mieszkańców.

Miejscowości na Wyspie Świętej Heleny, Wyspie Wniebowstąpienia i Tristan da Cunha


Bartek Wieczorek, Polish photographer based in Warsaw. Known mostly for his portraiture and fashion photography is also an author of several photographic projects that can be recognised as an artistic documentary. Born in 1979, he grew up during a transition in Eastern and Central Europe. Bartek seeks what remains of those times in what and who surround him. Flaw is as important to him as beauty and what unites them in his images is honesty.


text:
Canada: Cigarette Use Among Native Canadian Youth in Winnipeg, Manitoba, 1995
In early October 1995 twelve young researchers conducted a pilot inquiry into cigarette use among 12-24 year-old Native Canadians living in the inner city of Winnipeg, Manitoba. This study was funded by the Canadian Federal Ministry of Health and coordinated by the Nechi Institute on Alcohol and Drug Education, with technical support from CIETcanada. The study was in support of efforts to dissuade First Nations youth from taking up cigarette smoking or helping them to quit if they are already addicted.
Out of 622 youth who participated, half were daily smokers of an average of eight cigarettes; 75% of the youth smoked occasionally. Their average age of uptake was 12 years. A youth whose parents disapproved of young people smoking was five times less likely to be a smoker. Those who only have a few friends who smoked were three times more resistant to pressure to smoke than those who had many friends who smoked. Youth who did not drink alcohol were three times less likely to take up smoking. Focus group discussions suggested strategies to reach the Native youth, including peer-to-peer programmes, locally specific comic books and CD ROMs, increase in public health education in schools and role-modeling of parents and teachers.
FOR MORE INFO GO TO OUR
CIET 2018 – Terms of use


Fascism is one of those terms that fits in with "Hitler" on the hit list of left wing name calling that is constantly used by people that don't understand what it means -- they may as well just say "bad", or "evil" to anyone that knows history at all.
While we are at it, let's make sure everyone is on the same meme page. The reference is from "The Princess Bride", the link gives a little background.
I've covered this umpteen times, using "Fascism" and "Hitler" to refer to the political RIGHT is like walking up to me and calling me "Miss" ... for those that don't know me, 6'4", 300ish, bald and bearded. I covered left vs right in detail here all the way back to the French Revolution.
Unlike the Communists, the Fascists did not seek government ownership of the means of production. They just wanted the government to call the shots as to how businesses would be run. They were for "industrial policy," long before liberals coined that phrase in the United States. Indeed, the whole Fascist economic agenda bears a remarkable resemblance to what liberals would later advocate.
The article also references the excellent work "Liberal Fascism" which I have reviewed.
I'm not sure if Trump will be able to establish any really good mythology that works, but he certainly keeps throwing stuff at the wall. The best myths have very tiny pieces of truth and give those that believe in them a "slam dunk" -- "truth" at a general level is antithetical to myth making, since the truth is very rarely anything even close to a "slam dunk" on anything more complex than 2+2=4.
"97% of Scientists" is a great example.
If you want to explore, where you are on a slightly more sensible scale than MERELY left and right, this is an interesting site -- CERTAINLY far from any sort of "perfection", however I think an INDICATOR worth considering. Here is my result.


Republican state Rep. Mike La Rosa rode to an easy victory Tuesday night in Florida House District 42.
La Rosa pulled off a 54 percent to 46 percent win over Democrat Barbara Cady in a district that has trended Democrat to the point where La Rosa swam against a six-point Democratic advantage in voter registration.
The district is similar in many ways to House District 30, where his Republican colleague state Rep. Bob Cortes went down hard Tuesday night.
But La Rosa, the three-term representative from Saint Cloud ran on a campaign that he was had been delivering for the district, watching out for the critical tourism industry as a powerful chairman of the House Gaming Control and Tourism Subcommittee, and was a steady figure in a rapidly-changing Osceola County, while Cady ran largely on homeowners' association rights.


text:
Read an Excerpt from "Making Mexican Chicago" by Mike Amezcua
Author Essays, Interviews, and Excerpts, Chicago, History
February 16, 2022 February 15, 2022 by PublicityTeam
In Making Mexican Chicago, Mike Amezcua explores how the Windy City became a Latinx metropolis in the second half of the twentieth century, offering a powerful multiracial history of Chicago that sheds new light on the origins and endurance of urban inequality. The following excerpt details some of the ways the city's Latino civic leaders and neighborhood groups used grassroots methods to gain political power and community control during the 1970s and '80s.
In October 1981, scholars, artists, and community residents gathered at UICC (University of Illinois at Chicago Circle) for a conference entitled "Art, Architecture and the Urban Neighborhood." Perry R. Duis, a professor of urban history, praised the wave of community revolt that had swept through Pilsen: "Instead of a plan imposed entirely from outside the community, [Benito Juárez High School] was designed with the help of Pilsen residents." Duis remarked on how residents carried out their own aesthetic vision: "The sloping walls reflect the Mexican architectural heritage, not aesthetic ideas imported from outside the neighborhood." Moreover, "the high school project is also significant because it demonstrates one approach to the serious question of urban redevelopment and the rejuvenation of neighborhoods."
As Duis spoke about building an architecture of Latino empowerment, the United Neighborhood Organization (UNO) was setting out to build another movement. Looking to address not just Pilsen, but other Latino colonias, and the political and economic subjugation the very word implied, the community group mounted a campaign to address racial injustice and infrastructural inequality. At the start of the 1980s, plant closures, overcrowded and underfunded schools, and blighted housing conditions continued to grip Latino neighborhoods, while becoming the battleground sites on which Latinos sought to build neighborhood-based power. This new decade would be a period of significant grassroots political mobilization for Latinos themselves, driven by demographic growth, economic and structural neglect, and an inspired politics of self-determination.
When Richard J. Daley died in 1976, he left a political machine in place that could still control and undermine growing Latino political power. City hall continued his long tradition of redrawing district and ward boundaries to prevent Latino supermajorities from manifesting. But gerrymandering could not hide the fact that Latino settlement was widening on the heels of white depopulation. In the Southwest Side and the Bungalow Belt, from 1970 to 1980, population numbers dipped in most communities, with the exception of Pilsen, which saw a minor increase, and Little Village, which showed a significant boost from 62,895 in 1970 to 75,204 in 1980. Pilsen and Little Village were becoming denser during this decade, but Mexicans were also moving south of the river, in hopes of flipping formerly white neighborhoods to Mexican ones.
In the meantime, areas surrounding the Downtown Loop were turning over as well. From the late 1970s to the 1990s, the evisceration of the white tax base continued to guide city hall politics as boosters, planners, and bureaucrats pursued redevelopment schemes to flip valuable real estate in the central city, hoping to bring back suburbanites. In Pilsen, speculators of all stripes, from lawyers to slumlords to former city bureaucrats, seized on this moment to flip their properties and create "colonies" of their own to attract "urban pioneers" and "white homesteaders," displacing poor and working-class Latinos in the process. Community organizations saw this as a project of cultural erasure and outright colonization.
Chicago's late twentieth-century reshuffle did have an economic rationale. In an age of shuttered factories and economic restructuring, reshuffling people across the metropolis could draw new value out of old spaces. Now there was more land to flip thanks to white depopulation and the Community Reinvestment Act (CRA) of 1977, which outlawed classic segregation tools. Flipping neighborhoods from white to Brown or Black, or even from Black and Brown to white, became an economy in its own right in the neoliberal era, when the postindustrial city shifted to dependence on privatized capital and nonstate entities. An entire apparatus formed around it, primarily through the CDC (Community Development Corporations) model, which competed in a marketplace for private (corporate, philanthropic, and foundation) and federal monies to improve, change, or save neighborhoods. Enterprise and empowerment zones were quickly added to the menu of economic development, providing tax incentives for urban space.
Latino civic leaders and neighborhood groups mounted grassroots campaigns for political power and community control. In the political arena, Latino independents challenged the machine and helped build a racial coalition movement that, in 1983, elected Harold Washington as the city's first Black mayor along with a wave of Latino challengers to the city council. But the newfound colonia clout revealed internal divisions as well. Machine loyalists and independents differed over postindustrial politics and how best to invest and revitalize Latino neighborhoods. Some civic leaders— and city hall— viewed ethnic tourism, urban travelers, and the branding of Latino neighborhoods as a positive way to generate needed revenue; others saw it as an invitation to speculators that threatened the relocation of residents. Just as East Pilsen's art colonists grappled with living in a "slum," as one artist put it, Mexican immigrants, Mexican Americans, and Latinos in general had to make meaning out of their new environs in the ever-expanding Far Southwest Side. Throughout the 1980s and 1990s, Latino working-class culture was dispersing, relocating, and suburbanizing as residents shaped their bungalow landscapes and became postindustrial survivors.
While community groups faced federal austerity against urban America, privatized capital, bankers, and strategists pushed an economic rationalization for reshuffling people across the metropolis, at times even packaging the process as the end of segregation. But whether one was displaced by gentrification or living in a working-class bungalow on the Far Southwest Side, what endured was the landscape of whiteness that continued to shape these spatial and economic moves. The real estate market had used Latino buffer communities for years to negotiate white ethnic fragility and hostility, premised on anti-Black racism and, at times, anti-Brown racism or fear of Global South immigrants. Indeed, by the 1990s the old color lines of the mid-twentieth century had somewhat softened, but persistent class and racial inequality continued to resegregate people across metropolitan Chicago. The flipping of colonias is both a history of erasure and of new beginnings. As such, a new colony of a different color was taking hold in Pilsen.
Mike Amezcua is assistant professor of history at Georgetown University.
Making Mexican Chicago is available now on our website or from your favorite bookseller.
Save with Conference Discounts on Many of Our Newest Books Across the Disciplines
Read an Excerpt from "Democracy in the Time of Coronavirus" by Danielle Allen


text:
Q: What is good practice for null reference checks? What is the most efficient way to check for null references on objects? I have seen various code samples that have different ways of checking so of the following which is the most efficient or the one that it is considered best practice to use?
Object.ReferenceEquals(item, null)

item == null

item != null

Object.Equals(item, null)

thanks

A: *

*Object.ReferenceEquals(item, null) compare references and equals to item == null.

*Object.Equals(item, null) compare references for reference types and bitwise for value types, but in reflector it's equal to (item == null) || ((item != null && null != null) && item.Equals(null)).

*item != null code not always equals to !(item == null), but of course result should be equal.

*item == null code not equals to null == item, it's similar to typeof(item).Equals(object) and object.Equals(typeof(item)) method calls.

It differ because you can override !=, ==, Equals.
Use methods with known implementation, null == item is better to code, but harder to read.
Object.ReferenceEquals(null, item) may be faster or not.
P.S. use string.IsNullOrEmpty(item) too

A: For comparing to null, I'd use == or != always, because for null it should always give the same result as ReferenceEquals and Equals anyway (so no need for the extra code).
Edit: It's true that == could be overridden to give a wrong result for null (i.e., true) but that means the override is buggy. To make the code readable I would stick with == and !=.

A: Updated answer
As of C# 7.0 is you can use:
item is null

should be the simplest and most foolproof way. It's same as ReferenceEquals check.

Old answer:
1)
Object.ReferenceEquals(item, null)

This is a good way. Not as concise as I would love, but still great and tells u the intent exactly.
2)
item == null

item != null

There is nothing wrong with this (which is the most elegant) if you are sure == and subsequently != is overloaded correctly. Its easy to write (overload) bad equality operators (and often done). But the real trouble is when you are trying to overload == operator in a class (lets say of value semantic). You cant use == for null checks inside == overloading function of the class since that will cause an infinite recursion. To have one consistent style, I rely on something else.
3)
Object.Equals(item, null)

Again it internally does a ReferenceEquals so there is not much point, but if it semantically makes more sense to you, then go with this.
4)
My approach is to do
(object)item == null

upon which I'm relying on object's own equality operator which can't go wrong. Not so readable so I just wrap in a custom extension method and an overload:
public static bool IsNull<T>(this T obj) where T : class
{
    return (object)obj == null;
}

public static bool IsNull<T>(this T? obj) where T : struct
{
    return !obj.HasValue;
}

It makes more sense since I will need to check against DBNulls too often. So now I have one consistent style all over!
public static bool IsNull<T>(this T obj) where T : class
{
    return (object)obj == null || obj == DBNull.Value;
}

(Do not take off the (object) casting as that's what will prevent infinite recursion when overloading == as stated before)
Additionally the constraint prevents IsNull on value types. Now its as sweet as calling
object obj = new object();
Guid? guid = null;
bool b = obj.IsNull(); // false
b = guid.IsNull(); // true
2.IsNull(); // error

I also have found (object)item == null is very very very slightly faster than Object.ReferenceEquals(item, null) or object.Equals(,) for that matter, but only if it matters (I'm currently working on something where I've to micro-optimize everything!).
To see a complete guide on implementing equality checks, see What is "Best Practice" For Comparing Two Instances of a Reference Type?

A: ReferenceEquals is equivalent to (object)o1==(object)o2. It may be faster than o1==o2 if the equality operator is overloaded. Object.Equals is probably a bit slower.
The difference between == and != isn't performance, but how your program should look like. They can be a bit slower if the == and != operator are overloaded.
But I don't think the performance difference between them matters at all. I'd choose the one that's easiest to read. And that's usually == or !=.
If I throw an exception I usually use == as in:
if(o == null)
  throw new ...;

If null results in a no-op then usually != is appropriate
if(x != null)
{
   ...
}

A: As an extra, don't forget code contracts in .NET 4.0!
System.Diagnostics.Contracts.Contract.Requires(item != null);

Which is not only nice and clear, but allows compile time checking. See Code Contracts in msdn.

A: I always use
item != null

but this is harder to read than
item == null

Object.ReferenceEquals is used to check whether two objects are the same instance.

A: First 2 are the same effectively.
The last however does not only do a reference check, and should not be used for null checking.


text:
Gage Skidmore
Faking Fake News
George F. (Guy) McHendry, Jr.·
On February 17, 2017, President Trump thundered on Twitter, "The FAKE NEWS media (failing @nytimes, @NBCNews, @ABC, @CBS, @CNN) is not my enemy, it is the enemy of the American People!" Declaring the news fake and designating the media an enemy of the people establishes an ominous tone, but is it "news" — is it new? President Trump has redefined fake news, using it reactively to rebut critical media coverage without engaging with counter-claims or providing evidence.
This semester I added a unit on fake news in my freshman level seminar, From Big Brother to Big Data: Surveillance Culture. In class, we explored the role surveillance plays in helping to legitimize and spread fake news. As we discussed the issue, it became clear that the term fake news is being used in two different ways.
Fake News and Partisan Echoes
Fake news is the purposeful creation and dissemination of false information for profit, partisan advantage, or laughs. For example, Buzzfeed reports that a group of young Macedonians created "at least 140 US politics websites" that spread fake news and generated ad revenue during the 2016 election. Fake news preys on partisan biases, mimics the form of legitimate news sources, and goes viral by hijacking the algorithms that control your social media feeds.
Surveillance is essential to the function of social media. Twitter, Facebook, and other social networks exploit a user's posts, clicks, and interests. These networks learn your interests and show you content that you are likely to click (often generating revenue in the process). Your feed is a representation of what Facebook thinks you want to see. Unsurprisingly, that surveillance filters in partisan stories that reinforce your biases and filtering out contrary points of view. Filter bubbles, online social circles where likeminded people bolster each other's preexisting beliefs, create a trained incapacity to challenge alternatives views.
These online echo chambers make users susceptible to fake news. You learn to trust your network and the information in it. However, it only takes one person to introduce a fake story into an echo chamber. Algorithms then spread the faux-article among vulnerable partisan users. Facebook recently revealed many users do not even open fake news stories, trusting the headline and sharing the link instead. Fake news waits for the opportune moment and then dominates a newsfeed.
President Trump Goes to War
Shortly after the election, the left began arguing fake news aided Trump's election. Popular examples of this phenomena include allegations that Clinton was involved in a pedophilia ring, that the Pope told Catholics not to vote for Clinton, or that an FBI agent investigating Clinton's emails was murdered. Such stories overwhelmingly benefited Trump. While the narrative that fake news helped tip the election is inviting, recent analysis suggests the overall impact of these stories was likely very limited. Fake news offered a convenient narrative to explain Trump's election, regardless of its actual impact.
According to Google Trends, interest in fake news increased steadily after the election (especially between November 6 and December 10), before dissipating abruptly. However, something changed in early January. Between January 8 and 14, interest in fake news increased sharply. It was in that same period that the President began using the phrase fake news. However, President Trump's does not use fake news to identify fabricated stories.
President Trump frequently dismisses negative media coverage as "fake news," "FAKE NEWS," or "#fakenews" without arguing the substance of a critical story. Beginning January 11, 2017, President Trump has used the phrase on twenty distinct occasions on his Twitter account alone. When faced with scrutiny over the President's labeling of critical coverage as fake news, CNN reports deputy assistant to the President, Sebastian Gorka, argued that until the media ceases attacking the president they, "are going to continue to say, 'fake news.'" Fake news is one of the administration's favorite rhetorical devices.
The public furor over fake news gives the term legitimacy and potency at undercutting or dismissing stories that get labeled as fake. This urgency removes the need to use fact-checking websites (like PolitiFact or Snopes) to debunk a story. The term functions as an immediate rebuttal. Naming something as fake news dispenses with the difficult work of refuting claims, mustering counter-evidence, and generating responses. When President Trump declares that something is fake news, he avoids dealing with the content of an article.
President Trump weaponized fake news and the same partisan desires that fuel false stories during the election enable the President. Partisan beliefs drive our acceptance or rejection of the President's claims. Alternative facts (#alternativefacts) take root, dismissing non-partisan and partisan criticism of the President. President Trump generates an alternative knowledge economy, acting as the arbiter of truth. In this economy, dissent does not need to be acknowledged or countered.
As President Trump thunders from his bully pulpit, it is essential to stop the dismissal of critical coverage at its face. The president can act as a thought leader, but he cannot become the sole arbiter of truth. Leaders set priorities and enact policies; authoritarians authorize truth.


A Study on Selective Flotation in Low and High Pyritic Copper Sulfide Ores. Solely using C4132 was selected as the best pattern for both feed types with regard to achieving the highest copper grade and the lowest iron recovery. However the selectivity index results showed that the combination of Z11+F7240 provides the highest selectivity of chalcopyrite against pyrite in either low or high pyritic ores.
Since sulphide flotation collectors chemisorb to the target mineral surfaces, because noble metals do not react, collector adsorption on a pure gold surface is not possible. Use of cresylic based dithiophosphates does provide some collection of gold particularly in goldsilver ore flotation.
pyritic lead zinc sulfide ore flotation Copper mining in the United States Copper mining in the United States has been a major industry since the rise of the northern Michigan copper district in the 1840s.
Recycling Process Water in Complex Sulphide Ore DiVA portal. to copperlead products is reduced and they are reporting to zinc products. However zinc . sulphide flotation to be submitted to Journal of Mineral Processing and Extractive method on complex sulphide ore flotation a pilot plant study.
As an example, sodium ethyl xanthate may be added as a collector in the selective flotation of galena (lead sulfide) to separate it from sphalerite (zinc sulfide). This slurry (more properly called the pulp ) of hydrophobic particles and hydrophilic particles is then introduced to tanks known as flotation cells that are aerated to produce bubbles.
Aug 12, 20170183;32;Lead Sulphide, Lead Sulphide Suppliers and Manufacturers at . HOT minerals beneficiation flotation collector for copper lead nickel sulphide BK901 .. Lead and Zinc Ore Flotation Machine / Zinc Ore Mining Machinery.
Flotation Separation of High Sulfur Lead Zinc Ore. Flotation Separation of High Sulfur Lead Zinc Ore 9.25% Zn and 38.62% S is selected from polymetallic sulfide ores in Kazakhstan. The difficulty of study is the effective separation of copper and zinc.
The polymetallic sulfide ores of copper, lead, and zinc are usually processed via flotation, and the concentrates of these three metals and sulfur can be obtained. Valuable elements in the ore are recovered by enriching the concentrate products and can be further recovered via smelting.
pyritic lead zinc sulfide ore flotation LeadZinc ores Danafloat Home The established leadzinc ore flotation processing scheme is to add zinc sulphate (ZnSO4) to the grind to control metal ion activation (sphalerite depression).
Sulphide ores are major sources of base metals like Copper, Lead, Zinc, Nickel, Cobalt etc. Beneficiation of these base metal sulphide minerals is predominating through froth flotation technique. This technology has acclaimed importance as a versatile process for beneficiation of vast variety of sulphide minerals.
Sulfide ores, such as chalcopyrite, sphaelerite, galena, and pyrrhotite, and mixtures of these ores have historically been found with micron size gold particles included in them. This generally involves frother, several collectors (promoters) and possibly some modifying or depressing agents as well.
Leadzinc sulphide ore contains lead sulphide (galena), and zinc sulphide (sphalerite). In the first flotation stage, galena is rendered hydrophobic with an organic collector such as xanthate, while sphalerite is kept from floating by depressants, and in the second flotation stage, activator was used to activated zinc flotation.
Iron sulfide (pyrite, pyrrhotite, marcasite) depressant used in the flotation separation of base metal sulfides. Alternative partial cyanide replacement to depress iron and zinc sulfides in Pb / Zn flotation. A specialty depressant for pyrite gangue, sphalerite and pyrrhotite in lead and copper flotation systems.
In this study, the effect of sodium sulfide, sodium metabisulfite KEYWORDS (SMBS), and their dosages (100, 200, 300, and 400 g/t) were investigated on chalcopyrite and pyrite Chalcopyrite; froth flotation; floatabilities in a high pyritic copper sulfide ore.
The selective flotation of sulfide leadzinc ore is typical industrial practice of leadzinc ore preparation. The separate, selective lead and zinc flotation circuit consists of rougher and scavenger flotation and three stage cleaning circuit of the lead and zinc rougher concentrates, respectively.
flotation of lead and zinc from lead zinc pyrite ore pdf pyritic lead zinc sulfide ore flotation sayorain pyrite from tin ore by froth flotation , Flotation separation and recovery of lead and zinc , .
Pyritic Lead Zinc Sulfide Ore Flotation pyrite in zinc ore flotation in iran. Lead Zinc Ore Flotation Machine For Sale GetDetail Time in Jameson Vol.


2016 Chevrolet Silverado 1500 LT 4D Crew Cab **ONE OWNER**, ***CLEAN CARFAX***, **LOCAL TRADE IN**, BLUETOOTH, **CREW CAB**, **Back-Up Camera**, **HEATED SEATS**, Silverado 1500 LT Z-71, EcoTec3 5.3L V8, 6-Speed Automatic Electronic with Overdrive, 4WD, Summit White, Dark Ash w/Cloth Seat Trim, 4.2" Diagonal Color Display Driver Info Center, 40/20/40 Front Split Bench Seat, 4-Wheel Disc Brakes, ABS brakes, Alloy wheels, Bluetooth® For Phone, Compass, Dual-Zone Automatic Climate Control, E85 FlexFuel Capable, Electronic Stability Control, EZ Lift & Lower Tailgate, Front fog lights, Fully automatic headlights, Heated door mirrors, Heated Driver & Front Passenger Seats, Integrated Trailer Brake Controller, LT Plus Package, Outside temperature display, Power Adjustable Pedals, Power Sliding Rear Window, Preferred Equipment Group 1LT, Rear 60/40 Folding Bench Seat (Folds Up), Rear step bumper, Remote Locking Tailgate, Single Slot CD/MP3 Player, SiriusXM Satellite Radio, Steering wheel mounted audio controls, Theft Deterrent System (Unauthorized Entry), Traction control, Trailering Package, Universal Home Remote. Located in Sioux Falls SD, and serving Mitchell, Yankton, and Brookings, Dell Rapids, Lennox, and surrounding areas.
Hello, I would like more information about the 2016 Chevrolet Silverado 1500, stock# 8644A.
Hello, I would like to see more pictures of the 2016 Chevrolet Silverado 1500, stock# 8644A.


text:
Angola nam deel aan de Olympische Zomerspelen 2016 in Rio de Janeiro, Brazilië. De selectie bestond uit 25 atleten, actief in zeven verschillende sporten, en was daarmee de kleinste ploeg sinds de Spelen van 1988 – met name omdat voor het eerst sinds 1988 de basketbalmannen en -vrouwen van Angola zich niet hadden weten te kwalificeren. Handbalster Luisa Kiala droeg de Angolese vlag tijdens de openingsceremonie.

Deelnemers
(m) = mannen, (v) = vrouwen

Atletiek

Handbal

Judo

Roeien

Schietsport

Zeilen

Zwemmen

Externe link
  Officiële site van de Olympische Zomerspelen 2016

Land op de Olympische Zomerspelen 2016
2016


text:
react同构例子

## 项目初始化

````javascript
// 安装必须包
$ npm install --save react react-dom redux react-redux react-router immutable redux-immutable redux-actions redux-thunk babel-polyfill babel-register body-parser express morgan qs

// 安装开发依赖包
$ npm install --save-dev babel-core babel-eslint babel-loader babel-preset-es2015 babel-preset-react babel-preset-stage-1 eslint eslint-config-airbnb eslint-loader eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react html-webpack-plugin webpack webpack-dev-server redux-logger
````

## 需求
页面显示用户设定值,初始值为0,用户点击+按钮,初始值加一,用户点击-,初始值减一

## 思考
由于我们要使用isomorphic javascript 进行同构,整个客户端划分为三个部分,client(客户端)、server(服务端)、common(公用部分)
common放置的是客户端和服务端的公用部分(consts,actions,reducers,components,containers,store)

### 开发顺序
1. 根据需求把界面划分为一个一个组件component
    1. 由于整个需求比较简单,只需要定义为一个组件既可
    2. 定义组件为Counter
2. 根据界面组件,思考并定义出整个功能的state,定义的state放在consts目录
    1. state需要放置的内容很简单{state:count}
3. 结合组件component和state,抽出可能改变state的actions,根据component分类action,定义出actionTypes放置在consts目录,同时定义好对应的actions
4. 定义好components和containers
5. 定义好reducers和store提供给index.js使用

redpajama_set_name: RedPajamaGithub


Benzodiazepines (benzos) are prescription drugs used to treat anxiety and panic attacks. Unfortunately, anxiety is often a contributing factor in addiction, and it is not unusual for people on these medications to develop an addiction. Extended use of benzodiazepines can have serious health consequences, especially when someone tries to completely cut themselves off from the drug. For this reason, it is extremely important that people with benzodiazepine addiction undergo detoxification in a licensed facility where they can receive treatment for withdrawal symptoms.
It is possible to recover from the effects of benzodiazepine addiction and maintain sobriety, but it requires a team effort. Addiction treatments at Silver Ridge are collaborative, intrinsically-focused, and balanced. Our multi-disciplinary team of experienced professionals can help you and your loved ones through this difficult situation.
Benzos work by increasing the effects of the GABA neurotransmitter. GABA's job is to suppress nerve activity, which can help reduce feelings of stress and anxiety and replace them with a more calming sensation. This can be a useful treatment in the short term, but the more a patient relies on benzos, the more likely they are to develop an addiction.
Because benzos alter the very nature of the brain, it becomes harder for the brain to function without benzos the longer they are used. At this point, cutting off benzos completely can result in serious withdrawal symptoms such as high blood pressure, panic attacks, difficulty concentrating, nausea, and sweating. Withdrawal symptoms can be life-threatening if not properly treated in a detox center.
These symptoms often lead people to crave the drug, as it can provide temporary relief. Unfortunately, this will only make the problems worse in the long run. Your only choice when experiencing cravings is to accept them for what they are and recognize that more benzos is not the answer. Do not try to resist the cravings by convincing yourself you don't really have them. This only causes more internal distress and conflict.
At Silver Ridge, our clients remain in a drug-free premises where they can address their addiction head-on with experienced medical professionals. We use acceptance and commitment therapy to help our clients come to terms with the reality of their addiction and learn new ways of coping with stress and anxiety.


text:
FBL
PERU PERSONALITIES
DON BERNA
Home ᐳ News ᐳ Brief ᐳ Honduras Ex-President's Son Sentenced to 24 Years in US Prison
Former Honduras President Porfirio Lobo
Honduras Ex-President's Son Sentenced to 24 Years in US Prison
CACHIROS / 6 SEP 2017 BY STEVEN DUDLEY EN
Following a case that shook up the Honduras elite, the son of the country's former president was sentenced on September 5 to 24 years in a United States penitentiary for drug trafficking.
Fabio Lobo, the son of former Honduras President Porfirio Lobo, had pleaded guilty on May 16, 2016, to conspiring to import cocaine.
"By his own admission, Fabio Lobo conspired to import huge quantities of cocaine into the US," Acting Manhattan U.S. Attorney Joon H. Kim said in a statement. "To assist traffickers and enrich himself, Lobo used his father's position and his own connections to bring drug traffickers together with corrupt police and government officials. Now, Fabio Lobo has been sentenced to the substantial prison term his crimes merit."
Lobo, the statement adds, "used his and his father's reputation and political network to broker corrupt connections between large-scale Honduran drug traffickers and individuals within the Honduran government, including high-level officials such as sitting Honduran congressmen as well as customs, military, and law enforcement personnel."
SEE ALSO: Honduras Elites and Organized Crime: The Cachiros
The incredible case culminated with incredible testimony during Lobo's sentencing hearings by Devis Leonel Rivera Maradiaga, a member of the Cachiros criminal organization. Rivera Maradiaga detailed the way he and Lobo worked together to move cocaine and the relationship the Cachiros cultivated with the Lobo presidency, including the then-president himself.
Fabio Lobo fancied himself as a fixer, but what he did not foresee was that the Cachiros were ready to negotiate their own deals with the US government. After turning themselves in to US authorities, the Cachiros became cooperating witnesses. Lobo was lured to Haiti for what he thought was a drug deal. Instead, he was captured, deported to face trial, convicted, and now, sentenced to jail.
Lobo is just the tip of the iceberg. As detailed in Rivera Maradiaga's testimony, the reach of criminal organizations like the Cachiros touched the presidency.
In addition to his contact with the Cachiros, President Lobo was also in contact with José Natividad "Chepe" Luna, a Salvadoran drug trafficker based in Honduras. Luna was later assassinated.
Lobo has denied any connections to drug traffickers, and his lawyer reiterated those assertions this week following the sentencing of his son.*
"There is no proof," attorney Brian H. Bieber told La Prensa.
SEE ALSO: Honduras News and Profiles
Other elites have also faced scrutiny and charges, most notably members of the Rosenthal clan. The business behemoth and political juggernaut Jaime Rosenthal Oliva, his son Yani Rosenthal, his nephew Yankel Rosenthal, and one of their family lawyers were accused by US prosecutors of money laundering, presumably also for the Cachiros, among other criminal groups. Yani and Yankel have both pleaded guilty to the charges.
*This story was updated September 7, with a comment from the lawyer of Porfirio Lobo.
CACHIROS ELITES AND CRIME HONDURAS NORTHERN TRIANGLE
CACHIROS
NORTHERN TRIANGLE
Loophole Spurs Large-Scale Land Grabs in Brazil
BRAZIL / 4 JUN 2021
A government registry in Brazil has been used to designate millions of hectares of Amazon forest as rural lands, in…
Venezuela Oil Crisis May Set Limits on PDVSA Impunity
ELITES AND CRIME / 25 FEB 2021
Venezuelan officials may have finally met a PDVSA corruption scandal they cannot allow to go unpunished, hinting at just how…
Paraguay Grapples with Evolving Crime, Persistent Corruption
COCAINE / 26 FEB 2021
Paraguay has long been a key link in South America's drug trafficking chain, but has grown in importance with the…


Being addicted to drugs can cause irreparable damage to a person's life if not treated. Fortunately, there is help in Monticello. When drug abuse is not treated, a person puts them selves at significant physical and psychological risk. At person addicted to drugs is at risk for death and disease. Dealing with an addiction as soon as possible is best. However, it is great whenever an addict is ready to get help. A drug addiction left unchecked or untreated can lead to distressful life for the addict and their family and also death. Our experienced staff will be able to help you with your addiction. Those who live in the Monticello, MN area can call us at the number above.
Addiction to alcohol is also very serious and treatment is necessary. For those that live in Monticello, we can help! Alcohol addiction effects millions of people. An addiction to alcohol must not be ignored. Once a person determines that they have a problem with alcoholism, it is very important that they get help. Individuals who are addicted to alcohol should consider rehab or treatment of some kind. We offer our rehabilitation services in Monticello, MN. Please call us today.
We suggest that those in the Monticello area try rehab that is holistic in nature. A holistic approach treats the entire person. This is also a specialized approach to treatment. We don't agree with a "one-size fits all approach." We will work to come up with a personalized plan. Please call us today if you live in Monticello, MN, our phone number is at the top of this page.
For those in Monticello interested in an effective and holistic approach to rehab, DrugStrategies.org can get help. We will work with you to come up with an individualized plan that addressed your particular needs. Professional, educated and well trained, all adjectives that describe our staff. Our business is helping you get free of alcohol and/or drug abuse. Individuals in Monticello, Minnesota who are interested in utilizing our rehabilitation services can contact us at the number above.


text:
Telcos eyeing share of lucrative cloud, data center market: Report
After competing on mobile services battleground, telecom companies such as Jio and Bharti are keen to get a slice of the lucrative cloud and data center (DC) market, where they have partnered with global players and are looking to offer value-add services, according to a report.
New Delhi: After competing on mobile services battleground, telecom companies such as Jio and Bharti are keen to get a slice of the lucrative cloud and data center (DC) market, where they have partnered with global players and are looking to offer value-add services, according to a report. India is turning out to be one of the favorite markets for the cloud ecosystem -- Software-as-a-Service, Platform-as-a-Service, and Infrastructure-as-a-Service -- given big talent pool, cost arbitrage and the nascent domestic market, said the report by BofA Securities titled 'Telco wars: Now to Cloud/DCs'.
"Telcos Jio/Bharti have partnered with Microsoft (MS)/Amazon (respectively). While the focus of the two partnerships is different as both telcos offer connectivity to enterprise, they are looking to offer value-add services like data center, cyber security etc through these tie-ups," it said.
Indian businesses are increasingly adopting cloud computing services and COVID-19 is accelerating this adoption. Like most markets, Amazon, Microsoft, and Google are aggressively competing with each other to win cloud customers in India, it said.
Simply put, Cloud computing is providing storage and computational power to consumers/businesses from remote data centers via the internet.
"After competing on the mobile front, telcos Jio and Bharti are keen to get a pie of the lucrative Cloud/DC market and have tied-up with Azure/AWS (Amazon Web Services) respectively," BofA Securities note said.
Jio's partnership is exclusively to target the SMEs (Small and Medium Enterprises) and Bharti's partnership focuses on co-creating India specific customised products for Indian enterprises, it said.
"Both have big ambitions in DC expansion," the report said and cited the recent move by Bharti Airtel to sell about 25 per cent stake in its data centre business, Nxtra, to Carlyle Group.
The ensuing data protection bill may act as a catalyst as it would lead to storing data of Indians in the country by the foreign companies.
lucrative cloud
BofA Securities


text:
Q: Set read timeout in Python-Requests Running into the following exception while trying to query a RESTful api(note not my api, so going in and doing anything with the actual server is unfortunately not possible):
javax.naming.NamingException: LDAP response read timed out.
I am using Python-requests to handle all of my GETs, POSTs, etc, and the actual connection appears to always be fine, but when the server is under heavy load it appears to not actually return all of the data before the read timesout. Anybody know of anyway to change the timeout on the read? Looking through the Python-requests documentation, I was only able to find information on changing the connection timeout.
Note, I have read through other read timeout questions, but all were questions regarding Pythons other http/url libraries.

A: Maybe you can set timeout parameter as a tuple, just like
r = requests.get('https://github.com', timeout=(3.05, 27))

The first value of tuple is connection timeout(3.05), the second is read timeout(27)
more details in requests doc: https://requests.readthedocs.io/en/master/user/advanced/#timeouts

A: If you don't set timeouts explicitly your OS will take care of them. Changing global system timeouts are OS-dependant then. Under Linux you can change /proc/sys/net/ipv4/tcp_syn_retries (http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout).


The Front Range Airport owns 14 large T-Hangars renting for $580.00 per month, 48 small T-Hangars renting for $360.00 per month and 12 storage units for $151.00 per month. Your application will reserve your chance for the next available hangar. You may pick up an application at the front counter of the Executive Terminal Building or you may download a copy here.
Floor Area: 1260 sq. ft.
Other Amenities: NEW HANGAR CONSTRUCTION! CONSTRUCTION TO START FIRST OF FEBRUARY!
Floor Area: 2304 sq. ft.
Floor Area: 10000 sq. ft.
Eastern phone district phone and high speed internet wired.


hi all,my situation is,1. all my panel display off such, ND, PFD, engine/warning display and system display -all off - where is the avionic master switch or how to on it ?2. where i can a sort video on cold and dark start up on PSS A330/340 so that we can learn very fast , coz i didn't find in the checklist on start up start from all conditions - master switch off - after start up - which system switch normally on.
There isw no avionics master switch.To start each time with a cold and dark cockpit go to your /FS(/Airbus/Airbus A3XX folder and run the A330 panel configiguration utility application. When it starts, in the top left corner select "start with cold and dark cockpit".To start up:overhead panel (ELEC Section) - BAT 1 ON, BAT 2 ON, APU BAT ON, APU GEN ONoverhead panel (FUEL Section) - Left and Right tanks ON (Airbus SOP is to have pumps for centrre tanks off for takeoff)overhead panel (AIR Section -APU Bleed ONoverhead panel (APU SectionMaster APU SW switch ON, then check lower ECAM that FLAP shows OPEN, then Start ONWatch APU start on Lower ECAM until it shows that APU is AVAIL in green, or wait until Start switch on overhead panel (APU Section) changes to AVAIL in greenpedestal (shift+5Engine start knob IGN/STARTEngine 2 master switch ONwatch Upper EAM until engine is running and stableEngine 1 master switch ONwatch Upper EAM until engine is running and stableEngine start knob NORMThat is the end of the Start sequence. Obviously you will then need to do the remaining after start, taxi and before takeoff checks.


text:
A Separate Peace by John Knowles
Critical Context
Why does the bombing in central Europe seem unreal to Finny and the other boys? What does this reveal about him? Chapter 2
Lorraine Caplan | Certified Educator
starTop subjects are Literature, Social Sciences, and Law and Politics
Gene has an explanation for this in Chapter 2. He says,
Bombs were completely unreal to us here, not because we couldn't imagine it - a thousand newspaper photographs and newsreels had given us a pretty accurate idea of such a sight - but because our place here was too fair for us to accept something like that (30).
He goes on to say that he and his fellow students were "completely selfish" (30) and that there were very few places in the world during this period where anyone had the luxury of being completely selfish.
Gene also tells us that the professors were more "indulgent" (24) than they would have ordinarily been. He says this is because the boys "reminded them of what peace was like..." (24). This indulgence on the part of the professors also contributed to the boys' feeling that the war was not "real."
Even though we are bombarded constantly with information today, from the Internet and from radios, televisions, and newspapers, it is still difficult for us to see all of the terrible events occurring in today's world as "real." This is even more true of young people than of older people, particularly when those young people are at a small private school in a rural setting, far away from the world of war. Those of us who live in the United States are even more prone to this failure of empathy than those who live in other places because we have experienced so few wars on our own soil.
How does war impact the lives of Gene, Finny, Leper, and other characters throughout A Separate...
What details reveal Gene's guilt over his action toward Finny? In addition, how does Gene try to...
In A Separate Peace what effect does Finny's injury have on Gene, the other teachers, and the...
In A Separate Peace, what are the main themes? Please explain and give details.
In A Separate Peace, how would you describe Gene's and Finny's relationship?friendship, human...
In A Separate Peace, what is the point of the rivers being described as they are?
What is the significance of the title A Separate Peace by John Knowles?
In A Separate Peace, what does the tree represent?
How was Finny and Gene's friendship?A Separate Peace by John Knowles
What are the major events in the novel A Separate Peace?There are many events and i want to make...
A Separate Peace Summary
A Separate Peace Themes
A Separate Peace Characters
A Separate Peace Analysis
A Separate Peace Quiz
A Separate Peace Lesson Plans
John Knowles Biography


text:
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// Copyright (c) 2004 Scott Willeke (http://scott.willeke.com)
//
// Authors:
//	Scott Willeke (scott@willeke.com)
//
using LessMsi.Gui.Extensions;
using Microsoft.Tools.WindowsInstallerXml.Msi;
using System;
using System.Collections.Generic;

namespace LessMsi.Gui.Model
{
    internal class MsiPropertyInfo
    {
        #region msdn doc

        //http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream_property_set.asp
        //Codepage 	PID_CODEPAGE 	1 	VT_I2
        //Title 	PID_TITLE 	2 	VT_LPSTR
        //Subject 	PID_SUBJECT 	3 	VT_LPSTR
        //Author 	PID_AUTHOR 	4 	VT_LPSTR
        //Keywords 	PID_KEYWORDS 	5 	VT_LPSTR
        //Comments 	PID_COMMENTS 	6 	VT_LPSTR
        //Template 	PID_TEMPLATE 	7 	VT_LPSTR
        //Last Saved By 	PID_LASTAUTHOR 	8 	VT_LPSTR
        //Revision Number 	PID_REVNUMBER 	9 	VT_LPSTR
        //Last Printed 	PID_LASTPRINTED 	11 	VT_FILETIME
        //Create Time/Date 	PID_CREATE_DTM 	12 	VT_FILETIME
        //Last Save Time/Date 	PID_LASTSAVE_DTM 	13 	VT_FILETIME
        //Page Count 	PID_PAGECOUNT 	14 	VT_I4
        //Word Count 	PID_WORDCOUNT 	15 	VT_I4
        //Character Count 	PID_CHARCOUNT 	16 	VT_I4
        //Creating Application 	PID_APPNAME 	18 	VT_LPSTR
        //Security 	PID_SECURITY 	19 	VT_I4

        #endregion

        private static readonly MsiPropertyInfo[] DefaultMsiPropertySet = new MsiPropertyInfo[]
        {
            new MsiPropertyInfo("Codepage", 1, VT.I2, "The ANSI code page used for any strings that are stored in the summary information. Note that this is not the same code page for strings in the installation database. The Codepage Summary property is used to translate the strings in the summary information into Unicode when calling the Unicode API functions."),
            new MsiPropertyInfo("Title", 2, VT.LPSTR, "Breifly describes the installer."),
            new MsiPropertyInfo("Subject", 3, VT.LPSTR, "Describes what can be installed using the installer."),
            new MsiPropertyInfo("Author", 4, VT.LPSTR, "The manufacturer of the installer"),
            new MsiPropertyInfo("Keywords", 5, VT.LPSTR, "Keywords that permit the database file to be found in a keyword search"),
            new MsiPropertyInfo("Comments", 6, VT.LPSTR, "Used to describe the general purpose of the installer."),
            new MsiPropertyInfo("Template", 7, VT.LPSTR, "The platform and languages supported by the installer (syntax:[platform property][,platform property][,...];[language id][,language id][,...].)."),
            new MsiPropertyInfo("Last Saved By ", 8, VT.LPSTR, "The installer sets the Last Saved by Summary Property to the value of the LogonUser property during an administrative installation."),
            new MsiPropertyInfo("Revision Number ", 9, VT.LPSTR, "Unique identifier of the installer package. In patch packages authored for Windows Installer version 2.0 this can be followed by a list of patch code GUIDs for obsolete patches that are removed when this patch is applied. The patch codes are concatenated with no delimiters separating GUIDs in the list. Windows Installer version 3.0 can install these earlier package versions and remove the obsolete patches. Windows Installer version 3.0 ignores the list of obsolete patches in the Revision Number Summary property if there is sequencing information present in the MsiPatchSequence table."),
            new MsiPropertyInfo("Last Printed", 11, VT.FILETIME, "The date and time during an administrative installation to record when the administrative image was created. For non-administrative installations this property is the same as the Create Time/Date Summary property."),
            new MsiPropertyInfo("Create Time/Date", 12, VT.FILETIME, "When the installer database was created."),
            new MsiPropertyInfo("Last Save Time/Date", 13, VT.FILETIME, "When the last time the installer database was modified. Each time a user changes an installation the value for this summary property is updated to the current system time/date at the time the installer database was saved. Initially the value for this summary property is set to null to indicate that no changes have yet been made."),
            new MsiPropertyInfo("Page Count", 14, VT.I4, "The minimum installer version required. \r\nFor Windows Installer version 1.0, this property must be set to the integer 100. For 64-bit Windows Installer Packages, this property must be set to the integer 200. For a transform package, the Page Count Summary property contains minimum installer version required to process the transform. Set to the greater of the two Page Count Summary property values belonging to the databases used to generate the transform. Set to Null in patch packages.", "0x{0:x}"),
            new MsiPropertyInfo("Word Count", 15, VT.I4, "Indicates the type of source file image.", "0x{0:x}"),
            new MsiPropertyInfo("Character Count", 16, VT.I4, "Two 16-bit words. The upper word contains the \"transform validation flags\" (used to verify that a transform can be applied to the database). The lower word contains the \"transform error condition flags\" (used to flag the error conditions of a transform)."),
            new MsiPropertyInfo("Creating Application", 18, VT.LPSTR, "The software used to author the installation."),
            new MsiPropertyInfo("Security", 19, VT.I4, "Indicates if the package should be opened as read-only:\r\n 0: No restriction \r\n2:Read-only recommended\r\n 4: Read-only enforced")
        };

        private readonly string _valueFormatString = "{0}";

        internal static MsiPropertyInfo[] GetPropertiesFromDatabase(Database msidb)
        {
            List<MsiPropertyInfo> properties = new List<MsiPropertyInfo>();
            using (SummaryInformation summaryInfo = new SummaryInformation(msidb))
            {
                foreach (MsiPropertyInfo prototype in DefaultMsiPropertySet)
                {
                    bool failed = false;
                    object propValue = null;
                    try
                    {
						// Wix has a bug when translating a FILETIME, so we do it manually
						if (prototype.PropertyType == VT.FILETIME)
						{
							propValue = summaryInfo.GetPropertyFileTime(prototype.ID);
						}
						else
						{
							propValue = summaryInfo.GetProperty(prototype.ID);
						}
                    }
                    catch
                    {
                        failed = true;
                    }
					if (!failed)
					{
						properties.Add(new MsiPropertyInfo(prototype, propValue));
					}
                }
            }
            return properties.ToArray();
        }

        private MsiPropertyInfo(MsiPropertyInfo prototype, object value)
        {
            ID = prototype.ID;
            Value = value;

            if (prototype != null)
            {
                Name = prototype.Name;
				PropertyType = prototype.PropertyType;
                Description = prototype.Description;
                _valueFormatString = prototype._valueFormatString;
                switch(PropertyType)
                {
                    case VT.FILETIME:
						// Nothing to do here, we already converted it
						break;
                    case VT.I2:
                    case VT.I4:
                        if (Value is string && Value != null && ((string)Value).Length > 0)
                        {
                            try
                            {
                                Value = Int32.Parse((string)Value);
                            }
                            catch (FormatException )
                            {}
                        }
                        break;
                }
            }
            else
            {
                Name = "non-standard";
				PropertyType = VT.EMPTY;
                Description = "Unknown.";
            }
        }

        private MsiPropertyInfo(string name, int pid, VT propertyType, string description, string valueFormatString = "{0}")
        {
            Name = name;
            ID = pid;
			PropertyType = propertyType;
            Description = description;
            Value = null;
            _valueFormatString = valueFormatString;
        }

        public string Name { get; private set; }

        public int ID { get; private set; }

        public VT PropertyType { get; private set; }

        public string Description { get; private set; }

        public object Value { get; private set; }

        public string ValueFormatString
        {
            get { return _valueFormatString; }
        }

        public string ValueString
        {
            get
            {
                return String.Format(this.ValueFormatString, this.Value);
            }
        }

    }

    internal enum VT : uint
    {
        EMPTY = 0,
        NULL = 1,
        I2 = 2,
        I4 = 3,
        LPSTR = 30,
        FILETIME = 0x40,
    }
}