Comparing the Icelandic and the Irish Model. Lecture held at a conference, The Nordic Models: Resilience in Changing times organized by the TASC, Croke Park, 17 November, 2011.
Plenum-lecture: Regional integration as a resources or challenge: The Nordic/Baltic case. Lecture held at a seminar organized by the Institute of International Affairs and Centre for Small State Studies, University of Iceland, 18. November, 2011.
Comparing the Icelandic and the Irish Model, with Peadar Kirby (University of Limerick). Lecture held at the TASC conference Nordic Models, in partnership with the Danish, Norwegian and Finnish Embassies in Ireland, Dublin, 17 November 2011.
The Economic Crash in Estonia and Iceland: The Neo-Liberal Agenda, Lack of Corporatism and Political Consequences, with Rainer Kattel. Lecture held at the European Consoritium for Political Research (ECPR), Reykjavik, 27 August 2011.
The Icelandic economic collapse: Incompetence or the small size? Keynote lecture held at the Roundtable - Small States and the Global Economic Crisis. European Consoritium for Political Research (ECPR), Reykjavik, 26 August 2011.
Katzenstein's corporatist model and its value in understanding small European states in the neo-liberal would of the 21st century: The case of Iceland. Lecture held at the 18th International Conference of Europeanists, Barcelona, 20-22 June 2011.
How do small states work within the decision-making processes of the EU?. Lecture held at the conference: Croatia at the doorstep of the EU - The role of Croatia as a new EU member state. The Trans European Policy Studies Association (TEPSA), Brussels, 15 June 2011.
Small States and the Economic Crisis: Does European Union Membership Matter? Lecture held at a research seminar on European Integration at the Centre d'Études Européennes, Sciences Po, Paris, 6 June 2011.
Small States and the Economic Crisis: Does European Union membership matter? Lecture held at the Faculty of Political Science, Maria Curie-Sklodowska, Lublin, Poland, 31 May 2011.
Iceland's Foreign Policy in the Post War Period. Lecture held in Maitre de lange, Sorbonne-Paris 4, Malesherbes, France, 14 March 2011.
Background of Iceland's relations with the EU. Lecture held at the European Policy Centre, Workshop - Iceland on the road to the EU, Brussels, 11 February 2011.
The general framework of EU-Iceland relations and the public debate on EU membership in Iceland. Speech held before the Committee on Foreign Affairs at the European Parliament in Brussels, Workshop - Iceland in the EU: Challenges and Prospects, 13 January 2011.


text:
Lawyer picked to fill Batavia City Council vacancy
Thomas M. Connelly
Susan Sarkauskas
Follow @dh_ssarkauskas
A 29-year-old lawyer will fill the 4th Ward vacancy on the Batavia City Council.
At a committee of the whole meeting on Tuesday, aldermen picked Thomas M. Connelly.
"I believe that I will bring a unique and fresh perspective to the city council," Connelly said, due to his young age and because he is a fairly new resident.
Connelly has lived in Batavia for three years, half of that in the 4th Ward.
He and his spouse are expecting their first child, he said.
Mayor Jeff Schielke will formally appoint him at the Oct. 18 council meeting. He will serve until the April 2023 election.
Aldermen interviewed Connelly and two other applicants -- Susan Alderson and Jamie Saam.
Saam is a former alderman. Alderson ran for the post in 2021.
The ward encompasses most of the northwest quadrant of the city.
During the interview, aldermen asked the applicants about a variety of topics, including whether Batavia should build a second downtown bridge, what to do about the Fox River dam, and what they would do if constituents' opinions on an issue differed from what the applicants truly believed was best.
Connelly replaces Joe Knopp, who quit in September to move out of town.
With Connelly's appointment, the 14-member council will have four women and 10 men.
Ex-alderman, two others, apply for Batavia 4th Ward vacancy

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Grabbing some data from a card-body div class Good day.
My script is on progress and I need help or ideas to make it work properly. I am able to grab some data but its not really that readable and useful and your help and ideas are needed.
from bs4 import BeautifulSoup
import requests

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"}
url = "https://bscscan.com/tx/0xb07b68f72f0b58e8cfb8c8e896736f49b13775ebda25301475d24554a601ff97#eventlog"

urlpage = requests.get(url, headers=headers, timeout=10, allow_redirects=False)
soup = BeautifulSoup(urlpage.content, 'html.parser')
price = soup.find('div', class_='d-none d-md-inline-block u-label u-label--price rounded mt-1 ml-n1 text-nowrap').get_text()#.strip()
print ("Price: ", price)

data1 = soup.find('div', class_='card-body').get_text()#.strip()
print (data1)

data2 = soup.find('span', class_='btn btn-icon btn-soft-success rounded-circle').get_text()#.strip()
print (data2)

Current Output:
Price:
BNB: $422.35 (-3.05%) |  5 Gwei

Transaction Hash:
0xb07b68f72f0b58e8cfb8c8e896736f49b13775ebda25301475d24554a601ff97
Status:Success

Squeezed text (173 lines).
206

Wanted Output:
Price:
BNB: $422.35 (-3.05%) |  5 Gwei

207 #-- latest data

Address: 0x81e0ef68e103ee65002d3cf766240ed1c070334d
Topics:  0 0x598cd56214a374d15f638dd04913e0288cd76c7833ee66b15cf55845d875a187
Data
0000000000000000000000000000000000000000000000000000000061b23bae
00000000000000000000000000000000000000000000000000000000979144b0

A: Alternative which caters for always picking up latest transaction (if more transactions added). Because JavaScript doesn't run with requests content isn't as it appears on webpage. You need to target the element with id myTabContent.
I've attempted broadly to go with hopefully more stable selector lists and avoid some of the potentially less robust classes.
import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://bscscan.com/tx/0xb07b68f72f0b58e8cfb8c8e896736f49b13775ebda25301475d24554a601ff97#eventlog', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')

#select price info
price = soup.select_one('#ethPrice').get_text(' ', strip = True)

# select latest event
last_transaction = soup.select_one('#myTabContent div.media:nth-last-child(2)')
latest_number = int(last_transaction.select_one('.btn-icon__inner').text)
address = last_transaction.select_one('a.text-break').text
topic = last_transaction.select_one('li > .text-break').text

print('Price:', price)
print('Latest number:', latest_number)
print('Address:', address)
print('Topics:', topic)
print('Data')
for data in last_transaction.select('[id^=chunk].text-break'):
    print(data.text)

A: Actually,selecting all data according to requirement a little bit complex.I apply css selector,however, you also can apply find_all/find method.
from bs4 import BeautifulSoup
import requests

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"}
url = "https://bscscan.com/tx/0xb07b68f72f0b58e8cfb8c8e896736f49b13775ebda25301475d24554a601ff97#eventlog"

urlpage = requests.get(url, headers=headers, timeout=10, allow_redirects=False)
soup = BeautifulSoup(urlpage.content, 'html.parser')
price = soup.find('div', class_='d-none d-md-inline-block u-label u-label--price rounded mt-1 ml-n1 text-nowrap').get_text()#.strip()
print ("Price: ", price)

for card in soup.select('div.media')[1:2]:
    num=card.select_one('.mt-1.mr-3').text
    print(num)
    address=card.select_one('.col-md-10.mb-0 a').text
    print(address)
    topic=card.select_one('.text-monospace.text-break').text
    print(topic)
    data1=card.select_one('#chunk_2_4').text
    print(data1)

    data2=card.select_one('#chunk_2_5').text
    print(data2)

Output:
Price:
BNB: $422.41 (-3.65%) |  5 Gwei

207
0x81e0ef68e103ee65002d3cf766240ed1c070334d
0x598cd56214a374d15f638dd04913e0288cd76c7833ee66b15cf55845d875a187
0000000000000000000000000000000000000000000000000000000061b23bae
00000000000000000000000000000000000000000000000000000000979144b0

It's working. The problem was data2=card.select_one('#chunk_2_5') not exist so you are getting None type error but everything is okey:
from bs4 import BeautifulSoup
import requests

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"}
url = "https://bscscan.com/tx/0x173c462e910c95a67c119c61566330a835e4785221e247fada6d2279052519f1#eventlog"

urlpage = requests.get(url, headers=headers, timeout=10, allow_redirects=False)
soup = BeautifulSoup(urlpage.content, 'html.parser')
price = soup.find('div', class_='d-none d-md-inline-block u-label u-label--price rounded mt-1 ml-n1 text-nowrap').get_text()#.strip()
print ("Price: ", price)

for card in soup.select('div.media')[1:2]:
    num=card.select_one('.mt-1.mr-3').text
    print(num)
    address=card.select_one('.col-md-10.mb-0 a').text
    print(address)
    topic=card.select_one('.text-monospace.text-break').text
    print(topic)
    data1=card.select_one('#chunk_2_4').text
    print(data1)
    # data2=card.select_one('#chunk_2_5').text
    # print(data2)
    #If you need all updated data
    #for all_data in card.select('[id^=chunk]'):
        #print(all_data.text)

Output:
Price:
BNB: $422.25 (-3.15%) |  5 Gwei

315
0x7ee058420e5937496f5a2096f04caa7721cf70cc
0x694af1cc8727cdd0afbdd53d9b87b69248bd490224e9dd090e788546506e076f
0000000000000000000000000000000000000000000000000000000062e6b858

redpajama_set_name: RedPajamaStackExchange


text:
Pang Kwong LI, Lingnan University, Hong KongFollow
Contemporary Hong Kong politics : governance in the post-1997 era
Hong Kong University Press
The sudden resignation of Tung Chee-hwa as chief executive (CE) of the Hong Kong Special Administrative Region (HKSAR) in March 2005 surprised Hong Kong. Donald Tsang, the former chief secretary for administration, won the CE by-election on 16 June 2005. He was then appointed by the Central People's Government (CPG) and assumed office on 21 June 2005. Handpicked by former President Jiang Zemin, Tung had earned the trust of the CPG. Unfortunately, the performance of Tung's government was regarded by many of his fellow citizens as far from satisfactory. The reasons for the under-performance were various. The 1997 Asian financial crisis provided too much of a challenge and burden for the newly-formed HKSAR government. Tung himself, underprepared and ill-equipped to lead the executive, found it hard to mount a prompt and effective response to the crisis. The institutional design for selecting the CE and forming the executive was also flawed. This chapter therefore examines the establishment and functions within the executive branch of the HKSAR. How the CE and the executive govern, and their interaction with the Legislative Council in terms of general policymaking and budgetary decision-making processes, are also discussed. Lastly, possible developments and the emerging reforms are considered.
Copyright © Hong Kong University Press 2007
Li, P.-k. (2007). The executive. In W.-m. Lam, P. L.-t. Lui, W. Wong, & I. Holliday (Eds.), Contemporary Hong Kong government and politics (pp.23-37). Hong Kong: Hong Kong University Press.


text:
Home/Articles/Brain power/MIT spinout aims to make data scientists heroes
MIT spinout aims to make data scientists heroes
Adi Gaskell24 Jan 2018
Originally posted on The Horizons Tracker.
Data seems to be everywhere at the moment, and the challenge has progressed from collecting it to making sense of it, whether that's ensuring the data is actually usable or deriving insights from it. This challenge is exacerbated by a general shortage in employees skilled in data science.
Even when you have the talent available however, getting the insights out of vast swathes of data can be incredibly time consuming. This is the challenge that MIT spinout Endor set out to solve. Their platform aims to let any lay person upload raw data and then query that data with a simple, natural language business question. It's a Google for your data essentially, albeit the responses take around 15 minutes rather than 15 nanoseconds, but that is still a big improvement on the time it takes human beings to perform the same task.
The startup began life at the famed MIT Media Lab and counts social physics guru Alex "Sandy" Pentland as a co-founder. Social physics uses AI and maths to better understand and eventually predict crowd behaviors.
Finding the needle in the haystack
Of course, as with any search engine, it's important that you know the right question to ask, and indeed to know your 'unknown unknowns', so the platform comes with a query-builder tool to help you create the right question.
"It's just like Google. You don't have to spend time thinking, 'Am I going to spend time asking Google this question?' You just Google it," the team say. "It's as simple as that."
The company has already secured some major customers, including Walmart and Mastercard, whilst it has also been mining Twitter for potential terrorists for a defence agency.
The tool aims to provide a richer insight into data by ensuring that human behaviors are taken into account. Simply querying media is relatively easy as the problem is static, but human behavior changes all the time.
"In general, you need a lot of data to build accurate models for human behavior, and that means you have to rely on the past. Because you rely on the past, you cannot detect things that recently happened, and you can't predict human behavior," the team say.
By using social physics however, they are able to imbue the system with much better understanding of crowd dynamics. The technology extracts clusters of behavioral commonalities from the raw data, and what's more, can do so much faster than traditional machine-learning based approaches.
Suffice to say, the tool isn't designed to replace the work data scientists do, but rather to compliment their work and empower them to perform faster and more effectively. Hopefully this will reduce the bottleneck that exists within many companies and truly allow them to get rapid insights from the data they hold.
AI artificial intelligence big data data data science machine learning
Adi Gaskell
I'm an old school liberal with a love of self organizing systems. I hold a masters degree in IT, specializing in artificial intelligence and enjoy exploring the edge of organizational behavior. I specialize in finding the many great things that are happening in the world, and helping organizations apply these changes to their own environments. I also blog for some of the biggest sites in the industry, including Forbes, Social Business News, Social Media Today and Work.com, whilst also covering the latest trends in the social business world on my own website. I have also delivered talks on the subject for the likes of the NUJ, the Guardian, Stevenage Bioscience and CMI, whilst also appearing on shows such as BBC Radio 5 Live and Calgary Today.
Mass food markets – the Facebook of African food systems
Testing the reliability of research data
Research reveals the public is largely unaware of the use of AI In journalism
The global state of open data
How human forecasters collaborate with machines


Sherwood Automotive LLC, Korean Auto Imports (KAI) was proud to be an exhibitor at the 2009 SEMA show in Las Vegas Nevada. Special thanks to our partners Tomato A&P, FNB VEGA, Vmaxx Germany ane Eta Beta Wheels Italy!
Please enjoy some of our personal pictures from the show!


My uniform of the RAF is really beautiful very beautiful quality, which I recommend for those they want to do RAF !!
Shipping fast and neat and very good communication, thank you again WPG you are really professionals!
The material and the cut on this jacket is Spot On compared to my original.
Highly authentic and highly recommended.
Very nice jacket made with good material. The only thing i'm asking myself is if the belt was really sew at the rear?? I can not centered the belt buckle with the buttons.
As usual items arrived very promptly and are exactly as described on site.


text:
9:00 am17 Dec 2009
We Love Drinks: Jason Robey
Jason Robey, New Heights. Photo courtesy of Pfau Communications.
We Love Drinks continues our series where we look behind the bar, profiling the many people – from mixologists to bartenders, sommeliers to publicans – who make your drinks experience happen.
Charred rosemary? Curried pumpkin seeds? Beet juice? Not to mention the bubbling pots behind the bar… what's going on here?
You might think you were in some mad scientist's laboratory, except that the guy torching a "lollipop" of tightly wound orange peel is actually extremely laid-back. This is Jason Robey, mixologist at New Heights, a native of southern Maryland back in DC by way of New York and North Carolina. His return is thanks to the recession, and that may be the best thing the economic downturn has done for our city. His drinks have just the proper blend of alcohol and aesthetics, with only as much flash as is absolutely necessary.
Jason strikes me as a perfectionist, but without any uptight vibe. His bar preparation set-up takes two hours. His infusions take anywhere from one to two weeks. There's an evident amount of care and dedication that goes into the background work before your glass even hits the bar. Not afraid to experiment, Jason still manages to maintain a very practical style in what is after all a warm and inviting bar.
And like the best bartenders, he has a self-deprecating wit. I'm beginning to think that's part of the job description. He was planning a cocktail riff on the classic Maryland crab boil the night I visited. It took a minute to realize he wasn't actually joking. If anyone could pull that one off, it would be Jason.
"You know how I think of all these drinks?" he asks.
I shake my head.
"In the shower."
Jason strives to match the philosophy of the slow food movement to the drinks he creates. "If there's a beet salad being served upstairs in the dining room," he says, "you'll find a beet cocktail downstairs in the bar." This means he's always keeping up with what's in season and what's on the food menu at New Heights. This links the downstairs bar, which could easily feel isolated from the upstairs dining room, to the restaurant as a whole.
"Borracha Remolacha" by Jenn Larsen on Flickr
I was a little wary of said beet cocktail, the Borracha Remolacha, having a strong aversion to taste of the root vegetable. But the color, a strikingly bold reddish purple, was breathtaking. So the aesthetics of the drink convinced me to try this concoction which also includes El Tesaro tequila and agave nectar – and I was won over by the unusual taste, still vegetal but only slightly.
I'm also a sucker for pyrotechnics. Torching the orange peel "lollipop" garnish for this drink isn't about flash without substance, though. It provides a very specific flavor that enhances the drink both to the palate and to the eye.
"Flaming Garnish" by Jenn Larsen on Flickr
"I'm very much about aesthetics when it comes to drinks," Jason says as he prepares the garnish for The Cringer – a cranberry spiked with charred rosemary leaves. One of the reasons I think he takes such care with his garnishes is that you smell Jason's drinks before you taste them. Involving multiple senses – sight, smell, taste – pumps up the slow food correlation. But these are simple additions, not overwhelming, just right. The Cringer also highlights Jason's love of using infusions – the base is cranberry and ginger infused Stolichnaya vodka. This is a very pretty drink, no mistake – but with the charred rosemary hitting your nose first, then the cranberry tartness, then the ginger – it's pretty complex as well.
"The Cringer, detail" by Jenn Larsen on Flickr
Infusions are definitely Jason's forte. I almost went mad tasting his spiced rum – the scent made me want to crawl into the bottle and take a bath in it. His grandmother's spiced apple cider recipe was equally delicious, so perfect for the cold season the next time I get the sniffles it's off to Jason's bar to be cured. The spiced rum forms the base of his show-stopper cocktail, Pumpkin "The Great" – a gorgeous mixture including pumpkin puree and a crazy rim of crushed graham crackers and red curry spiced pumpkin seeds. The combination of curry and pumpkin punches the flavor up and away from being cloying.
"Pumpkin The Great" by Jenn Larsen on Flickr
It's the small details that really make or break a cocktail for me, and observing Jason it became quickly apparent that he really takes the time to think these touches through. As I was sampling How to "Make" an Apple I noticed flecks of black. "It's Tahitian vanilla bean," he explained, "I use just a little in a simple syrup for the base." It's a very subtle detail in a bold drink where apple and Maker's Mark bourbon are the strongest flavors – but it does really make an apple, black vanilla bean specks mimicking apple seeds. You might not even notice the smallest of details like that, but that doesn't mean he'd omit them.
"How to Make an Apple" by Jenn Larsen on Flickr
It's not all cocktails at New Heights, of course, the downstairs bar doubling as the Gin Joint featuring an incredibly diverse selection enabling patrons to delve in to different styles with just ice or several kinds of tonic. Jason's also passionate about tequila and is almost religious on the subject of the Margarita. "My rail is Patron," he says with a twinkling eye. It's no surprise though when I ask him how he likes to approach his customers and he replies, "How would you prefer it made?" After all, this is a bar where everyone who arrives is instantly treated like a member of the family in a comfortable and relaxed vibe, with courtly owner Umbi Singh hovering proudly.
The first time I visited New Heights to write about gin flights, Jason was out. I think it's a testament to his skill and friendly, open personality that the entire night everyone, from the bartender covering him to the patrons and the owner, kept talking about him with true affection. Dedication, attention to detail, and a culinary approach to cocktails are the hallmarks of Jason's style, and I encourage you to pull up a barstool and watch him work some magic.
Many thanks to Jason Robey for letting me shadow him for the second We Love Drinks profile feature, and to Sangeetha Sarma for making the introduction. A special thanks to New Heights owner Umbi Singh.
Jenn Larsen
As one of the founding editors of We Love DC, Jenn's passions are theater and cocktails. After two decades in the city, she's loved every quirky, mundane, elegant, rude minute of her DC life. A proud advocate for DC's talented drinks scene, she's judged the Corcoran Gallery of Art's ARTINI contest, the DC Rickey Month contest, the Jefferson Hotel's Quill Cocktail competition, and is a founding member of LUPEC DC. A graduate of Catholic University's drama program, she toured the country as a member of National Players, and has been both an actor and a costume designer before jumping the aisle to theater criticism. Writing for We Love DC restored her happiness after a life-threatening illness, and she's grateful to you, dear readers. Send your suggestions to jenn (at) welovedc (dot) com and follow her on Twitter.
This entry was posted in: Interviews, People, The Features, We Love Drinks
Tagged cocktails, Jason Robey, New Heights
One thought on "We Love Drinks: Jason Robey"
See Jenn's RSS Feed More By Jenn
As one of the founding editors of We Love DC, Jenn's passions are theater and cocktails. After two decades in the city, she's loved every quirky, mundane, elegant, rude minute of her DC life. A proud advocate for DC's talented drinks scene, she's judged the Corcoran Gallery of Art's ARTINI contest, the DC Rickey Month contest, the Jefferson Hotel's Quill Cocktail competition, and is a founding member of LUPEC DC. A graduate of Catholic University's drama program, she toured the country as a member of National Players, and has been both an actor and a costume designer before jumping the aisle to theater criticism. Writing for We Love DC restored her happiness after a life-threatening illness, and she's grateful to you, dear readers. Send your suggestions to jenn (at) welovedc (dot) com and follow her on Twitter.


text:
He added that the State Board of Elections should "act immediately" and certify the results because "anything else is a disservice to the people of the Ninth District". In other words, McCrory attributed fraud to the Democratic Party.
Boyd also listed Dowless' office address when she dropped off over 230 voter registration forms at the Robeson County Board of Elections in September, according to board records reviewed by HuffPost.
The pattern was first identified by Michael Bitzer, a political scientist at Catawba College in Salisbury, NC.
Dallas Woodhouse, the state party's executive director, initially said he hadn't been alerted to the potential of absentee fraud by a Harris-hired consultant, Leslie McCrae Dowless, before admitting that he may have just shrugged them off in the heat of the campaign fight.
"There is reason to doubt the capacity of the state board of elections", Bishop said. If accurate, those results would mean every unaffiliated absentee voter, as well as some Democrats, went for the Republican. Why, for instance, did a lopsided share of absentee ballots that were counted favor Mr. Harris, while an overwhelming amount of ballots requested but never returned or counted came from areas likely to favor McCready?
Harris, the Republican candidate, won 61 percent of the mail-in ballots that were turned in. He has denied any wrongdoing to The Charlotte Observer. The Harris campaign and Red Dome founder Andy Yates didn't respond to an email seeking comment.
The elections board is investigating, said spokesman Patrick Gannon.
There are also claims that incomplete ballots were collected and then filled out later, Cohen said.
However, he said that if the investigation shows that the outcome would not have been changed, Republican candidate Harris should be certified the victor.
If the results are certified when the board meets December 21, the loser can contest the result within 30 days.
Republicans said one of the things that made them concerned about the board's ability to handle the investigation is that the board hadn't taken action even though Joshua Malcolm, who is now the board's chairman, said he had been aware of similar allegations "for years." A North Carolina woman on Tuesday admitted to illegally "harvesting" ballots for a contractor working for Harris' campaign.
Pelosi, who's nominated to become House speaker when Democrats take control in January, said Thursday that 'any member-elect can object to the seating and the swearing-in of another member elect.' She also noted the investigative power of the House to determine race winners.
In North Carolina, several state Senate Republicans whose districts overlap the 9th called for further scrutiny of voting irregularities going back to 2010 and urged Democratic Gov. Roy Cooper to create a bipartisan task force - separate from the state elections board - to investigate irregularities beyond this year's election.
Manchester United have time to get back into top four - Jesse Lingard
Mortal Kombat 11 Announced, Launching Globally April 23
Hezbollah Operative Caught on Camera in 'Attack Tunnel' to Israel, Claims IDF
Pele Says Lionel Messi Is One Footed And 'Only Has One Skill'
Microsoft's Chromium-based Edge is real, and it's coming to the Mac
Facebook's ranking drops in 'best places to work' list
Watch The Game Awards Live Here
Burger King Trolls McDonald's By Offering Penny Burgers Only While At McDonald's
Pregnant Duchess Meghan Markle's Growing Baby Bump Visible During Christmas Carol Event
Kevin Hart Deletes Homophobic Tweets Following Controversy
Fortnite Season 7 Battle Pass skins
Markets Right Now: Stocks turn jittery again, Dow sinks 700
NASA Picks Nine Companies for Commercial Lunar Lander Missions
Trump reportedly picks Heather Nauert to be United Nations ambassador
New Game Of Thrones Season 8 Teaser Points To An Epic Showdown
Trump's New Jersey Golf Resort Employs Illegal Immigrants
New satellite images reveal North Korea is expanding key missile base
Trump lashed out at the New York Times , calling the newspaper's report about North Korea's missile bases "fake news". No North Korean leader has travelled to South Korea since the end of the Korean War, which killed millions.
Government publish Brexit legal advice they didn't want you to see
If parliament rejects her deal, May has warned Britain could leave without a deal or that there could be no Brexit at all. Mrs May said: "We have delivered a deal that honours the vote of the British people".
Rajinikanth starrer 2.0 earns Rs 500 crore worldwide
The film, which hit screens on November 29, has touched the Rs 500 crore mark worldwide within seven days of its release. It is expected that the film will break the record of Baahubali 2 , which collected Rs 13 crore in its lifetime run.
Evers to appeal to Walker to veto GOP power play
Gerrard frustrated by Rangers' lack of discipline in Aberdeen defeat
US dollar falls amid fears of slowdown in economic growth
Kevin Durant Says LeBron James-Led Teams Are 'Toxic'
Singer Mika Singh Detained in UAE On Charges Of Harassing Woman
Jesse Lingard questions Jose Mourinho about THIS after Arsenal draw
Volkswagen to roll out its last petrol and diesel engines by 2026
JOE RUSSO: CHRIS EVANS 'Not Done Yet' as CAPTAIN AMERICA
Huawei finance chief Meng Wanzhou arrested in Canada


We specialise in finding roles for IT professionals in the areas of business analysis, IT management, data analysis, project management, programming and development in China.
Our consultants recruit mid to senior-level IT professionals across the commerce and financial services sectors and are experts in their niche areas. Because we're specialists, we can offer you in-depth understanding of your career goals.
We've been helping IT professionals find jobs in China since 2007.
Our specialist IT consultants understand your needs because many of them have industry experience. We'll meet you for an in-depth discussion about your career objectives and then proactively approach companies on your behalf.
If you've been wondering what your next move is, here are a few things to consider before making any significant career changes.


If patrons wish to take advantage of the special Nunsense Xmas meal prior to show, the cost per head is $25 per person and they must book this with the Commercial Club and pay separately. The meal will be served in the Nathan room.
Nunsense – Tabled Seating Booked Out!!!!


text:
<?php

namespace EzMail\Service;

use DateTime;
use DateTimeZone;
use EzMail\Mail\Message\Mandrill as MandrillMessage;
use Zend\Http\Request  as HttpRequest;
use Zend\Http\Response as HttpResponse;
use Zend\Mail\Address;
use Zend\Mail\Message;

class MandrillService extends AbstractMailService
{
    /**
     * API endpoint
     */
    const API_ENDPOINT = 'https://mandrillapp.com/api/1.0';

    /**
     * Mandrill API key
     *
     * @var string
     */
    protected $apiKey;

    /**
     * @param string $apiKey
     */
    public function __construct($apiKey)
    {
        $this->apiKey = (string) $apiKey;
    }

    /**
     * ------------------------------------------------------------------------------------------
     * MESSAGES
     * ------------------------------------------------------------------------------------------
     */

    /**
     * @link https://mandrillapp.com/api/docs/messages.html#method=send
     * @param  Message       $message
     * @param  DateTime|null $sendAt
     * @return array
     */
    public function send(Message $message, DateTime $sendAt = null)
    {
        if ($message instanceof MandrillMessage && $message->getTemplate()) {
            return $this->sendTemplate($message, $sendAt);
        }

        $response = $this->prepareHttpClient('/messages/send.json', $this->parseMessage($message, $sendAt))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Set a message from a template stored at Mandrill
     *
     * @link https://mandrillapp.com/api/docs/messages.html#method=send-template
     * @param  MandrillMessage $message
     * @param  DateTime|null   $sendAt
     * @return array
     */
    public function sendTemplate(MandrillMessage $message, DateTime $sendAt = null)
    {
        $response = $this->prepareHttpClient('/messages/send-template.json', $this->parseMessage($message, $sendAt))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all the information about a message by its Mandrill id
     *
     * @link https://mandrillapp.com/api/docs/messages.JSON.html#method=info
     * @param  string $id
     * @return array
     */
    public function getMessageInfo($id)
    {
        $response = $this->prepareHttpClient('/messages/info.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get the scheduled messages, optionally filtered by an email To address
     *
     * @link https://mandrillapp.com/api/docs/messages.JSON.html#method=list-scheduled
     * @param  string $to
     * @return array
     */
    public function getScheduledMessages($to = '')
    {
        $response = $this->prepareHttpClient('/messages/list-scheduled.json', array('to' => $to))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Cancel a scheduled message using the mail identifier (you get it by from send methods or getScheduledMessages method)
     *
     * @link https://mandrillapp.com/api/docs/messages.JSON.html#method=cancel-scheduled
     * @param  string $id
     * @return array
     */
    public function cancelScheduledMessage($id)
    {
        $response = $this->prepareHttpClient('/messages/cancel-scheduled.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Reschedule an already scheduled message to a new date
     *
     * @link https://mandrillapp.com/api/docs/messages.JSON.html#method=reschedule
     * @param  string   $id
     * @param  DateTime $sendAt
     * @return array
     */
    public function rescheduleMessage($id, DateTime $sendAt)
    {
        // Mandrill needs to have date in UTC, using this format
        $sendAt->setTimezone(new DateTimeZone('UTC'));

        $parameters = array('id' => $id, 'send_at' => $sendAt->format('Y-m-d H:i:s'));

        $response = $this->prepareHttpClient('/messages/reschedule.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ------------------------------------------------------------------------------------------
     * USERS
     * ------------------------------------------------------------------------------------------
     */

    /**
     * Get the information about the API-connected user
     *
     * @link https://mandrillapp.com/api/docs/users.html#method=info
     * @return array
     */
    public function getUserInfo()
    {
        $response = $this->prepareHttpClient('/users/info.json')
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Validate an API key and respond to a ping
     *
     * @link https://mandrillapp.com/api/docs/users.html#method=ping
     * @return array
     */
    public function pingUser()
    {
        $response = $this->prepareHttpClient('/users/ping.json')
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * SENDERS
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Get the senders that have tried to use this account, both verified and unverified
     *
     * @link https://mandrillapp.com/api/docs/senders.html#method=list
     * @return array
     */
    public function getSenders()
    {
        $response = $this->prepareHttpClient('/senders/list.json')
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get the sender domains that have been added to this account
     *
     * @link https://mandrillapp.com/api/docs/senders.html#method=domains
     * @return array
     */
    public function getSenderDomains()
    {
        $response = $this->prepareHttpClient('/senders/domains.json')
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get more detailed information about a single sender, including aggregates of recent stats
     *
     * @link https://mandrillapp.com/api/docs/senders.html#method=info
     * @param  string $address
     * @return array
     */
    public function getSenderInfo($address)
    {
        $response = $this->prepareHttpClient('/senders/info.json', array('address' => $address))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get recent detailed information (last 30 days) about a single sender
     *
     * @link https://mandrillapp.com/api/docs/senders.html#method=time-series
     * @param  string $address
     * @return array
     */
    public function getRecentSenderInfo($address)
    {
        $response = $this->prepareHttpClient('/senders/time-series.json', array('address' => $address))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * TAGS
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Delete a tag permanently
     *
     * @link https://mandrillapp.com/api/docs/tags.html#method=delete
     * @param  string $tag
     * @return array
     */
    public function deleteTag($tag)
    {
        $response = $this->prepareHttpClient('/tags/delete.json', array('tag' => $tag))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get recent detailed information (last 30 days) about a single tag, including aggregates of recent stats
     *
     * @link https://mandrillapp.com/api/docs/tags.html#method=time-series
     * @param string $tag
     * @return array
     */
    public function getRecentTagInfo($tag)
    {
        $response = $this->prepareHttpClient('/tags/time-series.json', array('tag' => $tag))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get more detailed information about a single tag, including aggregates of recent stats
     *
     * @link https://mandrillapp.com/api/docs/tags.html#method=info
     * @param string $tag
     * @return array
     */
    public function getTagInfo($tag)
    {
        $response = $this->prepareHttpClient('/tags/info.json', array('tag' => $tag))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all of the user-defined tag information
     *
     * @link https://mandrillapp.com/api/docs/tags.html#method=list
     * @return array
     */
    public function getTags()
    {
        $response = $this->prepareHttpClient('/tags/list.json')
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * REJECTION (BLACKLIST)
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Add an email to the rejection blacklist (optionally in a subaccount)
     *
     * @link https://mandrillapp.com/api/docs/rejects.html#method=add
     * @param string $email
     * @param string $subaccount
     * @param string $comment
     * @return array
     */
    public function addRejectionBlacklist($email, $subaccount = '', $comment = '')
    {
        $response = $this->prepareHttpClient('/rejects/add.json', compact('email', 'subaccount', 'comment'))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Deletes an email rejection blacklist. There is no limit to how many rejections you can remove from your
     * blacklist, but keep in mind that each deletion has an affect on your reputation
     *
     * @link https://mandrillapp.com/api/docs/rejects.html#method=delete
     * @param  string $email
     * @param  string $subaccount
     * @return array
     */
    public function deleteRejectionBlacklist($email, $subaccount = '')
    {
        $response = $this->prepareHttpClient('/rejects/delete.json', compact('email', 'subaccount'))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all the email rejection blacklist
     *
     * @link https://mandrillapp.com/api/docs/rejects.html#method=list
     * @param  string $email
     * @param  bool   $includeExpired
     * @param  string $subaccount
     * @return array
     */
    public function getRejectionBlacklist($email = '', $includeExpired = false, $subaccount = '')
    {
        $parameters = array(
            'email'           => $email,
            'include_expired' => $includeExpired,
            'subaccount'      => $subaccount
        );

        $response = $this->prepareHttpClient('/rejects/list.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * REJECTION (WHITELIST)
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Add an email to the rejection whitelist
     *
     * @link https://mandrillapp.com/api/docs/whitelists.html#method=add
     * @param string $email
     * @return array
     */
    public function addRejectionWhitelist($email)
    {
        $response = $this->prepareHttpClient('/whitelists/add.json', array('email' => $email))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Deletes an email rejection whitelist
     *
     * @link https://mandrillapp.com/api/docs/whitelists.html#method=delete
     * @param  string $email
     * @return array
     */
    public function deleteRejectionWhitelist($email)
    {
        $response = $this->prepareHttpClient('/whitelists/delete.json', array('email' => $email))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all the email rejection whitelist
     *
     * @link https://mandrillapp.com/api/docs/whitelists.html#method=list
     * @param  string $email
     * @return array
     */
    public function getRejectionWhitelist($email = '')
    {
        $response = $this->prepareHttpClient('/whitelists/list.json', array('email' => $email))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * URLS
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Get the 100 most clicked URLs optionally filtered by search query
     *
     * @link https://mandrillapp.com/api/docs/urls.html#method=list
     * @link https://mandrillapp.com/api/docs/urls.html#method=search
     * @param  string $query
     * @return array
     */
    public function getMostClickedUrls($query = '')
    {
        if (empty($query)) {
            $response = $this->prepareHttpClient('/urls/list.json')
                             ->send();
        } else {
            $response = $this->prepareHttpClient('/urls/search.json', array('q' => $query))
                             ->send();
        }

        return $this->parseResponse($response);
    }

    /**
     * Get the recent history (hourly stats for the last 30 days) for a url
     *
     * @link https://mandrillapp.com/api/docs/urls.html#method=time-series
     * @param  string $url
     * @return array
     */
    public function getRecentUrlInfo($url)
    {
        $response = $this->prepareHttpClient('/url/time-series.json', array('url' => $url))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * SUB ACCOUNTS
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Add a new subaccount to Mandrill
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=add
     * @param  string   $id   Unique identifier (max of 255 characters)
     * @param  string   $name Optional display name to identify the subaccount (max of 1024 characters)
     * @param  string   $notes Optional text associated with the subaccount
     * @param  int|null $customQuota Optional manual hourly quota for subaccount (let null for letting Mandril decide)
     * @return array
     */
    public function addSubaccount($id, $name = '', $notes = '', $customQuota = null)
    {
        $parameters = array(
            'id'           => $id,
            'name'         => $name,
            'notes'        => $notes,
            'custom_quota' => $customQuota
        );

        $response = $this->prepareHttpClient('/subaccounts/add.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Delete an existing subaccount from its identifier
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=delete
     * @param  string $id Subaccount's unique identifier
     * @return array
     */
    public function deleteSubaccount($id)
    {
        $response = $this->prepareHttpClient('/subaccounts/delete.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get information about a given subaccount
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=info
     * @param  string $id Subaccount's unique identifier
     * @return array
     */
    public function getSubaccountInfo($id)
    {
        $response = $this->prepareHttpClient('/subaccounts/info.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all subaccounts, optionally filtered by a prefix
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=list
     * @param  string $prefix Optional prefix to filter the subaccounts ids and names
     * @return array
     */
    public function getSubaccounts($prefix = '')
    {
        $response = $this->prepareHttpClient('/subaccounts/list.json', array('q' => $prefix))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Pause an existing subaccount
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=pause
     * @param  string $id Subaccount's unique identifier
     * @return array
     */
    public function pauseSubaccount($id)
    {
        $response = $this->prepareHttpClient('/subaccounts/pause.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Resume a paused subaccount
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=resume
     * @param  string $id Subaccount's unique identifier
     * @return array
     */
    public function resumeSubaccount($id)
    {
        $response = $this->prepareHttpClient('/subaccounts/resume.json', array('id' => $id))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Update an existing subaccount from Mandrill
     *
     * @link https://mandrillapp.com/api/docs/subaccounts.JSON.html#method=update
     * @param  string   $id   Unique identifier (max of 255 characters)
     * @param  string   $name Optional display name to identify the subaccount (max of 1024 characters)
     * @param  string   $notes Optional text associated with the subaccount
     * @param  int|null $customQuota Optional manual hourly quota for subaccount (let null for letting Mandril decide)
     * @return array
     */
    public function updateSubaccount($id, $name = '', $notes = '', $customQuota = null)
    {
        $parameters = array(
            'id'           => $id,
            'name'         => $name,
            'notes'        => $notes,
            'custom_quota' => $customQuota
        );

        $response = $this->prepareHttpClient('/subaccounts/update.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * ----------------------------------------------------------------------------------------------------
     * TEMPLATES
     * ----------------------------------------------------------------------------------------------------
     */

    /**
     * Add a new template to Mandrill
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=add
     * @param  string $name
     * @param  Address|null $address
     * @param  string $subject
     * @param  string $html
     * @param  string $text
     * @param  array $labels
     * @return array
     * @throws Exception\RuntimeException If there are more than 10 template labels
     */
    public function addTemplate($name, Address $address = null, $subject = '',
                                $html = '', $text = '', array $labels = array())
    {
        if (count($labels) > 10) {
            throw new Exception\RuntimeException(
                'Mandrill only supports up to 10 template labels'
            );
        }

        $parameters = array(
            'name'       => $name,
            'from_email' => ($address !== null) ? $address->getEmail() : '',
            'from_name'  => ($address !== null) ? $address->getName() : '',
            'subject'    => $subject,
            'code'       => $html,
            'text'       => $text,
            'labels'     => $labels
        );

        $response = $this->prepareHttpClient('/templates/add.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Update an existing template
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=update
     * @param  string $name
     * @param  Address $address
     * @param  string $subject
     * @param  string $html
     * @param  string $text
     * @param  array $labels
     * @return array
     * @throws Exception\RuntimeException If there are more than 10 template labels
     */
    public function updateTemplate($name, Address $address = null, $subject = '',
                                   $html = '', $text = '', array $labels = array())
    {
        if (count($labels) > 10) {
            throw new Exception\RuntimeException(
                'Mandrill only supports up to 10 template labels'
            );
        }

        $parameters = array(
            'name'       => $name,
            'from_email' => ($address !== null) ? $address->getEmail() : '',
            'from_name'  => ($address !== null) ? $address->getName() : '',
            'subject'    => $subject,
            'code'       => $html,
            'text'       => $text,
            'labels'     => $labels
        );

        $response = $this->prepareHttpClient('/templates/update.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Delete a template
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=delete
     * @param  string $name
     * @return array
     */
    public function deleteTemplate($name)
    {
        $response = $this->prepareHttpClient('/templates/delete.json', array('name' => $name))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get all registered templates on Mandrill (optionally filtered by a label)
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=list
     * @param  string $label
     * @return array
     */
    public function getTemplates($label = '')
    {
        $response = $this->prepareHttpClient('/templates/list.json', array('label' => $label))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get template info
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=info
     * @param  string $name
     * @return array
     */
    public function getTemplateInfo($name)
    {
        $response = $this->prepareHttpClient('/templates/info.json', array('name' => $name))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Get recent template info (last 30 days)
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=time-series
     * @param  string $name
     * @return array
     */
    public function getRecentTemplateInfo($name)
    {
        $response = $this->prepareHttpClient('/templates/time-series.json', array('name' => $name))
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * Render an existing template stored on Mandrill
     *
     * @link https://mandrillapp.com/api/docs/templates.html#method=render
     * @param  string $name
     * @param  array $content
     * @param  array $variables
     * @return array
     */
    public function renderTemplate($name, array $content = array(), array $variables = array())
    {
        $parameters = array(
            'template_name'    => $name,
            'template_content' => $content,
            'merge_vars'       => $variables
        );

        $response = $this->prepareHttpClient('/templates/render.json', $parameters)
                         ->send();

        return $this->parseResponse($response);
    }

    /**
     * @param  Message       $message
     * @param  DateTime|null $sendAt
     * @throws Exception\RuntimeException
     * @return array
     */
    private function parseMessage(Message $message, DateTime $sendAt = null)
    {
        $hasTemplate = ($message instanceof MandrillMessage && null !== $message->getTemplate());

        $from = $message->getFrom();
        if (($hasTemplate && count($from) > 1) || (!$hasTemplate && count($from) !== 1)) {
            throw new Exception\RuntimeException(
                'Mandrill API requires exactly one from sender (or none if send with a template)'
            );
        }

        $from = $from->rewind();

        $parameters['message'] = array(
            'subject'    => $message->getSubject(),
            'text'       => $this->extractText($message),
            'html'       => $this->extractHtml($message),
            'from_email' => ($from ? $from->getEmail() : ''),
            'from_name'  => ($from ? $from->getName() : '')
        );

        foreach ($message->getTo() as $to) {
            $parameters['message']['to'][] = array(
                'email' => $to->getEmail(),
                'name'  => $to->getName(),
                'type'  => 'to'
            );
        }

        foreach ($message->getCc() as $cc) {
            $parameters['message']['to'][] = array(
                'email' => $cc->getEmail(),
                'name'  => $cc->getName(),
                'type'  => 'cc'
            );
        }

        foreach ($message->getBcc() as $bcc) {
            $parameters['message']['to'][] = array(
                'email' => $bcc->getEmail(),
                'name'  => $bcc->getName(),
                'type'  => 'bcc'
            );
        }

        $replyTo = $message->getReplyTo();

        if (count($replyTo) > 1) {
            throw new Exception\RuntimeException('Mandrill has only support for one Reply-To address');
        } elseif (count($replyTo)) {
            $parameters['message']['headers']['Reply-To'] = $replyTo->rewind()->toString();
        }

        if ($message instanceof MandrillMessage) {
            if ($hasTemplate) {
                $parameters['template_name'] = $message->getTemplate();

                foreach ($message->getTemplateContent() as $key => $value) {
                    $parameters['template_content'][] = array(
                        'name'    => $key,
                        'content' => $value
                    );
                }

                // Currently, Mandrill API requires a content for template_content, even if it is an
                // empty array
                if (!isset($parameters['template_content'])) {
                    $parameters['template_content'] = array();
                }
            }

            foreach ($message->getGlobalVariables() as $key => $value) {
                $parameters['message']['global_merge_vars'][] = array(
                    'name'    => $key,
                    'content' => $value
                );
            }

            foreach ($message->getVariables() as $recipient => $variables) {
                $recipientVariables = array();

                foreach ($variables as $key => $value) {
                    $recipientVariables[] = array(
                        'name'    => $key,
                        'content' => $value
                    );
                }

                $parameters['message']['merge_vars'][] = array(
                    'rcpt' => $recipient,
                    'vars' => $recipientVariables
                );
            }

            $parameters['message']['metadata'] = $message->getGlobalMetadata();

            foreach ($message->getMetadata() as $recipient => $variables) {
                $parameters['message']['recipient_metadata'][] = array(
                    'rcpt'   => $recipient,
                    'values' => $variables
                );
            }

            foreach ($message->getOptions() as $key => $value) {
                $parameters['message'][$key] = $value;
            }

            foreach ($message->getTags() as $tag) {
                $parameters['message']['tags'][] = $tag;
            }

            foreach ($message->getImages() as $image) {
                $parameters['message']['images'][] = array(
                    'type'    => $image->type,
                    'name'    => $image->filename,
                    'content' => base64_encode($image->getRawContent())
                );
            }
        }

        $attachments = $this->extractAttachments($message);
        foreach ($attachments as $attachment) {
            $parameters['message']['attachments'][] = array(
                'type'    => $attachment->type,
                'name'    => $attachment->filename,
                'content' => base64_encode($attachment->getRawContent())
            );
        }

        if (null !== $sendAt) {
            // Mandrill needs to have date in UTC, using this format
            $sendAt->setTimezone(new DateTimeZone('UTC'));
            $parameters['send_at'] = $sendAt->format('Y-m-d H:i:s');
        }

        return $parameters;
    }

    /**
     * @param string $uri
     * @param array $parameters
     * @return \Zend\Http\Client
     */
    private function prepareHttpClient($uri, array $parameters = array())
    {
        $parameters = array_merge(array('key' => $this->apiKey), $parameters);

        $client = $this->getClient()->resetParameters();
        $client->getRequest()
               ->getHeaders()
               ->addHeaderLine('Content-Type', 'application/json');

        return $client->setMethod(HttpRequest::METHOD_POST)
                      ->setUri(self::API_ENDPOINT . $uri)
                      ->setRawBody(json_encode($this->filterParameters($parameters)));
    }

    /**
     * @param  HttpResponse $response
     * @throws Exception\InvalidCredentialsException
     * @throws Exception\ValidationErrorException
     * @throws Exception\UnknownTemplateException
     * @throws Exception\RuntimeException
     * @return array
     */
    private function parseResponse(HttpResponse $response)
    {
        $result = json_decode($response->getBody(), true);

        if ($response->isSuccess()) {
            return $result;
        }

        switch($result['name']) {
            case 'InvalidKey':
                throw new Exception\InvalidCredentialsException(sprintf(
                    'Mandrill authentication error (code %s): %s', $result['code'], $result['message']
                ));
            case 'ValidationError':
                throw new Exception\ValidationErrorException(sprintf(
                    'An error occurred on Mandrill (code %s): %s', $result['code'], $result['message']
                ));
            case 'Unknown_Template':
                throw new Exception\UnknownTemplateException(sprintf(
                    'An error occurred on Mandrill (code %s): %s', $result['code'], $result['message']
                ));
            default:
                throw new Exception\RuntimeException(sprintf(
                    'An error occurred on Mandrill (code %s): %s', $result['code'], $result['message']
                ));
        }
    }
}

redpajama_set_name: RedPajamaGithub


Allison has been a Pediatric Nurse Practitioner for 28 years with Partners in Pediatrics. She graduated from St. Scholastica in Duluth with her nursing degree and from St. Catherine College in St. Paul with her PNP certification. Allison has an interest in lactation and adolescent medicine. She lives in Minnetonka with her family.


text:
rcc
===
[![Build Status](https://travis-ci.org/madcitygg/rcc.svg)](https://travis-ci.org/madcitygg/rcc)
[![Test Coverage](https://img.shields.io/codecov/c/github/madcitygg/rcc.svg)](https://codecov.io/github/madcitygg/rcc)
[![GoDoc](https://godoc.org/github.com/madcitygg/rcc?status.svg)](https://godoc.org/github.com/madcitygg/rcc)
[![License](https://img.shields.io/github/license/madcitygg/rcc.svg)](https://github.com/madcitygg/rcc/blob/master/LICENSE.md)

The RemoteConsoleConsole! Control Source servers from a convenient cross-platform command line app.

Usage
-----
A simple example:
```
$ rcc 10.10.10.10:27015
Connecting to 10.10.10.10:27015
Connection successful!
Enter password: **********
10.10.10.10:27015> status
hostname: Example CS:GO
version : 1.35.2.0/13520 262/6283 secure  [G:1:201586]
udp/ip  : 10.10.10.10:27015  (public ip: 162.243.46.7)
os      :  Linux
type    :  community dedicated
map     : de_dust2
players : 0 humans, 0 bots (20/0 max) (hibernating)

# userid name uniqueid connected ping loss state rate adr
#end
L 02/15/2016 - 18:38:26: rcon from "73.51.200.225:59394": command "status"

10.10.10.10:27015>
```

Full usage documentation:
```
NAME:
   rcc - control a Source RCON server

USAGE:
   rcc [global options] server

VERSION:
   0.0.1

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --password, -p   rcon password
   --help, -h       show help
   --version, -v    print the version
```


text:
PangSau
Re-articulating India's North-East
The future of Assamese political life lies in syncretism that protects distinction and difference
Date: December 30, 2019Author: PangSau 0 Comments
Political texts are read best in the context of the present. More so with political speeches delivered to mobilize people and to guide the course of political struggles. Earlier this month, Assam erupted in protest against the Citizenship Act which violates the principle clause (Clause 6) of the Assam Accord. The ongoing people's struggle against the CAA is being led by the All Assam Students Union (AASU) in Guwahati and other parts of the state. I have been present at several public meetings led by AASU in Guwahati. The moment has tremendous potential for rethinking what it means to be an Assamese and the road to a political future. As people in most of these meetings expressed, the old guards (AGP-BJP) have failed them and they are now looking forward to a new political leadership and a new political vocabulary. Artists and intellectuals have actively joined the protest in huge numbers bringing back the memories of the Anti-foreigner's movement or Assam movement (1979-1985). In such times, the need for an articulation of the political aspirations of Assam becomes indispensable.
The text translated below (from Assamese) was first delivered as a political speech by Jyotiprasad Agarwala at a gathering of artists, writers and creative persons on 24 November, 1947. In his speech, Agarwala, a towering public intellectual of twentieth-century Assam, iterates the importance of responsibility of the civil society to lead from the front and that of the government as a 'socio-cultural institution'. The speech provides a roadmap for the future of a perfected cultural condition (xamanyay xanxkriti) which will restore beauty in the lives of Assamese people. Delivered at a moment when Assamese society was faced with questions of identity, both religious and ethnic, Agarwala emphasizes syncretism as the hallmark of Assamese cultural life. The text, never translated or commented on, is tremendously relevant to the times we live in and can serve towards guiding political struggles – in Assam and elsewhere.
Government as a socio-cultural institution
All you fellow travelers, who have come together in this sacred land that stand as a testimony to a future of love and harmony and a site for a new culture of human existence!
Today, here in Pragjyotish – a major center of ancient culture; which will once again shine as the core of a new culture of humanity; standing here in this sacred land I consider myself to be immensely fortunate to share a few heartfelt words with artists gathered.
Creative practice or cultural arts is the worship of beauty. Absolute happiness of human lives lie in the complete expression of culture. Human beings are forever eager to bring culture and civilization in their lives by making them beautiful. The aspiration of a culture of humanity and the thirst for a new dawn was announced in the voice that rose in the depths of a dark past with the cries "towards a new dawn, towards a new light".
Human beings are cultural animals. Men, who are always in search for light, have fought with opposing instincts and the anti-cultural forces that corrupt the culture lying outside their immediate selves, in what is called societies. They have sometimes moved along the path of culture and have sometimes been eroded of their cultural selves. But, they have always regained inspiration from their cultural selves thereby elevating themselves into a new and higher plane of creativity. That is how humans have move through histories and ages.
Progress is human care for moving to a higher plane after having ascended to a cultural condition and having savored the happiness brought with that beauty. We need to mobilize ourselves and our society in a proper direction because of the existence of a struggle between constructive and destructive instincts within us otherwise we cannot make cultural progress. A structure and a machinery of governance is indispensable for organizing human lives within a condition of peace, for guiding humans as a collective towards cultural creativity and for the evolution of human societies by providing individuals with conditions of all-round development and progress. The centripetal forces emerging from this structure and machinery of governance must assist humans in their struggle with forces lying within themselves and outside, in order to protect them as a collective from the incursion of anti-cultural forces, and in order to elevate them to a condition of happiness by leading them through the path of culture. The structure of governance loses all significance if this is not achieved. And, because of this reason, the structure of governance and the machinery of governance are indispensable to the development of human lives. In other words, government is a socio-cultural institution.
Revolution as the road to a condition of culture
The development of a cultural life of a society depends on the resolution of the anti-cultural dialogues that lie within it. The sores of human societies emerging from selfishness, greed, narrowness and power-mongering must be removed. The journey of human beings towards removing these sores aided by resistance and struggle is known as revolution. Revolution becomes necessary to resist the corruption of culture and to destroy the ill effects resulting from such a corruption in order to build a new culture. Revolution works its way through our minds until it reaches the struggles lying outside it. Thus, when such a feat is achieved, state revolution and social revolution is made possible.
Although revolution creates a mentality of fear within us and thereby brings together a host of disasters in the form of a grotesque monster, yet, in its foundation, it brings along a treasure trove for the creation of a new culture. And, because of this reason, the makers and believers of a new culture have always appeared in the form of revolutionaries. Just as a peasant rejoices upon seeing a stroke of lightning in the tangled, deep locks of the monsoon rains – knowing that this flash of lightning piercing through the cloud will bring in the music of creation, will cover his field with its golden hues; the artist too rejoices in a same manner; in the midst of the destruction brought in the form of a revolution they see the burning forehead of light. The artist knows that the rays of light will nourish a new culture in human life. And will rekindle the embers of a wondrous creation of art and beauty.
Power of the people as the road ahead
A centripetal force is required in order to create a cultural condition in a society and too mobilize humans, both as individuals and as a collective, so that they can remain within organized structures. And in order to exert this force or to carry out such a process you need the state, structure of governance and structure of bureaucracy. The society, from its very beginning, has been controlled by kingly and institutional forces. But, it has been observed with the passage of time, that these forces were inadequate towards bringing in a complete cultural condition or a democratic cultural condition in the world. They have thrown human societies to a condition of chaos by corrupting themselves, moving away from the ideology of culture (…) Today men are faced with a crisis. The reason behind this is the abuse of kingly/stately and institutional powers. These powers have been used for particular interests and people have been deprived of its benefits. One need not reiterate how historical accounts from across the world have demonstrated the consequences when kingly/stately and institutional power becomes blind.
Power and force are necessary to elevate human society and culture to a condition where it once was. Therefore, the failure of kingly/stately and institutional powers to usher in the desired cultural condition has prompted us to turn towards the power of the people (or people-power) with such hope. People's revolution is the tremendous effort of the people towards bringing a structure of governance in the state in order to create a cultural condition by holding firmly to people-power when both the kingly/stately and institutional powers have failed them. The ends of a true revolution lie in restoring this cultural condition. And therefore, revolution is directly linked with culture.
Artists, Writers, Poets and Creative Thinkers must lead from the front
Culture is the application of beauty in life. The man who worships beauty tries towards bringing it to every sphere of his life by ascending each plane of cultural progress. In order to make his spiritual life beautiful he became a philosopher. In order to make society beautiful he created religion/norms/duties. In order to make his body beautiful he took recourse to exercise. In order make his food and drinks beautiful he created culinary arts. And, in order to make that part of the society beautiful which has been neglected, ignored and left without any beauty due economic inequality his newest contribution in social life is socialism. Today because of the failure of state, institutions and bureaucracy towards elevating human life to the desired cultural condition people have begun thinking about democracy or the rule of people and have sought to achieve it through struggle/revolution.
The wise thinkers of the world believe that people through their rule can achieve the flourish of their cultural lives. Today various kinds of rules of people have made themselves present in front of the state. And these various paths emerging with their distinct thoughts have convinced people of the flourish of their conditions. And along with this, several individuals with their hunger for power have begun propagating their anti-cultural ideas whereby they have corrupted the people and have made attempts at exercising lordship over them. And, because of this reason today artists, writers, poets and other practioners of cultural arts are needed more than ever before. They are needed to welcome the ideals of culture and keep its flame burning among the people and to show them the face of anti-cultural forces in order to protect them veering towards the path of error.
Therefore poets, artists and writers need to remain firm in their cultural ideology while remaining unbiased in their political and economic ideology. Unbiased does not mean that they should keep themselves away from it – but like the droplets of water on a lotus leaf – they should go amidst the people, and their circumstances, should look at the ideologies, study them carefully and understand them, should be able to discern the truth and emerge having not surrendered themselves to any one ideology (…) It should be kept in mind that artists take men towards a new dawn through the path of culture and thereby make the world beautiful.
Syncretism as a future of Assamese cultural life
The future of Assamese culture must be built by envisioning this. In the current world, in this scientific age, no culture – of nation, region, people – can remain in isolation. Now a syncretic culture should form the framework of the culture of a people, a group or a collective. This syncretism has begun in some parts of the world. In the method of syncretism, the fundamentals of yoking the cultures of a group and people must be illuminated. Why? Taking inspiration from those one should enlighten the fundamental of the process of syncretism. And this will bring out the distinctiveness of each culture. We need this distinctiveness – we have to protect this. If the logic of protecting this distinctiveness guides people, groups and collectives then we can avert fights. But I can't say that everyone of a group or every person belonging to a collective will adopt this logic.
We should remain firm in the structural foundations of our new cultural organization and in the armory to demolish the anti-cultural forces. We need to bring our arms from the armory of non-violent civil disobedience and if required we should go to the gunpowder cellars. Of course, keeping in mind that non-violence is the ultimate condition of men. We should remember here that there is no clash between two cultural forces ever. Clashes happen between a cultural force and an anti-cultural force. There is always a syncretic cohabitation between two cultural forces. There is no clash between two kinds of goodness. But a clash between good and evil is certain.
The leadership of Civil Society is the need of the hour
All of you, artists and creative people, do not think that there is no value of your presence in society because you don't occupy seats of power. Don't believe that your existence is a lie because the worshippers of power don't sing your praise at every footstep.
The primary reason behind the existence of artists and writers is to keep the people firm in the ideology of culture. I have said that the state and its structure of governance forms the central path towards elevating humans to a condition of culture. Therefore, we need all who are well versed in culture in order to fix the foundations of our rule.
Today at the cusp of a new time, when a massive change awaits our land, our country, today at a moment when the dawn of independence is about to shine on our lives, artists must come out to fight like the warrior Arjuna standing firm in their belief in the culture of humanity and with the aspiration of illuminating the path of a new life. The dreams of our new days must be given shape by the words and work of the artist. Today in this Pragjyotisha – standing on the banks of the Luit, the Assamese – in company of the young of the country – listening intently having taken in the chant of creation of the soil of Assam welcome the entire world towards a culture of a new humanism
We need to illuminate the world
Of science and knowledge
All religions
Many ideologies
Many differences
We need to bring them together
We need to win over all enemies who oppose this union
We need to bring the victory of this union
Down to this earth
We need to fill this world with happiness
Men must prosper and bloom
And we must make this world
Beautiful and fragrant
Let the dawn win
Let the ideology of a great union amongst humans win
That of eternal goodness, eternal bliss
Let this great progress win in every age
Let the eternal beautiful win.
Samyak Ghosh studies Literature and History at Columbia University in New York
AssamAssamese cultureBeautyJyotiprasad AgarwalaNorth East IndiaNortheast IndiaSyncretism
Published by PangSau
View all posts by PangSau
Previous Previous post: Crisis of Citizenship: A Critical Reading List on Assam's NRC and Beyond
© 2020 PangSau


The Napf region in the middle of Emmental is a wonderful place for a little journey. Our favorite winter experience is the snowshoe tour "hot and cold".
You will explore the beautiful Napf Region with an experienced snow shoe guide.
The tour last around two hours. After which, participants can relax in the Hot Tub. To add the perfect finishing touch, you will enjoy a traditional fondue in Bergbeizli Oberaltösch.
A guided snowshoe tour with an experienced tour guide.
Rental fee for snowshoes and walking poles.
"Hot Pot" hot tub with towel and bathrobe provided.
Traditional fondue (incl. tea) in Bergbeizli.
The tour has to be booked in advance.


text:
People January 27, 2016 August 28, 2016
Colonel Tench Tilghman: George Washington's Eyes and Ears
by Jeff Dacus
"Washington, Lafayette & Tilghman at Yorktown," an oil painting (1784) by Charles Willson Peale with detail of Tench Tilghman. (Maryland State Art Collection)
In the Old Senate Chamber of the Maryland State House hangs a painting commissioned by the Maryland Legislature often called the "Annapolis Portrait" of George Washington by Charles Willson Peale. The moment portrayed in the work is after the surrender of the British Army at Yorktown in 1781. Two of the figures are easily recognized, Washington of course, and the Marquis De Lafayette. But the third figure, not so readily identified, is Lt. Col. Tench Tilghman. Another contemporary painting of the same event by James Peale titled "Washington and His Generals" includes the figures of Washington, Benjamin Lincoln, Comte de Rochambeau, Gen. Francois Chastellux; the remaining figure is Tilghman, though he is not a general officer. Who was he and why would he be included so conspicuously with Washington?
Tench Tilghman was born in Maryland on December 25, 1744, the son of well-to-do gentry parents. His father was a member of the legislature and a well-known lawyer, his mother from an equally accomplished Maryland family that had moved to Philadelphia. His maternal grandfather sent for Tench, the oldest of six boys, in 1758 and the young man traveled to Philadelphia to attend the College and Academy of Philadelphia, later the University of Pennsylvania. One of his cousins in the town was Peggy Shippen, who would later marry Benedict Arnold.
Graduating in 1761, Tench went into business with an uncle, where he worked until committing to the colonial cause on the eve of the Revolutionary War. His first duty for the rebellious colonies was not on the battlefield but on the diplomatic front. He was chosen to accompany his uncle on a peace mission to the Six Nations with Philip Schuyler.
When the first rumblings of conflict came from the north, Tilghman joined a company of the Pennsylvania Associators (a form of militia) commanded by Captain Sharpe Delaney. Their aristocratic airs earned these soldiers the nicknames "Ladies Light Infantry" and the "Silk Stockings." The derisive names stuck. During the first campaign around New York, Tilghman's company was in the Flying Camp located in New Jersey.
As the action around New York intensified, Washington needed more staff to help manage his paperwork and he sought young men of quality backgrounds to serve as a secretary or aide.[1] Washington was familiar with the Tilghman family, having met Tench's father and uncle. Washington consulted Tilghman and the young man agreed to be part of the general's "family." In an arrangement unique among the aides, Tilghman agreed to serve as a volunteer, without rank or compensation. He told his father of the arrangement to serve Washington in a letter on October 7, 1776:
"I am detained here by no particular engagements entered into with the General, so far from it, that tho' he has repeatedly told me I ought to have a Compensation for my Services, I have refused … I wished to serve as a Volunteer."[2]
As a volunteer aide, Tilghman served alongside Washington for the remainder of the war, riding with him in each battle and performing the task of being the general's mouthpiece as well as his eyes and ears. Like the other young members of Washington's staff, Tilghman raced about the battlefield exchanging messages, observing the action, and bringing news from various parts of the front lines. Tilghman rode next to Washington in the streets of Trenton after Christmas in 1776, and he was one of the few eyewitnesses that actually saw the confrontation between Washington and Charles Lee during the chaotic retreat before the British on June 28, 1778. The young officer shared the harsh conditions at Morristown and Valley Forge.
In camp, Tilghman performed duty as Washington's alter ego, fashioning letters from verbal outlines and placing them before the General for final approval and signature. Much of the General's correspondence is in the handwriting of Tilghman. His knowledge of French was essential to Washington when dealing with foreign officers and he became a close friend of the Marquis de Lafayette. He would serve longer than any of Washington's aides or secretaries.
In May of 1781, Washington convinced Congress that Tilghman deserved the rank and pay of a lieutenant colonel, with seniority dating to April 1, 1777. In a typical, magnanimous gesture, Tilghman refused to have his date of rank the same as that of Alexander Hamilton and Richard Kidder Meade, fellow members of Washington's "family," as they had joined the commander in chief before him.
The British were cornered at Yorktown and forced to surrender in October of 1781. As the British capitulation was finalized, Washington needed someone to carry the news of Cornwallis's surrender to Congress in Philadelphia. Tradition at the time placed a great honor on the soldier who delivered such information;[3] James Wilkinson, for example, had been given the brevet rank of brigadier general by Congress for delivering the news of the fall of British General John Burgoyne in October of 1777. Tilghman was chosen to relay the news, based on his close association with Washington and also his knowledge of the best Maryland and Pennsylvania routes to the new nation's capital.
Tilghman left on the morning of October 20 and arrived in Philadelphia at about three in the morning of the 24th. He went straight to the home of the president of Congress, Thomas McKean, on High Street. A night watchman threatened to arrest Tilghman as he pounded on the president's door but soon joined the other members of the night watch in proclaiming: "All is well and Cornwallis is taken!" This ride, along with his friendship with Washington, earned Tilghman a place in the paintings by the Peales. Congress rewarded him with a sword and a horse.
In the years after the war, Tilghman lived in Baltimore where he started a mercantile business with the help of Robert Morris. He stayed close to Washington, exchanging personal letters and news. In one note, Washington chided the young man for not notifying him of his marriage in June of 1783.[4] Tilghman served as Washington's agent in Maryland, facilitating transactions for the general. On one occasion, Washington needed plans for renovating his greenhouse and asked Tilghman to get information on the structure built at Dr. Charles Carroll's place called Mont Clare.[5] Tilghman drew a plan and gave careful details on its construction, which served as a model for Washington's own. [6] When the Society of the Cincinnati, a fraternal group for former Continental Army officers, was organized, Washington had pins representing the Society made for some of the officers and sent one to Tilghman.
Unfortunately, Tilghman would not live very long after the war ended. After delivering the news of Yorktown, he showed signs of ill health, never feeling entirely well. He became extremely sick in early 1786, dying on April 18, apparently of the effects of hepatitis.
George Washington, often portrayed by historians as "cold and formal,"[7] revealed his depth of feeling for the deceased former aide in letters to several different people. After being informed of Tilghman's, death by the man's youngest brother Thomas,[8] Washington sent a poignant reply:
As there were few men for whom I had a warmer friendship, or greater regard than for your Brother – Colonel Tilghman – when living; so, with much truth I can assure you, that, there a(re) none whose death I could more sincerely have regretted …[9]
He later sent a note to James Tilghman, the aide's father:
Of all the numerous acquaintances of your lately deceased son, & amidst all the sorrowings that are mingled on that melancholy occasion, I may venture to assert that (excepting those of his nearest relatives) none could have felt his death with more regret than I did – No one entertained a higher opinion of his worth, or had imbibed sentiments of greater friendship for him than I had done … It is however a dispensation, the wisdom of which is inscrutable; and amidst your grief, there is this consolation to be drawn, that while living, no man could be more esteemed – and since dead, none more lamented …[10]
Washington placed Tilghman among the prominent of the Revolution in a letter to Thomas Jefferson:
You have probably heard of the death of Genl Greene before this reaches you, in which case you will, in common with your Countrymen, have regretted the loss of so great and so honest a man. Genl McDougall, who was a brave Soldier & a disinterested patriot, is also dead … Colo. Tilghman , who was formerly of my family, died lately & left as fair as reputation as ever belonged to a human character. Thus some of the pillars of the revolution fall.[11]
The esteem that Washington held for Tilghman is obvious. The people of Maryland added their own touching and telling assessment of the former aide on the inscription on his tombstone:
Col. Tench Tilghman
Who died April 18, 1786
In the 42nd year of his age,
Very much lamented.
He took an early and active part
In the great contest that secured
The Independence of
The United States of America.
He was an Aide-de-Camp to
His Excellency General Washington
Commander in Chief of the American Armies,
And was honored
With his friendship and confidence,
He was one of those
Whose merits were distinguished
Honorably rewarded
By the Congress
Still more to his Praise
He was
A good man.[12]
[1] For another look at the process of working for Washington, see J. L. Bell, "George Baylor: Spirited, Willing and Wrong for the Job," Journal of the American Revolution, http://allthingsliberty.com/2015/10/george-baylor-spirited-willing-and-wrong-for-the-job/October 12, 2015.
[2] S. A. Harrison, Memoir of Lieut. Col. Tench Tilghman: Secretary and Aide to Washington (Albany: J. Munsell, 1876), 142.
[3] Ibid, 42-44.
[4] George Washington to Tench Tilghman, October 2, 1783, Founders Online, National Archives (http://founders.archives.gov/documents/Washington/99-01-02-11890).
[5] Washington to Tilghman, August 11, 1784, The Papers of George Washington, Confederation Series, vol. 2, July 1784- January 1785, W.W. Abbott, ed. (Charlottesville: University Press of Virginia, 1992), 30-31.
[7] John Ferling, C-SPAN In Depth, July 5, 2009.
[8] Thomas Ringgold Tilghman to Washington, The Papers of George Washington, Confederation Series, vol.4, 2 April 1786-31 January 1787, W.W. Abbott, ed. (Charlottesville: University Press of Virginia, 1995), 27.
[9] Ibid, 47.
[11] Ibid, 184.
[12] L. G. Shreve, Tench Tilghman, The Life and Times of Washington's Aide-de-Camp (Centerville, MD: Tidewater Publishers, 1982), 199-200.
George Washington, Tench Tilghman
Jeff Dacus
More from Jeff Dacus
Benson Lossing: Historical Tourist
When studying the American Revolution, there are several books that provide an...
General George Washington, a Military Life
Wondering About Washington
Top 10 American Revolution YouTube Videos
Jett Conner says:
Enjoyed this piece on Tench Tilghman and learning more about his background and Washington's high regard for him. Perhaps because I'm interested in Paine, who also volunteered in a Flying Camp and then as a volunteer aide-de-camp to Greene during Washington's retreat across New Jersey in the fall of '76, I'm motivated, after reading your piece, to learn more about those Flying Camps in general and the role of aide-de-camp in particular.
Jeff Dacus says:
Sounds like the topic for an article, the role of the Flying Camp during the war. For more information on the aides, try Arthur Lefkowitz, "George Washington's Indispensable Men"
Appreciate the resource suggestion. I also think that an article on the Flying Camps would be very interesting. I'm not the person to do that one, but I think there are several elements that would be appropriate to address: 1. Looking at Washington's vision for those Flying Camps as a precursor to today's elite military mobile units, and 2. The difficulties that Washington had with the states providing troops to such units, especially since the states were wary of anything, even remotely, that smacked of a standing army.
Don N Hagist says:
Point of clarification, to avoid any risk of misunderstanding:
Washington didn't invent the concept of the Flying Camp, or the term; both were well-known in 18th century military literature. Here's a definition from a 1768 military dictionary:
"Flying Camp, a body of light-horse, or foot, who are always in motion, either to cover an army or garrison, and to keep the enemy in continual alarm."
Gary Shattuck says:
The concept and term of a "flying camp" actually goes way back in recorded time to the Egyptians and is found in Greek and Roman accounts.
Mike Schellhammer says:
Jeff –
Thanks for this great piece. I have always wanted to learn more about Tilghman and your piece shines a well deserved light on this man and offers insight into those who helped make the Continental Army work. Well done.
Don, thanks for the clarification on Washington and his "flying camps." I did indeed assume Washington had invented the term. Appreciate the correction.
Robert Bradford says:
During World War Two, there was a professor at Virginia Tech in Blacksburg, VA named Tench Tilghman, Jr. Does anyone know anything about him?


text:
Ancestry.com to be Acquired for Permira for $1.6 Billion
By Bizclik Editor
Ancestry.com announced today its entrance into an agreement to be acquired by a company owned by Permira and co-investors for $32 per share, a transaction valued at $1.6 billion. As a part of the agreement, Tim Sullivan, President and CEO of Ancestry.com, and Howard Hochhauser, Ancestry.com CFO and COO, will maintain a majority of their equity stakes.
"This is a successful outcome for our public stockholders, and a great day for Ancestry.com employees and subscribers around the world," said Tim Sullivan. "We're excited that Permira shares our commitment to keep investing in our technology and product experience to make family history easy and accessible for more and more families around the world. Their strong investment track record in the technology and Internet sectors makes them a terrific advisor and partner as we take the company forward."
Ancestry.com has made a name for itself as the world's largest family history resource. Ancestry.com prides itself in compiling over the last 15 years a collection of over 10 billion digitized, indexed records for its 2 million subscribers, who, through use of the website's services, can research their family tree as well as share family history.
The cost of the transaction represents 41 percent of Ancestry.com stock and its value determined by the closing stock price on June 5th, 2012. Spectrum Equity, a 30 percent stakeholder in Ancestry.com, has agreed to vote in favor of the merger.
"With its pioneering technology and market leading position, Ancestry.com is an exciting investment opportunity for the Permira funds. We are thrilled to be able to back the company as it continues to develop new and innovative content, and expand in both its core markets and into new geographies. We look forward to bringing Permira's technology and media experience to bear in supporting Tim, Howard and the rest of the talented team at Ancestry.com and its mission of helping everyone discover, preserve and share their family history," said Brian Ruder, Partner and Head of Permira's Menlo Park office.
SEE RELATED STORIES FROM THE WDM CONTENT NETWORK:
Growing and Thriving through Acquisition
Starbucks Acquires Bay Bread and La Boulange Brand
Click here to see the latest issue of Business Review North America
Under Permira's direction, Ancestry.com will continue executing its growth strategy. The website will continue to focus on investing in content, technology and user experience.
The transaction is still subject to shareholder approval but is expected to close in early 2013.
Ancestry.comHoward HochhauserTim SullivanSpectrum Equity
PwC's Kathryn Kaminsky – the role of boards on social issues
As Vice Chair Trust Solutions Co-Leader at PwC, Kathryn Kaminsky says boards play an important role in helping businesses take action on social issues…
Why your business needs a Chief Transformation Officer
Responsible for driving growth and change, the Chief Transformation Officer is the latest addition to the C-suite as business undergoes major change…
12 top AI and ML trends for the enterprise in 2023 – Dataiku
With 2023 likely to be a huge year for AI, experts from AI platform provider Dataiku deliver their enterprise AI and ML trends for the year ahead…
From NYC to Hong Kong, the rise of the private members' club
Meet the CEO: Jill Stelfox of Panzura, exclusive interview
The best Michelin-starred restaurants that are meat-free
Rise of the Chief Information Security Officer (CISO)
UAE building cybersecurity fortress for a safer world
The future of cybersecurity must be built on the basics
10 of the best speakers at Procurement & Supply Chain LIVE
10 apps to support staff on World Mental Health Day


I had a friend request some Imperial Guard pics. Here you go Jason! I even did the initial Base coat and Camo on the Vor Union troopers last night just for these pics.
The Valhallans are about to get a repaint - I am going to leave their Long Coats grey but I will give them the Urban camo everyone else has on their pants.
I am trying to tie all my IG guard together, the Vor Union troopers will be a Veteran Squad.
I have done a little painting and modeling in there too. My goals are to do a whole lot more after this month.
Here is my Blood Angel Captain from the Epic Rulebook Cover. If anyone happens to know this guys name - please share!
I saw this picture online and decided I wanted to try an recreate the Captain as close to possible with the bits I had on hand.