text:
Producers and sponsors
Metadata production
Survey ID Number
International int
Education Survey [es]
To facilitate secondary analyses aimed at improving mathematics and science education, the TIMSS 2003 International Database makes available to researchers, analysts, and other users the data collected and processed by IEA's TIMSS 2003 project. This database comprises student achievement data in mathematics and science as well as student, teacher, school, and curricular background data for the 48 countries that participated in TIMSS 2003 at the eighth grade and 26 countries that participated in TIMSS 2003 at the fourth grade. The database includes data from over 360,000 students, about 25,000 teachers, about 12,000 school principals, and the National Research Coordinators of each country. All participating countries gave the IEA permission to release their national data.
Sample survey data
Individuals and institutions
v1.1: Edited, anonymised data for public distribution
In the original version of the TIMSS 2003, the data was made available in country, population (i.e. grade) and survey subtype specific chunks. The original version of this dataset was only available in raw data form from the IEA website.
Version 1.1 is a repackaging of that original data, with the raw datafiles converted and collated for each survey subtype and population, and variables and values labelled.
At the heart of the TIMSS 2003 International Database are the student achievement scores in mathematics and science, together with responses of students, teachers, and principals to the background questionnaires. Student achievement scores and student questionnaire responses have been merged to facilitate secondary analyses. More specifically, the database includes the following for each country for which internationally comparable data are available:
• Students' responses to each of the mathematics and science items administered in the study
• Student achievement scores in mathematics and science
• Students' responses to the student questionnaires
• Teachers' responses to the teacher questionnaires
• Principals' responses to the school questionnaires
basic skills education [6.1] CESSDA Link
educational policy [6.3] CESSDA Link
The survey had international coverage
The study covered curricula and textbooks, teachers and pupils at selected schools in the country
Primary investigators
TIMSS & PIRLS International Study Center Boston College
Funding Agency/Sponsor
National Center for Education Statistics, U.S. Department of Education NCES Funder
National Science Foundation, U.S. NSF Funder
World Bank Funder
The basic sample design used by TIMSS is generally referred to as a two-stage stratified cluster sample design. The first stage consisted of a sample of schools, which may be stratified; the second stage consisted of samples of classrooms from each eligible target grade in sampled schools. In some countries, a third stage consisted of sampling students within classrooms. Exclusions could occur at the school level, student level, or both.
Deviations from the Sample Design
Participants could exclude schools from the sampling frame if they were in geographically remote regions, were extremely small, offered curriculum or structure different from the mainstream, or provided instruction only to students in the "within-school" exclusion categories. The general TIMSS rules for defining within-school exclusions can be found in the technical documents.
Weighted and unweighted response rates were computed for each participating country by grade, at the school level, and at the student level. Overall response rates (combined school and student response rates) also were computed.
The students within each country were selected using probability sampling. A consequence of this is that each student had a known probability of selection. The inverse of this selection probability is the sampling weight. In a properly selected and weighted sample, the sum of the weights for the sample approximates the size of the population. In TIMSS, the sum of the sampling weights for a country sample is an estimate of the size of the population of students within the country in the sampled grade(s).
Dates of Data Collection
Data Collection Mode
Face-to-face [f2f]
Data Collection Notes
Each participating country was responsible for carrying out all aspects of the data collection, using standardized procedures developed for the study. Training manuals were created for school coordinators and test administrators that explained procedures for receipt and distribution of materials as well as for the activities related to the testing sessions. These manuals covered procedures for test security, standardized scripts to regulate directions and timing, rules for answering students' questions, and steps to ensure that identifi cation on the test booklets and questionnaires corresponded to the information on the forms used to track students.
By gathering information about students' educational experiences together with their mathematics and science achievement on the TIMSS assessment, it is possible to identify factors or combinations of factors related to high achievement. As in previous assessments, TIMSS in 2003 administered a broad array of questionnaires to collect data on the educational context for student achievement. For TIMSS 2003, a concerted effort was made to streamline and upgrade the questionnaires. The TIMSS 2003 contextual framework (Mullis, et al., 2003) articulated the goals of the questionnaire data collection and laid the foundation for the questionnaire development work.
Across the two grades and two subjects, TIMSS 2003 involved 11 questionnaires. National Research Coordinators completed four questionnaires. With the assistance of their curriculum experts, they provided detailed information on the organization, emphasis, and content coverage of the mathematics and science curriculum at fourth and eighth grades. The fourth- and eighth-grade students who were tested answered questions pertaining to their attitudes towards mathematics and science, their academic self-concept, classroom activities, home background, and out-of-school activities. The mathematics and science teachers of sampled students responded to questions about teaching emphasis on the topics in the curriculum frameworks, instructional practices, professional training and education, and their views on mathematics and science.
Separate questionnaires for mathematics and science teachers were administered at the eighth grade, while to refl ect the fact that most younger students are taught all subjects by the same teacher, a single questionnaire was used
at the fourth grade. The principals or heads of schools at the fourth and eighth grades responded to questions about school staffi ng and resources, school safety, mathematics and science course offerings, and teacher support.
Manager, DataFirst University of Cape Town info@data1st.org Link
Public use files, available to all
Citation requirements
TIMSS & PIRLS International Study Center. Trends in International Mathematics and Science Study 2003 [dataset]. Version 1.1. Chestnut Hill, MA: Boston College [producer], 2005. Cape Town: DataFirst [distributor], 2012. DOI: https://doi.org/10.25828/54bw-f785
TIMSS & PIRLS International Study Center Boston College, Lynch School of Education timss@bc.edu Link
Copyright, International Association for the Evaluation of Educational Achievement (IEA)
DDI Document ID
ddi-int-datafirst-timss-2003-v1
DataFirst University of Cape Town DDI Producer
Date of Metadata Production
DDI Document version


text:
Q: Tests where a constructor is called many times? import (
    "testing"
    "github.com/stretchr/testify/assert"
)

func TestNewPerson(t *testing.T) {
    firstName := "Barack"
    lastName := "Obama"
    birthYear := 1990

    p, err := NewPerson(firstName, lastName, birthYear)

    assert.Equal(t, err, nil, "Should not return error.")
    assert.Equal(t, p.FirstName, firstName, "First name came wrong.")
    assert.Equal(t, p.LastName, lastName, "Last name came wrong.")
    assert.Equal(t, p.BirthYear, birthYear, "Birth year name came wrong.")
}

func TestFullName(t *testing.T) {
    tests := []struct{
        firstName   string
        lastName    string
        fullName    string
    }{
        {"Hello", "World", "Hello World",},
        {"Barack", "Hussein Obama ", "Barack Hussein Obama",},
    }

    for _, obj := range tests {
        p, _  := NewPerson(obj.firstName, obj.lastName, 1990)

        assert.Equal(t, obj.fullName, p.FullName())
    }
}

This works fine. But what happens when I've written many tests, and then I need to make a change in the "NewPerson" constructor because I've added a new property to the struct?
I will then have to change all parameters of the calls to the constructors.
What's a solution for this? Should I look for a way to abstract this?

A: That kind of refactoring could (not tested) be taken care of with the command go fmt.
See "Refactoring with go fmt":

gofmt uses patterns to identify changes to make to your code. Patterns are established in the first half the expression followed by a '->' then used by the second half of the expression.
Use the flag -d instead of -w to check what gofmt will do prior to running it.

gofmt -r "yourConstructor(x,y) -> yourConstructor(x, y, z)" -d ./

That works only if the pattern you specify is a valid go expression, as mentioned in this answer.

redpajama_set_name: RedPajamaStackExchange


text:
Q: don't use jade layout I've defined a layout with jade. It's pretty simple. I just put it on the views folder and call it layout.jade
Is there any way to avoid one view to not use layout.jade as layout? This is how it's rendered:
exports.help = function(req, res) {
    res.render('help', { title: 'Help'} );
};

Thanks

A: If you don't want to do a layout, do this:
exports.help = function(req, res) {
    res.render('help', { layout: false, title: 'Help'} );
};

If you want to use another layout, you can do something like this (assuming your new layout file is called new_layout.jade):
exports.help = function(req, res) {
    res.render('help', { layout: 'new_layout', title: 'Help'} );
};

Here is a tutorial that I found helpful.


text:
COVID-19 in Kentucky, Indiana: Tracking cases, deaths and latest restrictions 29 MIN Breaking News: Interactive map: Tracking Kentucky's COVID-19 'red zone' counties Breaking News: Sign up for our Coronavirus & Rossen Reports Newsletters <% if ( weatherAlerts > 0 ) { %> Severe Weather <% var weatherAlertsMessage = "There " + ( weatherAlerts > 1 ? "are" : "is" ) + " currently " + weatherAlerts + " active weather " + ( weatherAlerts > 1 ? "alerts" : "alert" ); %>
Baptist Health: General public registers for vaccine appointments meant for health care workers
Updated: 11:20 PM EST Jan 9, 2021
WLKY Digital Team
VACCINES AND EVENTUALLY REACHING 20,000 VACCINES A WEEK. A BIT OF CONFUSION LED TO NEARLY 6000 INELIGIBLE KENTUCKIANS SIGNING UP TO RECEIVE THE COVID-19 VACCINE THROUGH BAPTIST HEALTH. ANYONE COULD SIGN UP FOR THE COVID-19 VACCINE THROUGH BAPTIST HEALTH MY CHAT AFTER A LINK TO THE SITE WAS SHARED BY THE KENTUCKY DEPARTMENT OF PUBLIC HEALTH. THE LINK WAS ONLY MEANT FOR HEALTH CARE PROFESSIONAL WHO A IN SECTION 1-A OF THE STATE'S VACCINATION PLAN. WHILE THE LINK HAS BEEN REMOVED, JUST ABOUT 6000 VACCINATION APPOINTMENTS WERE SCHEDULED AT SELECT BAPTIST HEALTH SITES OVER THE NEXT
Earlier in the week, Baptist Health responded to a request from the Kentucky Department of Health to create an online portal to meet the goal of vaccinating as many health care workers as possible by the end of January.The portal was announced Friday and posted on the state's website for health care personnel only. While officials say the page clearly outlined the vaccine is only available for Phase 1A health care personnel only, the scheduling tool did not display this information. The mishap resulted in many people signing up for appointments, thinking the vaccines were open to the general public."We regret the confusion this has caused our communities and have updated the scheduling tool with the additional information," Baptist Health said in a statement.According to Baptist Health, over 6,000 vaccination appointments are scheduled at select sites."This will go a long way in advancing our goal to vaccinate and protect our communities."At this time, the health system is honoring appointments made through the online scheduling system. Online scheduling for the next two weeks is currently full and not accepting additional appointments, but future openings will be available for patients soon, officials.
LOUISVILLE, Ky. —
Earlier in the week, Baptist Health responded to a request from the Kentucky Department of Health to create an online portal to meet the goal of vaccinating as many health care workers as possible by the end of January.
The portal was announced Friday and posted on the state's website for health care personnel only. While officials say the page clearly outlined the vaccine is only available for Phase 1A health care personnel only, the scheduling tool did not display this information. The mishap resulted in many people signing up for appointments, thinking the vaccines were open to the general public.
"We regret the confusion this has caused our communities and have updated the scheduling tool with the additional information," Baptist Health said in a statement.
According to Baptist Health, over 6,000 vaccination appointments are scheduled at select sites.
"This will go a long way in advancing our goal to vaccinate and protect our communities."
At this time, the health system is honoring appointments made through the online scheduling system. Online scheduling for the next two weeks is currently full and not accepting additional appointments, but future openings will be available for patients soon, officials.

redpajama_set_name: RedPajamaCommonCrawl


July 2017 – The Officer Wolf Lion over the shooting of a black teenager named Mike Brown. The protests turned violent with riots and looting.
Be careful what you wish for. Twitter users have some predictions about what oh-so-brilliant statement Obama will offer up.
Laugh or cry? We say both.
Which one will be Obama's oh-so-brilliant statement on Ferguson riots?
As Twitchy reported, tensions escalated in Ferguson, Mo., as people took to the streets in anti-police protests over the shooting of a black teenager named Mike Brown. The protests turned violent with riots and looting.


This paper proposes a study on the evaluation of relevance feedback approaches when a multi-tagged dataset is available. The aim of this study is to verify how the relevance feedback works in a real-word scenario, i.e. by taking into account the multiple concepts represented by the query image. To this end, we first assessed how relevance feedback mechanisms adapt the search when the same image is used for retrieving different concepts. Then, we investigated the scenarios in which the same image is used for retrieving multiple concepts. The experimental results shows that relevance feedback can effectively focus the search according to the user's feedback even if the query image provides a rough example of the target concept. We also propose two performance measures aimed at comparing the accuracy of retrieval results when the same image is used as a prototype for a number of different concepts.


Thеrе аrе mаnу lоwеr back раin саuѕеѕ, mаking lower bасk pain a very соmmоn iѕѕuе. Sоmе of thе causes оf lоwеr back pain аrе unаvоidаblе, but еvеn if уоu аlrеаdу have lower bасk раin, tаking immеdiаtе асtiоn аnd undеrѕtаnding the rооt саuѕе will prevent further раin.
Strаinѕ in thе bасk muscles often оссur whеn уоu lift a heavy оbjесt, mаkе a ѕuddеn аwkwаrd move, оr аrе not in ѕhаре fоr that tуре оf lifting.
In some situations, osteoarthritis affects the lоwеr back and саn even lеаd to ѕрinаl stenosis.
If уоu ѕuffеr from оѕtеороrоѕiѕ, the wеаk bоnеѕ саn саuѕе compression frасturеѕ оf the ѕрinе, resulting in pain.
Ovеrwеight individuаlѕ tеnd to ѕuffеr mоrе оftеn frоm lоwеr bасk раin symptoms thаn dо thоѕе оf a hеаlthу wеight, duе tо the еxtrа рrеѕѕurе рut on thеir bоdiеѕ.


text:
Patrick Moraz:
Born in Switzerland, Patrick Moraz began studies in violin and piano as a young child. His serious commitment to piano really began when he had the opportunity (because they were living in the same house in Vevey, Switzerland) to intently watch and listen to Clara Haskil the great Romanian concert pianist who was one of the world's leading authorities on the music of Mozart, Shubert, Bach and Beethoven. Later, while attending the Conservatory of Lausanne he studied Harmony and Counterpoint, (the Art of the Fugue), with, amongst other music celebrities, Nadia Boulanger, to name but a few. At age nine, by the sheer fact that his father was managing multiplex restaurants which included generally theaters and various stages, Patrick had already met such luminaries as Bourvil, the comic French movie star, Louis Armstrong, Maurice Chevalier, to name but a few. Later on, he met John Lewis, from the Modern Jazz Quartet, from whom he got a few music lessons, Lionel Hampton, Count Basie and even Duke Ellington. It's only later on that he had the pleasure and privilege to meet and be around Salvador Dali and his wife Gala, while living near Cadaques, in the North of Spain.
At the age of sixteen, Patrick gained attention as the youngest person to ever win the prestigious "Best Soloist Award" at the Zurich Jazz Festival. A few years later, with his quartet, he was opening concerts in Europe for "Jazz Great", John Coltrane. In November 1964 Patrick went to England in order to start learning English. He was offered a job working as an au-pair cook for a school in the south of England which supplied room- and- board and a meager salary of £2.88. During this period Patrick had found a gig playing in a local pub and also in a tearoom to supplement his income. One day, he was ousted by the Secretary of the Local Musicians Union Branch and two "Bobbies" and from there, escorted out of the country. Not to be defeated a week later he was back in England after taking a boat from France. A few months later the same thing happened again while Patrick was playing for a church. Determined to finish his language studies Patrick returned to England yet again, and was able to pass with flying colors the proficiency for English from Cambridge University.
From the mid- sixties on Patrick's work assignments and musical performances had him traveling extensively throughout Switzerland and Europe and in the mid sixties he added India, Africa and the Middle East to his journeys. In 1968 Patrick decided to become a full time professional musician. While advancing his studies with such notables as Pierre Boulez, Stockhausen and Xenakis, as part of Geneva's Studio de Musique Contemporaine, he began to do film scores. His first score was for a movie entitled "Les vieilles Lunes", commissionned by film-director Daniel Fahri, who later on, started with his brother 2 famous jazz-clubs in Paris and Geneva. Then, Patrick scored and recorded with his own group the music for "La Salamandre" and "Le milieu du Monde", by Director Alain Tanner. During this time he also went on to form, along with good friend (bassist) Jean Ristori, the revolutionary rock-band "MAINHORSE". The group recorded their first and only album "Mainhorse" on Polydor Records and they toured throughout Western Europe, and England. When the group disbanded at the beginning of 1972 Moraz and Ristori toured Japan and the Far East with a Brazilian Ballet Company for the better part of that year. Furthering their Far-Eastern explorations, they lived and worked also in Hong-Kong, appearing on Chinese Television under the name of "The Patrick Moraz Quartet" which included also 2 additional South-American percussionists. Upon their return to Switzerland,
Patrick scored, with the help of his friend and mentor, world famous organist Guy Bovet, the soundtrack for the movie "L' Invitation", by Director Claude Goretta, which won the prestigious "Grand Prix du Jury" (the most coveted award aside from the "Palme d' Or") at the 1973 Cannes Film Festival. Directly after that Patrick scored another movie for the same director Claude Goretta, "Pas si mechant que ça" starring the two of the most important filmstars of France at the time, Gerard Depardieu and Marlène Jobert. Other movie scores followed during the next twenty years. Patrick moved to London in the spring of 1973 and formed the Rock Trio "REFUGEE" with two English musicians he had met a few years earlier, Lee Jackson and Brian Davison, both former members of "The Nice". Rising to international fame in 1973-1974, "Refugee" split up after their first and only successful tour of England and Europe and their critically acclaimed eponymous LP-Album of the same name.
In August of 1974 Patrick Moraz was invited to become the keyboardist and member of one of the biggest rock bands in the world: "YES". Patrick proved to be quite at home in this most complex period in YES's evolution and in fact after only a few weeks of recording and rehearsing, provided his musical creative input to what many fans consider to be the band's pinnacle of artistic creativity…the album "Relayer". During the "Relayer Tour", the group performed virtually non-stop, worldwide, for the next three years. In 1976 during America's bi-centennial year of celebrations many of YES's audiences numbered in the tens of thousands, with the largest audience to date for YES, reaching a number of 135,000 at JFK Stadium in Philadelphia on June 12th. During breaks from band work, all of the members of YES recorded their own solo albums.
Patrick's first solo album was the visionary "i" (a.k.a. "The Story of i") which was released in 1976 by Atlantic Records and won the highest place in the Polls which awarded him the very prestigious "Best Keyboard Album of the Year", by Keyboard Magazine. That same year, Patrick also won the 1st place in that Poll, with the coveted title of "Best New Talent". The very accomplished musicians Patrick chose to work and play with on his album were Jeff Berlin, (bass), Alphonse Mouzon (drums), Ray Gomez (guitar), Andy Newmark (drums), as well as 16 of the top Brazilian percussionists, having recorded the original tracks with them in Rio-de Janeiro at the beginning of 1975. In addition to all the instrumental music and French lyrics that Patrick composed and performed for the album, he chose, as lead singer for the project, the English singer and lyricist John McBurnie, who wrote the lyrics to the music of the three English songs that Moraz had originally composed the music of, with additional backing vocals by Vivienne McAuliffe. In the spring of 1977 after the recording of "Out In The Sun" Patrick moved to Brazil and learned the native musical languages and idioms of this most exotic land. During previous visits to the country Patrick had built a unique band of sixteen percussionists. For over two years, the group recorded at numerous recording studios and performed at festivals and concerts, mainly throughout the Latin American Nations.
Moraz was engaged by the Moody Blues in 1978 to take part in a promotional World Tour for their comeback album "Octave". Patrick was made a full time member of the Moody Blues in 1980, during the recording of "Long Distance Voyager" which went on to become #1 in "Billboard", "Cashbox" and across the board in US and Canadian charts, reaching worldwide sales of over 11 million albums. In addition to circling the globe and performing with the Moodies,
Patrick was giving concerts with his own band from Brazil. Invited by Claude Nobs, the visionary founder of the world-famous Montreux Jazz Festival, to play at the Montreux and Sao Paolo Jazz Festivals, he met jazz greats George Duke, Stan Getz and Chick Corea, with whom he worked with on two albums, along with French bass virtuoso Bunny Brunel whom he had introduced previously in England to Chick. Patrick also continued to record his solo albums during this period including the revolutionary "Future Memories1" in 1979 and "Future Memories ll" in1982 which were chosen to represent Switzerland at the Montreux Golden Rose Festival. They were both spontaneously composed and broadcast live on television throughout Europe. Late in 1979, Moraz recorded a series of original works based on musical idioms, with the pan pipe virtuoso Simon "Syrinx" Stanciu resulting with the album "Co-Existence" which was later re-released as "Libertate", and to provide some funding for a Charity Organization in favor of the children of Romania, after the 1989 Revolution. This marriage of musical styles symbolically "erased" cultural boundaries, blending the ancient, melodic tones of the panpipe wooden flute with modern day synthesizers, electronic keyboards, acoustic piano, ethnic percussions and rock instruments. After this extraordinary, once again "ahead-of-its-time" venture,
Patrick continued to work as a member of "The Moody Blues" and also to record and perform as a solo artist, collaborating with fellow YES alumnus Bill Bruford, on two acclaimed albums, "Music for Piano and Drums" and "Flags". He also recorded with bass virtuoso Bunny Brunel and guitarist Kazumi Watanabe on different solo projects of each, including some tracks for the up-&-coming "Change of Space", which was eventually released later in the year 2009. Patrick left "The Moody Blues" in 1991 to pursue a career as a solo artist. In 1994 he released his 9th solo album, his piano solo debut "Windows of Time". Robert Doerschuk of Keyboard Magazine hailed it as a monumental work saying: "If Beethoven had gigged with YES, he might have wound up sounding like this"! Patrick's 1995 "Coming Home America Tour", better known as "CHAT", may well be one of the most unique and courageous undertakings yet, in an illustrious career marked by innovation. In his determination to bring artist and audience closer together, in order to truly share the emotional intensity that is the creative acoustic experience, Patrick took it upon himself to go directly to his public by offering private and semi-private bookings via the Internet. The response was immediate and enthusiastic leading to an equally successful "CHAT ll" tour.
In 2001 Patrick was commissioned to write an hour of music for a large symphony orchestra in France. It took him nine months and the work was performed and broadcast live on French speaking television for the Miss France contest on channels all over the world at the end of that year. Apart from composing extensively at the Audio Playground Synthesizer Museum and Studios in Orlando, FL, to where he was invited to work at by the owners themselves, at that time, Joseph and Michelle Rivers. Since 1998, Patrick also released two new works for piano: "Resonance", released in 2000, and "ESP" (Etudes-Sonatas-Preludes) released in September of 2003. Since then, Patrick Moraz continued to compose, record and develop various musical and artistic projects.
In and around 2005, Patrick met the visionary Music aficionado and entrepreneur from England who took it upon himself to have a very important roster of artists works released and re-released worldwide through his own distribution company "Voice Print Records", recently re-named "Gonzo Multimedia". These artists, including Patrick Moraz, came from the very fabric which made the musical History of the 60s, 70s, 80s, 90s and of the 21st Century so vibrant and interesting. Aided by a very efficient team, Voiceprint Records found the way to have all these "gems" reprised and manufactured in the best way possible, thus prolongating the lives, not only of the products, but of the artists themselves. Since 2006, he has remastered twenty CD's and two DVD's.
In 2009 Patrick released his latest CD to date, "Change of Space" which is a collection of songs and instrumental pieces of "never-released material" which Patrick worked on, composing, recording, mixing and "polishing" over a period spanning a time-frame betwwen 1989 and 2003. These pieces reflect very much some of the music he composed and developed over the years and recorded on his own as well as with other remarkable musicians and engineers. In 2009, the recordings of the work, under the name of "Change of Space"were mastered byJean Ristori at MTX Mastering Studios inSwitzerland. Some of the great musicians who are featured on this album are: Bunny Brunel (bass), John Wackerman (drums), Kazumi Watanabe (Electric guitar), Alex Acuna (Perc.) Alex Ligertwood (lead vocals), Don Adey (lead vocals), Janis Liebhart (backing vocals), Ronnie Ciago (drums), Michael Tovar (rhythm. Guitar).
In 2012 Patrick released three entirely new CDs which are: a live Moraz-Bruford double CD recording of a concert in Maryland, a new solo piano CD entitled "PianissiMoraz" and the brand new "Moraz Live at Abbey Road", which was completely performed and recorded live, entirely on his own in 1987, at the famous Beatles Abbey Road Studio #2, London, England. Patrick is also still working in the preparation of his up and coming new studio CD: "A W A Y T O F R E E D O M" During the last few years, in addition to various participations in the recording of some very interesting but complex "Tribute Album" in the company of producers and musicians Billy Sherwood, Alan Parsons, Chris Squire, Steve Stevens and Alan White.
Currently, in 2013, Patrick Moraz has been invited to take part in the "Cruise to the Edge 2014" or "CTTE"., from April 7th to 12th 2014. Though described as "The Prog-Rock Music Festival Event of the Century at Sea", During his most recent interview, Moraz calls it: "A real Journey through Space & Time", on one of the newest and most prestigious ships of the MSC Cruise-Line: The "Divina"! www.cruisetotheedge.com-theartists. And, some of the the latest great News: YES, which Patrick Moraz was a member of during the Mid-Seventies, has been nominated for the potential induction, in 2014, in the "Rock-&-Roll Hall of Fame! https://www.facebook.com/cruisetotheedge
©2023 Patrick Moraz. All rights reserved. Designed by BeauTheme


text:
Man allegedly arrested for following someone "in public."
July 27, 2017 David ManesLawsuits & Press Releases
Man Files Lawsuit against Officer Culp at Oil City Police Department for Prosecution without Cause.
Randy became one of the suspects of a criminal investigation led by Officer Culp of the Oil City Police Department. Although Randy had a contentious history with the main suspect of theft, no evidence showed that Randy had participated in the theft. Video footage continued to confirm Randy's innocence in this crime and to point back to the main suspect.
Officer Culp met with the main suspect and listened to his accusations of Randy, including a claim that Randy had followed the main suspect "in public." Following someone else in public is not an illegal activity. Rather than arrest the main suspect with alleged clear evidence of wrong doing, the officer arrested Randy on the grounds of the main suspect's accusations. However, no real evidence pointed to Randy, but Officer Culp arrested Randy anyway.
After almost two months of jail time, Randy filed for relief through Habeas Corpus, objecting to his wrongful imprisonment. With no solid evidence against him, Randy asserts that he wasted two months in prison for Officer Culp's blatant misuse of his authority. The first court's decision to dismiss 5 of the 7 charges brought against Randy further throws more doubt on Officer Culp. Five months later, the final two charges were dismissed as well. According to Randy, the dismissal of those seven charges reveal how Office Culp fictionalized them.
The law demands that citizens of the United States only be prosecuted with probable cause. Since Officer Culp allegedly arrested Randy without true cause or evidence, he directly contradicted the law. No citizen of the United States should have to deal with such treatment. Naturally, Officer Culp and the Oil City Police Department denies these claims. However, KM&A fights for men like Randy, who have been wronged by individuals trusted to enforce the law.
Full text of this complaint, as filed with the District Court for the Western District of Pennsylvania, is available at docket no: 1:17-cv-00149-BR
Kraemer, Manes & Associates LLC is an employment law firm with principal offices in Pittsburgh and Philadelphia, serving all counties in Pennsylvania, focusing on employment law, business law, litigation, and civil issues. KM&A clients include employees, small businesses, parties in litigation, and people with a variety of legal issues.
For more information about this case, contact Attorney Martell Harris at 412-626-5585 or at mh@lawkm.com.
NOTICE: All information contained in this statement comes from the Complaint which has been filed as a public record with the court. As dedicated civil rights attorneys, we strongly believe in the public value of telling our clients' stories: violators can be held accountable, and other silent victims can feel empowered to stand up for their legal rights. Although we make every attempt to verify our clients' claims, note that the defendant is expected to oppose our client's position, and the court has not ruled one way or the other as of the date of this statement.


Putin's United Russia set to trounce the opposition in parliamentary polls.
Opposition parties say the poll will not be free and fair.
Al Jazeera's Laurence Lee, reporting from Moscow on Sunday, said there were suggestions that people were being forced to go out and vote.
"It's a referendum on Putin, and they've said that. But in order to legitimise that it needs a high turn out - it needs to have a popular mandate - and some people have suggested that they are actually forcing people to go out and vote to get that high turnout," he said.
A former officer with the KGB, the Soviet Union's intelligence agency, Putin has been president since 2000, and is barred from running for a third consecutive term by the constitution.
However, Putin announced on October 1 that he would head United Russia's list for the elections, guaranteeing him a place in the Duma - Russia's lower house of parliament.
The party usually labels itself as a centrist party and was founded in April 2001. It has been making gains in recent federal and local elections due to the popularity of Putin, although he is a non-member.
Putin has cast the election as a referendum on his rule, saying that a vote for United Russia would safeguard the country's oil-driven economic boom and stability.
"The result of the parliamentary elections will, without a doubt, set the tone for the elections for a new president," Putin said in a televised address aired for a second time on Friday.
In his final pitch to voters, Putin urged them to turn out, claiming that a vote for his opponents could return the country to the "humiliation, dependency and disintegration" of the early post-Soviet years.
As required by law, a campaign blackout started at midnight on Friday, although United Russia posters remained in the capital, Moscow, while those of the 10 other parties were less visible.
"The result of the parliamentary elections will, without a doubt, set the tone for the elections for a new president"
Sergei Mitrokhin, deputy chairman of the Yabloko party, told radio Ekho Moskvy that he had complained to the central election commission about Putin's speech.
"This was a flagrant violation of the legislation, an abuse of office in the interests of one party," he said.
The opposition has accused the Kremlin of suppressing debate during the campaign by dominating coverage on state-run TV, confiscating their election leaflets and arresting members.
Stanislav Babin, running for the Union of Right-Wing Forces (SPS) party in the Black Sea Krasnodar region, said that a dozen police officers had tried to break into the party's local branch on Saturday.
"This is official pressure on the SPS. Eighty thousand copies of our election leaflets have been confiscated for being 'extremist'."
Garry Kasparov, a critic of the Kremlin, has dismissed the elections as a "farce" and warned that Putin is leading the country towards dictatorship.
After being detained for five days this week for taking part in an unauthorised protest against Putin, Kasparov accused the president of resorting to repression to cement his party's dominance.
"Fear is the only chance this regime has to survive," Kasparov said.
Election monitors say they are concerned by allegations that voters are being pressured by the authorities to vote at their workplaces, under the supervision of their bosses.
Opinion polls show the Communists are the only party other than United Russia that is assured of exceeding the seven per cent threshold required to qualify for seats in the new Duma.
About 450,000 police officers will be on duty on Sunday, and 95,000 polling stations have been set up across Russia's 11 time zones.


text:
Energy.gov - Home
Barca LNG LLC - FE Dkt. 13-117-LNG (FTA)
The Office of Fossil Energy gives notice of receipt of an Application filed August 23, 2013, by Barca LNG LLC (Barca), seeking a long-term multi-contract authorization to export domestically produced liquefied natural gas (LNG) up to the equivalent of 584 billion cubic feet of natural gas per year to Free Trade Agreement (FTA) countries. Authorization is for a 25-year period commencing on the earlier of the date of first export or eight years from the date the authorization is issued. Barca proposes to export LNG from its proposed LNG terminal site in Brownsville, Texas to any country that has, or in the future will have, the capacity to import LNG via ocean-going carrier, with which the United States has, or in the future enters into, an FTA requiring national treatment for trade in natural gas. A federal register notice will not be issued.
FILED/ISSUED BY:
Barca LNG LLC
Application for Long-term Authority to Export LNG to Free Trade Agreement Countries
Order 3365 Granting Long-Term Multi-Contract Authority to Export LNG by Vessel from the Port of Brownsville, Texas to FTA Nations
3. 12/18/2020 U.S. Department of Energy Policy Statement on Including Short-Term Export Authority in Long-Term LNG Export Authorizations
OFFICE OF FOSSIL ENERGY
1000 Independence Ave, SW
202-586-6503 ABOUT THIS SITE
Open Government ENERGY DEPARTMENT
Small Business FEDERAL GOVERNMENT
Larine Moore
(FE-34)


text:
/**
 * Support and FAQ: visit Atmel Support
 */

#include <asf.h>
#include "ui.h"

//! Current USB mode
static bool ui_b_host_mode = false;

/**
 * \name Internal routines to manage asynchronous interrupt pin change
 * This interrupt is connected to a switch and allows to wakeup CPU in low sleep mode.
 * In USB device mode, this wakeup the USB host via a upstream resume.
 * In USB host mode, this wakeup the USB devices connected via a downstream resume.
 * @{
 */
static void ui_enable_asynchronous_interrupt(void);
static void ui_disable_asynchronous_interrupt(void);

/**
 * \brief Interrupt handler for interrupt pin change
 */
ISR(ui_wakeup_isr, AVR32_GPIO_IRQ_GROUP, 0)
{
	// Clear GPIO interrupt.
	gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_PUSH);

	// Clear External Interrupt Line else Wakeup event always enabled
	eic_clear_interrupt_line(&AVR32_EIC, EXT_NMI);

	if (ui_b_host_mode) {
		if (!uhc_is_suspend()) {
			// USB is not in suspend mode
			// Let's interrupt enable.
			return;
		}
		ui_disable_asynchronous_interrupt();

		// Wakeup the devices connected
		uhc_resume();
	} else {
		// In device mode, wakeup the USB host.
		udc_remotewakeup();
	}
}

/**
 * \brief Initializes and enables interrupt pin change
 */
static void ui_enable_asynchronous_interrupt(void)
{
	//! Structure holding the configuration parameters of the EIC low level driver.
	eic_options_t eic_options = {
			// Choose External Interrupt Controller Line
			.eic_line = EXT_NMI,
			// Enable level-triggered interrupt.
			.eic_mode = EIC_MODE_LEVEL_TRIGGERED,
			// Don't care value because the chosen eic mode is level-triggered.
			.eic_edge = 0,
			// Interrupt will trigger on low-level.
			.eic_level = EIC_LEVEL_LOW_LEVEL,
			// Enable filter.
			.eic_filter = EIC_FILTER_ENABLED,
			// For Wake Up mode, initialize in asynchronous mode
			.eic_async = EIC_ASYNCH_MODE};

	/* register joystick handler on level 0 */
	irqflags_t flags = cpu_irq_save();
	irq_register_handler(ui_wakeup_isr,
			AVR32_GPIO_IRQ_0 + (GPIO_JOYSTICK_PUSH / 8), 0);
	cpu_irq_restore(flags);

	/* configure joystick to produce IT on all state change */
	gpio_enable_pin_interrupt(GPIO_JOYSTICK_PUSH, GPIO_PIN_CHANGE);

	/*
	 * Configure pin change interrupt for asynchronous wake-up (required to
	 * wake up from the STATIC sleep mode).
	 *
	 * First, map the interrupt line to the GPIO pin with the right
	 * peripheral function.
	 */
	gpio_enable_module_pin(GPIO_JOYSTICK_PUSH, AVR32_EIC_EXTINT_8_FUNCTION);

	/*
	 * Enable the internal pull-up resistor on that pin (because the EIC is
	 * configured such that the interrupt will trigger on low-level, see
	 * eic_options.eic_level).
	 */
	gpio_enable_pin_pull_up(GPIO_JOYSTICK_PUSH);

	// Init the EIC controller with the set options.
	eic_init(&AVR32_EIC, &eic_options, sizeof(eic_options) /
			sizeof(eic_options_t));

	// Enable External Interrupt Controller Line
	eic_enable_line(&AVR32_EIC, EXT_NMI);
}

/**
 * \brief Disables interrupt pin change
 */
static void ui_disable_asynchronous_interrupt(void)
{
	eic_disable_line(&AVR32_EIC, EXT_NMI);

	/* Disable joystick input change ITs. */
	gpio_disable_pin_interrupt(GPIO_JOYSTICK_PUSH);
}
//! @}

/**
 * \name Main user interface functions
 * @{
 */
void ui_init(void)
{
	LED_Off(LED0);
	LED_Off(LED1);
	LED_Off(LED2);
	LED_Off(LED3);
	LED_Off(LED_BI0_GREEN);
	LED_Off(LED_BI0_RED);
	LED_Off(LED_BI1_GREEN);
}

void ui_usb_mode_change(bool b_host_mode)
{
	ui_init();
	ui_b_host_mode = b_host_mode;
	if (b_host_mode) {
		LED_On(LED0);
	}
}
//! @}

/**
 * \name Host mode user interface functions
 * @{
 */

//! Status of device enumeration
static uhc_enum_status_t ui_host_enum_status=UHC_ENUM_DISCONNECT;
//! Manages device mouse moving
static int8_t ui_host_x, ui_host_y, ui_host_scroll;

void ui_host_vbus_change(bool b_vbus_present)
{
	if (b_vbus_present) {
		LED_On(LED1);
	} else {
		LED_Off(LED1);
	}
}

void ui_host_vbus_error(void)
{
}

void ui_host_connection_event(uhc_device_t *dev, bool b_present)
{
	LED_Off(LED3);
	LED_Off(LED_BI0_GREEN);
	LED_Off(LED_BI0_RED);
	LED_Off(LED_BI1_GREEN);
	if (b_present) {
		LED_On(LED2);
	} else {
		LED_Off(LED2);
		ui_host_enum_status = UHC_ENUM_DISCONNECT;
	}
}

void ui_host_enum_event(uhc_device_t *dev, uhc_enum_status_t status)
{
	ui_host_enum_status = status;
	if (ui_host_enum_status == UHC_ENUM_SUCCESS) {
		ui_host_x = 0, ui_host_y = 0, ui_host_scroll = 0;
	}
}

void ui_host_wakeup_event(void)
{
	ui_disable_asynchronous_interrupt();
}

void ui_host_sof_event(void)
{
	bool b_btn_state;
	static bool btn_suspend = false;
	static bool btn_suspend_and_remotewakeup = false;
	static uint16_t counter_sof=0;

	if (ui_host_enum_status == UHC_ENUM_SUCCESS) {

		// Display device enumerated and in active mode
		if (++counter_sof == 500) {
			counter_sof = 0;
			LED_Toggle(LED3);
		}

		// Scan button to enter in suspend mode
		b_btn_state = !gpio_get_pin_value(GPIO_PUSH_BUTTON_0);
		if (b_btn_state != btn_suspend) {
			// Button have changed
			btn_suspend = b_btn_state;
			if (b_btn_state) {
				// Button has been pressed
				LED_Off(LED3);
				LED_Off(LED_BI0_GREEN);
				LED_Off(LED_BI0_RED);
				LED_Off(LED_BI1_GREEN);
				ui_enable_asynchronous_interrupt();
				uhc_suspend(false);
				return;
			}
		}

		// Scan button to enter in suspend mode and remote wakeup
		b_btn_state = !gpio_get_pin_value(GPIO_PUSH_BUTTON_1);
		if (b_btn_state != btn_suspend_and_remotewakeup) {
			// Button have changed
			btn_suspend_and_remotewakeup = b_btn_state;
			if (b_btn_state) {
				// Button has been pressed
				LED_Off(LED3);
				LED_Off(LED_BI0_GREEN);
				LED_Off(LED_BI0_RED);
				LED_Off(LED_BI1_GREEN);
				ui_enable_asynchronous_interrupt();
				uhc_suspend(true);
				return;
			}
		}

		// Power on a LED when the mouse move
		if (!ui_host_x && !ui_host_y && !ui_host_scroll) {
			LED_Off(LED_BI1_GREEN);
		}else{
			ui_host_x = ui_host_y = ui_host_scroll = 0;
			LED_On(LED_BI1_GREEN);
		}
	}
}

void ui_host_hid_mouse_btn_left(bool b_state)
{
	if (b_state) {
		LED_On(LED_BI0_GREEN);
	} else {
		LED_Off(LED_BI0_GREEN);
	}
}

void ui_host_hid_mouse_btn_right(bool b_state)
{
	if (b_state) {
		LED_On(LED_BI0_RED);
	} else {
		LED_Off(LED_BI0_RED);
	}
}

void ui_host_hid_mouse_btn_middle(bool b_state)
{
}

void ui_host_hid_mouse_move(int8_t x,int8_t y,int8_t scroll)
{
	ui_host_x = x;
	ui_host_y = y;
	ui_host_scroll = scroll;
}
//! @}

/**
 * \name Device mode user interface functions
 * @{
 */
#define  MOUSE_MOVE_RANGE  3
static bool ui_device_b_mouse_enable = false;

void ui_device_suspend_action(void)
{
	ui_init();
}

void ui_device_resume_action(void)
{
	LED_On(LED1);
}

void ui_device_remotewakeup_enable(void)
{
	ui_enable_asynchronous_interrupt();
}

void ui_device_remotewakeup_disable(void)
{
	ui_disable_asynchronous_interrupt();
}

bool ui_device_mouse_enable(void)
{
	ui_device_b_mouse_enable = true;
	return true;
}

void ui_device_mouse_disable(void)
{
	ui_device_b_mouse_enable = false;
}

void ui_device_sof_action(void)
{
	bool b_btn_state;
	uint16_t framenumber;
	static bool btn_left_last_state = HID_MOUSE_BTN_UP;
	static bool btn_right_last_state = HID_MOUSE_BTN_UP;
	static bool btn_middle_last_state = HID_MOUSE_BTN_UP;
	static uint8_t cpt_sof = 0;

	if (!ui_device_b_mouse_enable)
		return;

	framenumber = udd_get_frame_number();
	if ((framenumber % 1000) == 0) {
		LED_On(LED2);
	}
	if ((framenumber % 1000) == 500) {
		LED_Off(LED2);
	}
	// Scan process running each 2ms
	cpt_sof++;
	if (2 > cpt_sof)
		return;
	cpt_sof = 0;

	// Scan buttons on switch 0 (left), 1 (middle), 2 (right)
	b_btn_state = (!gpio_get_pin_value(GPIO_PUSH_BUTTON_0)) ?
			HID_MOUSE_BTN_DOWN : HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_left_last_state) {
		udi_hid_mouse_btnleft(b_btn_state);
		btn_left_last_state = b_btn_state;
	}
	b_btn_state = (!gpio_get_pin_value(GPIO_PUSH_BUTTON_1)) ?
			HID_MOUSE_BTN_DOWN : HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_middle_last_state) {
		udi_hid_mouse_btnmiddle(b_btn_state);
		btn_middle_last_state = b_btn_state;
	}
	b_btn_state = (!gpio_get_pin_value(GPIO_PUSH_BUTTON_2)) ?
			HID_MOUSE_BTN_DOWN : HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_right_last_state) {
		udi_hid_mouse_btnright(b_btn_state);
		btn_right_last_state = b_btn_state;
	}
	// Joystick used to move mouse
	if (is_joystick_right())
		udi_hid_mouse_moveX(MOUSE_MOVE_RANGE);
	if (is_joystick_left())
		udi_hid_mouse_moveX(-MOUSE_MOVE_RANGE);
	if (is_joystick_up())
		udi_hid_mouse_moveY(-MOUSE_MOVE_RANGE);
	if (is_joystick_down())
		udi_hid_mouse_moveY(MOUSE_MOVE_RANGE);
}
//! @}

/**
 * \defgroup UI User Interface
 *
 * Human interface on EVK1100 :
 * - PWR led is on when power present
 * - Led 0 is on in host mode (when USB OTG cable is pluged)
 * - device mode:
 *   - Led 1 is on when USB line is in IDLE mode, and off in SUSPEND mode
 *   - Led 2 blinks when USB host has checked and enabled HID mouse interface
 *   - Mouse buttons are linked to switch PB0 (left), PB1 (middle), PB2 (right)
 *   - Joystick are used to move mouse
 *   - Only Push joystick button can be used to wakeup USB Host in remote wakeup mode.
 * - host mode:
 *   - Led 1 is on when Vbus is present
 *   - Led 2 is on when a device is connected
 *   - Led 3 blinks when the device is enumerated and USB in idle mode
 *   - Led 4 green is on when the mouse left button is down
 *   - Led 4 red is on when the mouse right button is down
 *   - Led 5 green is on when the mouse move
 *   - Switch PB0 allows to enter the device in suspend mode
 *   - Switch PB1 allows to enter the device in suspend mode with remote wakeup feature authorized
 *   - Only Push joystick button can be used to wakeup the USB devices in suspend mode
 *
 * Note: On board the LED labels are incremented of one.
 * E.g. Led0 in software corresponding at Led1 label on board.
 */

redpajama_set_name: RedPajamaGithub


One of the major marketing points from Embarcadero is that Delphi will create applications that are "native" to your mobile platform. One of the major complaints that I see from people trying Delphi for mobile platforms is the disappointment about the speed and appearance of these "native" applications. This is a classic case of a company overselling their product, inflating the expectations of their customers, and then disappointing them.
So is Delphi creating "native" applications for iOS and Android? The answer is yes, yes-ish, and not at all. 🙂 What you need to realize is that there are many ways that an application can be native (or not) to a platform. I am going to talk about 3 ways to help you understand what Delphi is good and not-so-good for. There is native to the hardware, native to the OS, and native look and feel.
Native to the hardware means that your code is compiled down to actual machine instructions of the hardware. This is the area that Embarcadero has done a great job and is really what their marketing department is selling you. Unlike Java or Python or php, Delphi's code is not interpreted by some engine or virtual machine. After the compiling and linking are finished, that code that adds 2 numbers goes directly to the hardware without any layer in-between. This is true for Windows, for MacOS, for iOS, and for Android.
Note that this doesn't mean that you cannot write fast interpreted code or slow compiled code. The algorithms you write and the optimizations that the interpreter/compiler does and does not perform can greatly affect execution speed. It does mean that Delphi has an in-built advantage over interpreted code here though.
Note 2: Native to the Hardware could also mean direct access to the hardware (such as GPS, camera, etc) of the device, but unless you are writing device drivers, noone does direct access to that kind of hardware. It is more properly a function of the OS APIs which is discussed in the following section.
What I mean by native to the OS is does a program have direct access to the API and controls of the Operating System of the device? For Delphi and iOS, this is an *equivocal* yes. For Delphi and Android, this is a *good enough*. Almost by definition, unless your development language is the same language used by the OS, you will always have to use a hopefully thin application programming interface to the OS and its controls (this is one area where C++Builder can do better than Delphi on iOS). Since iOS' "native" language is objective-C and (even worse from Delphi's standpoint), Android's "native" language is Java, Delphi is not "native" to the OS. However, that does not mean it is a second class citizen for development.
You see, Delphi, at least the Delphi that everyone thinks about, has never had direct access to the API and controls of the Operating System. One of the things that made Delphi great is its true Rapid Application Development of applications using its VCL. The VCL is not direct access to the Window's API. At best from the standpoint of direct access, you had to use C headers to access Window's services and at worst, the VCL was a thin wrapper around Window's controls. The TListBox is not native to Windows – it is a beautifully logical wrapper around a Window's object. Delphi sacrificed native access to the API and controls to give you Rapid Application Development (RAD). The goal, however, has been to keep the layer's between Delphi and the OS as thin and fast as possible, while keeping RAD and now adding cross-platform development.
So Native to the OS is a qualified yes. For Windows, OSX, and iOS (as they are all based on C/C++), access to OS services through APIs is fast and clean. For Android, the access is not so good as Delphi needs to use a JNI (Java Native Interface) layer, which is expensive relative to C APIs.
Delphi's cross-platform library, Firemonkey or FMX, wrap services like Location and the Camera in what I believe is a very good way for cross-platform development. These classes help hide the complexity of the underlying service and abstracts it for all platforms that Delphi supports. They are thin but good layers to the underlying OS services.
However, access to the native OS controls is another story and is the subject of my next section.
Native Look and Feel is the area where everyone is getting disappointed. Delphi mobile apps can look slightly wrong, feel slightly sluggish, and act in a non-standard way (relative to OS controls). This is the consequence of the path Embarcadero chose to implement cross-platform controls like TListBox, TMemo, etc.
The VCL, unlike FMX, is a thin wrapper around native Window's controls and so shares Windows look and feel and smooth responsiveness (insert Mac fanboy disparaging comments here ;-)). When you click and drag your mouse on Windows, you are clicking and dragging on Window's controls. When the application runs on a new Windows OS, it inherits (mostly) the new look and feel. The VCL communicates through Windows messages with the underlying OS controls and everything just works.
FMX emulates all controls of the underlying OS. It draws every pixel itself and handles every user interaction. This is the cause of the slightly wrong look and feel. This is why a Delphi TListBox will have different bugs than Android's list box. This is why it will refresh slower and respond slower than the iOS list box. This is also why, when a new OS is published, Delphi apps do not update their look and feel and can look out of date.
So, despite Embarcadero's claims of pixel-perfect compatibility, Delphi does not have NATIVE look and feel. FMX still provides the RAPID in RAD, just not native look and feel.
I wrote that this is a consequence of Embarcadero's decision, and it is. And I really cannot blame them for the decision. With the VCL, Embarcadero/Borland chose the thin wrapper over the OS approach. It works beautifully, but it ties the component library to the OS. Embarcadero could have chosen this approach for FMX but it is really, really hard and we would still be waiting for cross-platform compatibility. They would have had to develop a cross-platform abstraction for every control in FMX (a herculean task by itself and maybe not possible). Then, for every platform they support, they would have to develop and maintain an FMX version. Embarcadero chose to "get in the game" as fast as possible. I believe it was the right decision, but it does mean that they have to deal with the consequences of their choice.
Note: the bugginess and responsiveness will improve (and God do I know that there are bugs!). Every version Embarcadero has been improving the FMX library. While it will never have native look and feel, improved look and feel will occur.
Note 2: you can have native look and feel on Windows and iOS. Choose the VCL for Windows, and choose something like D.P.F Delphi iOS Native Components (http://sourceforge.net/projects/dpfdelphiios/) or TMS's iCL (http://www.tmssoftware.com/site/tmsicl.asp), which do the same thing for iOS. Of course, you sacrifice the cross-platform development… though you get to keep using your Delphi skillset and with proper modularization can hopefully keep the incompatibilities to a minimum.
So what does all this mean for developers? It means that Delphi has its strengths and weaknesses, and as long as you are aware of them, you can choose Delphi for the right jobs.
Game developers, surprisingly enough, who want to develop cross-platform games which don't have "native" interfaces anyway and where FMX can provide fast-enough graphics. (In other words, not Madden level graphics but Angry Birds).
Compelling apps where the user will forgive some idiosyncrasies because the app is so good. I mention this because Delphi allows you to concentrate on the app. Delphi provides the RAD and the cross-platform compatibility, you can concentrate on making the killer app.
Hopefully, this article helps you understand the "nativeness" of Delphi. I believe if you choose Delphi with eyes open to its strengths and limitations and how it can help you solve your problem, it is an excellent choice.
This entry was posted in Coding on September 28, 2013 by tgrubb.


Fantastic opportunity to join our friendly, successful team. Great atmosphere fantastic earning potential.
both part and full time available. Flexible working hours and great career growth.
We look forward to hearing from you. Don't miss out on this great offer.


Sorry that I was unable to make the last meeting on Friday evening. I have just had a chat with John who sent me on his comments about the meeting and it seems that everyone at the meeting was not in agreement with what had already been done. It seems that some houses did not get the minutes of the last meeting – I did put an envelope through each of the doors and posted them on the website (www.cottagescentenary.page.tl) – but I am including the previous minutes with this letter to the people who were at the last meeting.
I was under the impression that we had all agreed to hold the meal at the Skellig and that I was asked to book the hotel if it was available on 3rd October. I had a chat with Karen at the hotel and as the 3rd October was available I PROVISIONALLY booked that date and asked for a sample menu. This was only a basis on which to work and as you can see from the letter from the Skellig they are happy to discuss cost and menus etc. closer to the date. From John's comments it seems that some people feel that it would be better to have the meal somewhere else!! SHOULD I CANCEL THE SKELLIG? I will leave the booking in place until next FRIDAY, 22ND MAY and unless I hear from each of you letting me know that you want to go ahead with the meal I will CANCEL THE BOOKING on Friday. I think it would be unfair to the Skellig to leave the booking in place if we do not intend to use it as they could well be turning down other bookings for that date.
I am posting John's summing up of the last meeting on the website also and have included a copy with this letter. Please get back to me before Friday letting me know whether or not you want the event in the Skellig to go ahead. You can either 'phone, text or e-mail your comments to the numbers and addresses above. If I do not hear from you I will cancel the booking.


Golf Masters of Myrtle Beach, South Carolina Offers Golf Packages; Get Your Golf Package Now!
Myrtle Beach Golfmasters specializes in providing the top Myrtle Beach golf packages, including rounds of golf, dining specials, and lodging & accommodation specials. We also offer the flexibility to play as many courses as you want during your stay.
Myrtle Beach, Soth Carolina is one special place with beautiful beaches, the charm of the southern coast, and championship level golf courses all come together to create a truly unique and memorable golf vacation experience. Our Myrtle, South Carolina Golf Vacations include world-class courses in the Myrtle Beach, Grand Strand area of South Carolina with over ninety fabulous golf courses from which to choose.


We can ID this gallinule as a South Island Takahe by its large size, mainly purplish-blue color, red frontal shield that extends to the forehead, huge conical red bill and stout red legs.
The South Island Takahe is a flightless bird that is endemic to New Zealand. It is the largest rail in the world. This bird was thought to be extinct. See the story in the next to last photo about how it was rediscovered.
The South Island Takahe is a new species to our Photographic Life List, which now stands at 739.


text:
Silobia is a genus of lichenized fungi in the family Acarosporaceae. The genus was circumscribed in 2010.

References

External links

Acarosporales
Lecanoromycetes genera

redpajama_set_name: RedPajamaWikipedia


text:
package water.rapids.ast.prims.advmath;

import water.AutoBuffer;
import water.MRTask;
import water.fvec.Chunk;
import water.fvec.Frame;
import water.fvec.NewChunk;
import water.fvec.Vec;
import water.nbhm.NonBlockingHashMapLong;
import water.rapids.Env;
import water.rapids.Val;
import water.rapids.vals.ValFrame;
import water.rapids.ast.AstPrimitive;
import water.rapids.ast.AstRoot;
import water.util.ArrayUtils;

import java.util.Arrays;
import java.util.concurrent.atomic.AtomicLong;

/**
 * Variance between columns of a frame
 * TODO: Define "table" in terms of "groupby"
 * TODO: keep dense format for two-column comparison (like in previous version of Rapids)
 * (table X Y) ==>
 * (groupby (cbind X Y) [X Y] nrow TRUE)
 */
public class AstTable extends AstPrimitive {
  @Override
  public String[] args() {
    return new String[]{"X", "Y", "dense"};
  }

  @Override
  public int nargs() {
    return -1;
  } // (table X dense)  or (table X Y dense)

  @Override
  public String str() {
    return "table";
  }

  @Override
  public ValFrame apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
    Frame fr1 = stk.track(asts[1].exec(env)).getFrame();
    final boolean dense = asts[asts.length - 1].exec(env).getNum() == 1;
    Frame fr2 = asts.length == 4 ? stk.track(asts[2].exec(env)).getFrame() : null;
    int ncols = fr1.numCols() + (fr2 == null ? 0 : fr2.numCols());
    Vec vec1 = fr1.vec(0);

    ValFrame res = fast_table(vec1, ncols, fr1._names[0]);
    if (res != null) return res;

    if (!(asts.length == 3 || asts.length == 4) || ncols > 2)
      throw new IllegalArgumentException("table expects one or two columns");

    Vec vec2 = fr1.numCols() == 2 ? fr1.vec(1) : fr2 != null ? fr2.vec(0) : null;
    int sz = fr1._names.length + (fr2 != null ? fr2._names.length : 0);
    String[] colnames = new String[sz];
    int i = 0;
    for (String name : fr1._names) colnames[i++] = name;
    if (fr2 != null) for (String name : fr2._names) colnames[i++] = name;

    return slow_table(vec1, vec2, colnames, dense);
  }

  // -------------------------------------------------------------------------
  // Fast-path for 1 integer column
  private ValFrame fast_table(Vec v1, int ncols, String colname) {
    if (ncols != 1 || !v1.isInt()) return null;
    long spanl = (long) v1.max() - (long) v1.min() + 1;
    if (spanl > 1000000) return null; // Cap at decent array size, for performance

    // First fast-pass counting
    AstTable.FastCnt fastCnt = new AstTable.FastCnt((long) v1.min(), (int) spanl).doAll(v1);
    final long cnts[] = fastCnt._cnts;
    final long minVal = fastCnt._min;

    // Second pass to build the result frame, skipping zeros
    Vec dataLayoutVec = Vec.makeCon(0, cnts.length);
    Frame fr = new MRTask() {
      @Override
      public void map(Chunk cs[], NewChunk nc0, NewChunk nc1) {
        final Chunk c = cs[0];
        for (int i = 0; i < c._len; ++i) {
          int idx = (int) (i + c.start());
          if (cnts[idx] > 0) {
            nc0.addNum(idx + minVal);
            nc1.addNum(cnts[idx]);
          }
        }
      }
    }.doAll(new byte[]{Vec.T_NUM, Vec.T_NUM}, dataLayoutVec).outputFrame(new String[]{colname, "Count"},
        new String[][]{v1.domain(), null});
    dataLayoutVec.remove();
    return new ValFrame(fr);
  }

  // Fast-pass for counting unique integers in a span
  private static class FastCnt extends MRTask<AstTable.FastCnt> {
    final long _min;
    final int _span;
    long _cnts[];

    FastCnt(long min, int span) {
      _min = min;
      _span = span;
    }

    @Override
    public void map(Chunk c) {
      _cnts = new long[_span];
      for (int i = 0; i < c._len; i++)
        if (!c.isNA(i))
          _cnts[(int) (c.at8(i) - _min)]++;
    }

    @Override
    public void reduce(AstTable.FastCnt fc) {
      ArrayUtils.add(_cnts, fc._cnts);
    }
  }

  // -------------------------------------------------------------------------
  // Count unique combos in 1 or 2 columns, where the values are not integers,
  // or cover a very large span.
  private ValFrame slow_table(Vec v1, Vec v2, String[] colnames, boolean dense) {

    // For simplicity, repeat v1 if v2 is missing; this will end up filling in
    // only the diagonal of a 2-D array (in what is otherwise a 1-D array).
    // This should be nearly the same cost as a 1-D array, since everything is
    // sparsely filled in.

    // If this is the 1-column case (all counts on the diagonals), just build a
    // 1-d result.
    if (v2 == null) {

      // Slow-pass group counting, very sparse hashtables.  Note that Vec v2 is
      // used as the left-most arg, or OUTER dimension - which will be columns in
      // the final result.
      AstTable.SlowCnt sc = new AstTable.SlowCnt().doAll(v1, v1);

      // Get the column headers as sorted doubles
      double dcols[] = collectDomain(sc._col0s);

      Frame res = new Frame();
      Vec rowlabel = Vec.makeVec(dcols, Vec.VectorGroup.VG_LEN1.addVec());
      rowlabel.setDomain(v1.domain());
      res.add(colnames[0], rowlabel);
      long cnts[] = new long[dcols.length];
      for (int col = 0; col < dcols.length; col++) {
        long lkey = Double.doubleToRawLongBits(dcols[col]);
        NonBlockingHashMapLong<AtomicLong> colx = sc._col0s.get(lkey);
        AtomicLong al = colx.get(lkey);
        cnts[col] = al.get();
      }
      Vec vec = Vec.makeVec(cnts, null, Vec.VectorGroup.VG_LEN1.addVec());
      res.add("Counts", vec);
      return new ValFrame(res);
    }

    // 2-d table result.
    Frame res = new Frame();
    if (!dense) {

      // Slow-pass group counting, very sparse hashtables.  Note that Vec v2 is
      // used as the left-most arg, or OUTER dimension - which will be columns in
      // the final result.
      AstTable.SlowCnt sc = new AstTable.SlowCnt().doAll(v2, v1);

      // Get the column headers as sorted doubles
      double dcols[] = collectDomain(sc._col0s);

      // Need the row headers as sorted doubles also, but these are scattered
      // throughout the nested tables.  Fold 'em into 1 table.
      NonBlockingHashMapLong<AtomicLong> rows = new NonBlockingHashMapLong<>();
      for (NonBlockingHashMapLong.IteratorLong i = iter(sc._col0s); i.hasNext(); )
        rows.putAll(sc._col0s.get(i.nextLong()));
      double drows[] = collectDomain(rows);

      // Now walk the columns one by one, building a Vec per column, building a
      // Frame result.  Rowlabel for first column.

      Vec rowlabel = Vec.makeVec(drows, Vec.VectorGroup.VG_LEN1.addVec());
      rowlabel.setDomain(v1.domain());
      res.add(colnames[0], rowlabel);
      long cnts[] = new long[drows.length];
      for (int col = 0; col < dcols.length; col++) {
        NonBlockingHashMapLong<AtomicLong> colx = sc._col0s.get(Double.doubleToRawLongBits(dcols[col]));
        for (int row = 0; row < drows.length; row++) {
          AtomicLong al = colx.get(Double.doubleToRawLongBits(drows[row]));
          cnts[row] = al == null ? 0 : al.get();
        }
        Vec vec = Vec.makeVec(cnts, null, Vec.VectorGroup.VG_LEN1.addVec());
        res.add(v2.isCategorical() ? v2.domain()[col] : Double.toString(dcols[col]), vec);
      }
    } else {

      AstTable.SlowCnt sc = new AstTable.SlowCnt().doAll(v1, v2);

      double dcols[] = collectDomain(sc._col0s);

      NonBlockingHashMapLong<AtomicLong> rows = new NonBlockingHashMapLong<>();
      for (NonBlockingHashMapLong.IteratorLong i = iter(sc._col0s); i.hasNext(); )
        rows.putAll(sc._col0s.get(i.nextLong()));
      double drows[] = collectDomain(rows);

      int x = 0;
      int sz = 0;
      for (NonBlockingHashMapLong.IteratorLong i = iter(sc._col0s); i.hasNext(); ) {
        sz += sc._col0s.get(i.nextLong()).size();
      }
      long cnts[] = new long[sz];
      double[] left_categ = new double[sz];
      double[] right_categ = new double[sz];

      for (double dcol : dcols) {
        NonBlockingHashMapLong<AtomicLong> colx = sc._col0s.get(Double.doubleToRawLongBits(dcol));
        for (double drow : drows) {
          AtomicLong al = colx.get(Double.doubleToRawLongBits(drow));
          if (al != null) {
            left_categ[x] = dcol;
            right_categ[x] = drow;
            cnts[x] = al.get();
            x++;
          }
        }
      }

      Vec vec = Vec.makeVec(left_categ, Vec.VectorGroup.VG_LEN1.addVec());
      if (v1.isCategorical()) vec.setDomain(v1.domain());
      res.add(colnames[0], vec);
      vec = Vec.makeVec(right_categ, Vec.VectorGroup.VG_LEN1.addVec());
      if (v2.isCategorical()) vec.setDomain(v2.domain());
      res.add(colnames[1], vec);
      vec = Vec.makeVec(cnts, null, Vec.VectorGroup.VG_LEN1.addVec());
      res.add("Counts", vec);
    }
    return new ValFrame(res);
  }

  // Collect the unique longs from this NBHML, convert to doubles and return
  // them as a sorted double[].
  private static double[] collectDomain(NonBlockingHashMapLong ls) {
    int sz = ls.size();         // Uniques
    double ds[] = new double[sz];
    int x = 0;
    for (NonBlockingHashMapLong.IteratorLong i = iter(ls); i.hasNext(); )
      ds[x++] = Double.longBitsToDouble(i.nextLong());
    Arrays.sort(ds);
    return ds;
  }

  private static NonBlockingHashMapLong.IteratorLong iter(NonBlockingHashMapLong nbhml) {
    return (NonBlockingHashMapLong.IteratorLong) nbhml.keySet().iterator();
  }

  // Implementation is a double-dimension NBHML.  Each dimension key is the raw
  // long bits of the double column.  Bottoms out in an AtomicLong.
  private static class SlowCnt extends MRTask<AstTable.SlowCnt> {
    transient NonBlockingHashMapLong<NonBlockingHashMapLong<AtomicLong>> _col0s;

    @Override
    public void setupLocal() {
      _col0s = new NonBlockingHashMapLong<>();
    }

    @Override
    public void map(Chunk c0, Chunk c1) {
      for (int i = 0; i < c0._len; i++) {

        double d0 = c0.atd(i);
        if (Double.isNaN(d0)) continue;
        long l0 = Double.doubleToRawLongBits(d0);

        double d1 = c1.atd(i);
        if (Double.isNaN(d1)) continue;
        long l1 = Double.doubleToRawLongBits(d1);

        // Atomically fetch/create nested NBHM
        NonBlockingHashMapLong<AtomicLong> col1s = _col0s.get(l0);
        if (col1s == null) {   // Speed filter pre-filled entries
          col1s = new NonBlockingHashMapLong<>();
          NonBlockingHashMapLong<AtomicLong> old = _col0s.putIfAbsent(l0, col1s);
          if (old != null) col1s = old; // Lost race, use old value
        }

        // Atomically fetch/create nested AtomicLong
        AtomicLong cnt = col1s.get(l1);
        if (cnt == null) {   // Speed filter pre-filled entries
          cnt = new AtomicLong();
          AtomicLong old = col1s.putIfAbsent(l1, cnt);
          if (old != null) cnt = old; // Lost race, use old value
        }

        // Atomically bump counter
        cnt.incrementAndGet();
      }
    }

    @Override
    public void reduce(AstTable.SlowCnt sc) {
      if (_col0s == sc._col0s) return;
      throw water.H2O.unimpl();
    }

    public final AutoBuffer write_impl(AutoBuffer ab) {
      if (_col0s == null) return ab.put8(0);
      ab.put8(_col0s.size());
      for (long col0 : _col0s.keySetLong()) {
        ab.put8(col0);
        NonBlockingHashMapLong<AtomicLong> col1s = _col0s.get(col0);
        ab.put8(col1s.size());
        for (long col1 : col1s.keySetLong()) {
          ab.put8(col1);
          ab.put8(col1s.get(col1).get());
        }
      }
      return ab;
    }

    public final AstTable.SlowCnt read_impl(AutoBuffer ab) {
      long len0 = ab.get8();
      if (len0 == 0) return this;
      _col0s = new NonBlockingHashMapLong<>();
      for (long i = 0; i < len0; i++) {
        NonBlockingHashMapLong<AtomicLong> col1s = new NonBlockingHashMapLong<>();
        _col0s.put(ab.get8(), col1s);
        long len1 = ab.get8();
        for (long j = 0; j < len1; j++)
          col1s.put(ab.get8(), new AtomicLong(ab.get8()));
      }
      return this;
    }

    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      for (NonBlockingHashMapLong.IteratorLong i = iter(_col0s); i.hasNext(); ) {
        long l = i.nextLong();
        double d = Double.longBitsToDouble(l);
        sb.append(d).append(": {");
        NonBlockingHashMapLong<AtomicLong> col1s = _col0s.get(l);
        for (NonBlockingHashMapLong.IteratorLong j = iter(col1s); j.hasNext(); ) {
          long l2 = j.nextLong();
          double d2 = Double.longBitsToDouble(l2);
          AtomicLong al = col1s.get(l2);
          sb.append(d2).append(": ").append(al.get()).append(", ");
        }
        sb.append("}\n");
      }
      return sb.toString();
    }
  }
}


Kilchoman, founded in 2005, is the first distillery to be built on Islay for 120 years. It is a farm distillery and a proprotion of the barley used in production is grown and malted on site.
Anthony Wills, founder and managing director at Kilchoman, said: "I set this project up because I wanted to do things slightly differently, and show the world we could produce a single malt where all the ingredients were produced locally."
He described raising funding and setting up the distillery as a "monumental journey".
It produces around 100,000 litres of alcohol a year. The spirit is allowed to mature in a combination of bourbon barrels from Buffalo Disttillery in Kentucky and oloroso sherry butts from Miguel Martin in Jerez.
Top Scotch whisky expert Charles Maclean described the newest release as "Chardonnay coloured" with maritime notes and lemon cheesecake on the nose.
John MacLellan, general manager, said: "A lot of faith has been shown in the distillery. Now the time has come to start repaying that faith."
The limited edition release Inaugural 100% Islay, 50% abv, is priced £69.00 rrp. A special edition, of which only 1,060 bottles are available, which is presented in a hand crafted american white oak presentation box, at cask strength of 61.3%, is available from the distillery only priced £149.00.


class="size-full wp-image-6009 alignleft" src="http://depree.org/wp-content/uploads/2015/07/Uli-Chi-Photo-e1438201292651.jpeg" alt="Uli Chi" width="250″ height="250″ />During his adult life, Uli Chi has lived and worked in the intersection between business, the academy and the church. He has had the privilege of serving as past Board Chair of Regent College in Vancouver, BC, as current Vice Chair of the Board of the Max De Pree Leadership Center at Fuller Seminary, and as current Chair of the Executive Committee of the Center for Integrity in Business at Seattle Pacific University. He has also been involved in all aspects of local church leadership, including as a member of the adult ministries team's teaching faculty at John Knox Presbyterian Church in Seattle.
Uli's professional interest is in the field of computer science and mathematics. He holds a doctorate in computer science from the University of Washington in Seattle. One of the highlights of his professional work in business was winning the international Franz Edelman Prize for innovative applied mathematics and computing in 1985 with his good friend, Dr. Mark Lembersky. The subject of their paper on "Decision Simulators" has shaped much of Uli's professional thinking and work ever since. Uli is currently Founder and Chair of Computer Human Interaction, a software company that develops 3-D, virtual reality software that simplifies complex decision making for consumers and businesses.


text:
Q: GCM - Does the android phone needs to be connected on the internet to received this notification? I'm just wondering how GCM works,
Does the android phone needs to be connected on the internet to received this notification?
Thank you.

A: Yes. GCM clients receive notifications via a long-lived socket, maintained by the Google Services Framework, to the Internet.


ExpressionEngine 3 end of life is only three months away. This means that it will no longer be actively updated and will only receive security patches until December 14, 2018. Is your ExpressionEngine powered site still running on EE 2 or EE 3 it's time to update.
ExpressionEngine 3 was released in October 2015 with many new features and enhancements. This however means that ExpressionEngine 2 was coming to an end. The official end of life date for ExpressionEngine 2 is April 30, 2017. This means no more updates or official support. Learn more about how we can help you update your site to ExpressionEngine 3.
Today I created a channel form to allow visitors to upload testimonials to a site. The site already has a couple hundred testimonials added which meant that I needed to use the existing fields which include a native relationship field and a playa relationship field. Both of those fields are set up to be multi-select in the backend, however on the front end we want a single select.
Using the ExpressionEngine Structure module with bootstrap navbar and custom code.


I am your best friend. I am your friend. I am your enemy. I am your counselor. I am your protector. I am your safety net. I am your lover. I am your acquaintance. I am your toy. I am your desire.
I can make you feel safe. I can make you feel good about yourself. I can make you proud. I can make you feel wanted. I can make you feel distant. I can make you feel depressed. I can be your shoulder to cry on. I can make you use me. I can make you feel guilty. I can make you feel satisfied. I can make you feel anything.
I am told that I am the most genuine person people can become in this world. They tried to rip off my mask to see my true face, but I don't let them.
There is no such a word as "unintentionally or unconsciously" in my dictionary. I am a planner and have well organized strategies in my head, computing everything way ahead of time. There is also no concept of "too late to realize," because you will never realize until I tell you that you have been on my finger tip this whole time, which I won't tell even if someone cuts my mouth and into my cheeks.
I will treat you in the way you want. I will smile at you when you need it the most. I can be your prince if that's what you are asking. I can disappear out of your life leaving mystery.
I am a good person. I can be whatever you want me to be, and I will do so accordingly and most importantly, strategically. It almost feels that you wrap me around your little finger until you notice that you are dealing with not a just person but a pathological psycho.
Don't get me wrong. I am not a liar. As matter of fact, I will turn myself into anything you want me to be, and that is what you are asking me, and you are asking for.
I will let you decide what you want. I will let you have your way. I will lead you up and down. I will let you know how I feel. I won't hesitate to say anything toward you if that is what you want to hear. I will listen to you all day long, and give you a few words to hang in your head.
But here is one thing you have to remember about me. I do not feel pain. I rationalize the situation well and instantly for myself . Every moment you do something to me is the moment that you are trapped inside of my next scenario. You are still halfway through reading the entire book, wondering how this is going to end. The good thing is that I do not even know either.
I am your what if.
You try to think: what if I like you, what If I dislike you, what if I betray you, what if you please me, what if you do that to me, what if I touch you, what if I look into your eyes, what if I am you're best buddy, what if I disappear on you. All you can do is just guess what is behind the mask.
Sounds like I'm nobody until you see my real face behind a cute mask. Am I hypocritical? No I am not. Am I bad person? No I am not. Am I pretending? No I am not.
So, "who am I?" You will never know because I don't even know.
You are dealing with what if. It's exhausting but you can't help it.


Undertaking the translation of Shakespeare's sonnets into any other language is a task laden with great difficulties. Attempting to render them into Irish involved confronting all of these and a number of complications over and above. The measures and meters of classic and traditionally popular Irish poetry bear no relation or resemblance to those of English. So it was generally believed that iambic pentameter was entirely unsuitable to poetic composition in Irish and in consequence my endeavours were almost entirely without precedent. Furthermore, since imitation is considered the most sincere form of flattery, and translation, the copying of another's thoughts, is surely the ultimate form of imitation, then to render such sincerely flattering homage to a mind that was considered purely English and its totally English expression was generally regarded as incongruous, if not entirely incompatible with the love and devoted cultivation of the Irish language as the uniquely authentic medium of expression of the distinct independent Irish mind. So great however was my love of all true poetry and so great my veneration of the truly universal genius that is Shakespeare that for me these complications proved no "fál go haer", no insurmountable obstacle.
My acquaintance with the Bard commenced on entering our secondary school system studying then two plays and many of his poems, mostly sonnets. Our teachers were very thorough, giving us copious notes and enumerating the diverse merits and excellences of all the prescribed works. Poetry however did not come alive to me nor I to it until I heard my late brother reciting aloud while on holiday from university. He had read all Shakespeare's works while on a practical year in Wexford, our native county, and his soul had been awoken within him, so he himself stated it, while reading Measure For Measure: "Ah, but to die and go we know not where!" Strangely enough, it was his reciting Shelly's 'Cloud' that awoke my spirit within me and gave me my revelation of what poetry really is. Very soon, however, Will Shakespeare was enthroned as supreme and undisputed monarch of our minds' realm. Many indeed were the sonnets that we read and recited together, often deep into the night, during that gloriously long summer.
It was during the following and final phase of my education at University College Galway, now NUIG, that I formed indissoluble friendships with a host of Irish speakers, mostly from Connemara and the Aran Islands, holidaying regularly with families there especially with that of my great friend, Michael Powell, of Eochaill, Inis Mór. During that period among those wonderfully hospitable and golden-hearted people Irish became by dint of constant loving use what I had always fervently wished it to be, my mind's first language. Thereafter throughout my years as a teacher of Mathematics and the Sciences, and as husband and father, my love of poetry, in English and Irish and indeed in Latin and a number of other European languages, though never waning, could naturally find no outlet − until early retirement beckoned. No bard, Irish or English, had been found fit in all this while to dethrone the mighty songster of Avonside in my Kingdom of Poetry. Every morning and evening, as I walked to and from work my mind, unbidden, had sustained itself by reciting to my inner ear "Shall I compare thee...", "That time of year...", "When to the sessions..." ... some one of the great number that, without effort or design, it had fully memorised, while allowing their beautiful measures and rhythms and images to work their never-failing magic.
Finally, one morning, with my retirement day near at hand, my mind commenced its first daily session with a startling innovation: "Mar thonnta mara ar dhuirling trá ag triall..." I heard within me. Gathering and concentrating my scattered and confused thoughts I realised that this was, in Irish translation, "Like as the waves make towards the pebbled shore..." So that night I set about attempting to complete the translation of the sonnet and to my delight succeeded without great difficulty. Next morning when I had recited my translation to the staff during mid-morning break and had received their generous applause, one of them spoke up and, totally in jest, challenged me to translate all 154 of the famous poems! This, coupled with a request I had just received from a local Irish language activist to produce a book of poetry now that I was about to retire, this challenge goaded me into an inward rejoinder to the jester: "Just you wait, me bucko!" I thus resolved to translate all the sonnets.
I commenced "work" that summer in my lone glory in a younger brother's home in my native Wexford in the very heart of my spirit's cradle-country, with its rolling hills and rivers and streams and woods, an ideal setting for the labour of love I was beginning, an endeavour which would require me to generate and sustain a state of mind, elevated above and liberated from the spirit-stifling repetitive dullness of everyday work and humdrum mass activities. My purpose, my idea of translating the poems of this great mind was to reproduce, in so far as the difference of the languages allowed, every aspect of the original work, its music and rhythms, its images and thoughts; its effects on the senses; but even moreso the impact on the mind and thoughts of the reader; to reveal as truly and accurately as possible to one who had not read the original the mind of the original author. To do this I had to (attempt to) penetrate the mind of the great man and dwell with him within it, attempting total sympathy. However this may sound, the experiences that striving to attain this forever unreachable state gave me throughout all the work were wonderful beyond all telling. One device my imagination employed was to merge two rooms, my old childhood bedroom and one such as Shakespeare would have had, placing myself in this hybrid habitation with snow falling outside on a cobblestoned Elizabethan courtyard. At times during my work in Wexford and later in my upper room here at home in Mullingar where I brought it all to a conclusion I could almost sense the great man looking over my shoulder, generally approving and encouraging me. As I said, it was a truly uplifting and exhilaratingly rewarding experience. I had of course several times daily to return to the terra firma of everyday dull "reality", but of course this repeated commuting between two different worlds or dimensions, two parallel universes, is surely and always has been a skill indispensable to the poet.
down to its last syllable, the last syllable of the recorded sonnet, I suppose I should say here in this context. As I listen to that voice within, the excitement is rising in me again, just as it did then. That, however, is Shakespeare, the quintessence of him, is it not: enunciating truths that have held since the first dawning gleam of Humanity and will stand equally true until, in its last individual manifestation, it sinks finally and irreversibly into that "black night ... that seals up all in rest"; and proclaiming these truths in a language of crystal clarity and perfect exactitude, a language of a magnificence and beauty that some may occasionally have matched, but that none can ever surpass.
So in an age in which many insightful thinkers and observers see such a lowering of culture levels and standards as to constitute for Humanity in its highest manifestations a serious threat to survival, as exemplified by some who assert that Shakespeare should be omitted henceforth from our school courses, because "it is irrelevant", to such appalling assertions be this our reply: "If Shakespeare is irrelevant to modern life then modern life needs urgent, radical adjustment".


A while ago, the Google Tag Manager team published one of my favorite feature releases in the history of GTM: Workspaces. I was so thrilled by this release that I went ahead and published a guide on how to implement and leverage this new feature.
Workspaces is a very comprehensive feature in Google Tag Manager. This is because it changed the entire underlying data model. We no longer work directly with a single container draft. Instead, our work is done in a cordoned section of the container, protected from changes made to other workspaces until such a time that we choose to sync the latest container version to our workspace, or vice versa.
This #GTMTips article is short and simple: it's a reminder and a nudge to leverage workspaces efficiently.
First of all, if workspaces are completely alien to you as a concept, please take a look at my Workspaces Guide. It's long and probably quite confusing (as my guides typically are), but it should get you up to speed with this enterprise-friendly feature.
In a nutshell, workspaces provides you the opportunity to work on multiple container drafts at the same time. Once the feature set is complete in a single workspace, you can Create a Version or Publish the workspace, so that it becomes the new Latest Container Version. After the Latest Container Version is updated, all existing workspaces will be alerted of this change, and you will then need to synchronize these new changes into all the other workspaces.
If you're using the free version of Google Tag Manager, you have three workspaces that you can use concurrently. In Google Tag Manager 360, you have an unlimited number of workspaces at your disposal. This article mainly targets the former group, since necessity is the mother of innovation. Nevertheless, even if you have access to GTM 360 you should consider utilizing workspaces in such a manner that best relieves friction in your Google Tag Manager process.
What follows are some practices that I have found very useful when working with workspaces.
This might seem self-evident, but when workspaces was first released, a common reaction was to use them to isolate a part of the container for some team, and another part of the container for another team.
Workspaces isn't a user management feature - it's change management through-and-through. When you publish or create a version of your changes, the underlying workspace is deleted when the new version is created. This means that the feature doesn't really lend itself for consistent use within a team.
Nothing's stopping you from reserving one of the three workspaces to one team, another for some other team, and a third one for generic, incremental changes (see the next tip). However, you should be aware that the feature itself has no built-in functionality to support user management in that way, so you'll have to make sure to use a naming convention "Team Name - Workspace Name", for example, to make it clear that the workspace is for a specific team.
One of the main benefits of workspaces is that you can finally commit your small change to a single tag and publish it without having to worry about taking a bunch of unfinished work with the update into the live container.
For this reason and for the sake of agility, it is important to always have one workspace available for small, incremental changes.
Once you've done the change, you can either Create a Version or directly Publish the workspace, depending on what the appropriate workflow is in your organization.
The best part about this is that even when you publish your small, incremental change, any other workspace in the container doesn't need to merge the changes you made until they are ready to do so. This deferred synchronization is another great thing about the feature.
When someone has updated the Latest Container Version by publishing their changes, you'll see a small banner in the bottom of the screen as well as the "UPDATE" button in the Overview Dashboard (see image above).
This means that there are changes to the Latest Container Version that should be merged with your workspace before you can Publish or Create a Version of your workspace.
It's good to know that you don't have to do this until you're ready to merge!. The note is there to remind you that you need to merge before you're done with your workspace, but you might want to audit the changes before you sync them with your workspace.
To check what changes would be merged, click the "UPDATE" button in the Overview Dashboard. A new fly-out will appear, where you'll see all the versions that have been created after your workspace was detached from the version branch. You can click these versions to see what changes have been done, and thus you can prepare your workspace to accommodate these disruptions if necessary.
Remember that even if there are conflicts, Google Tag Manager will warn you of these and force you to resolve them before the sync is complete. Even so, it's still a good idea to briefly check each update to see if there's something you should consider in your workspace, conflicts or not.
I'm not usually one to froth at the mouth over naming conventions, but with workspaces I might consider an exception. By naming the workspace, you are actually giving a name to the version you'll inevitably create from the workspace, too. Yes, you can rename the container version at any time, but it cuts one step out of the workflow if you name the workspace with the future version in mind.
Consider naming the workspace with a compact but comprehensive description of what the feature increment that you're doing is. Typically, if you find it difficult to come up with a name that covers all the changes introduced in the workspace, it means that you're doing too much in a single go, and you might consider rethinking your approach in the future. I always prefer small, incremental changes over big, whopping, world-altering feature blasts. Small updates also make it easier to keep all other workspaces in sync.
Remember that naming versions is purely for your own benefit. If you ever need to roll back, or if you need to find a specific version, the version name (and sometimes the description) is pretty much all you have to work with. Because of this, it's important to name every single version you create so that anyone glancing at the version name would have even just a cursory idea of what was updated in that version.
It would be silly to say "I hope you're using workspaces already", since everyone using Google Tag Manager is, by default, using workspaces already.
It might be a bummer to some to only have three workspaces available in the free version of GTM. However, apart from initial implementation or larger, migration-level projects, three workspaces should always be enough for the type of iterative, agile change management that Google Tag Manager necessitates, at least in my experience.


Most often, however, giving a series of poor evaluations presents another dilemma; while they may deserve to be fired it seems to final, too fast. You wonder if this would be a big mistake.
Here are 7 interim solutions: Mix and match and buy yourself time both to re-evaluate your position and give the employee a chance to make a turnaround.
Probation A period for new employees to be "vetted" on the job before assurances of permanent employment (or sometimes use of vacation, health insurance or other benefits kick in.) The employee is entirely "at the will of" the HR department in terms of his/her future with the company. Be sure your employee handbook clearly delineates between probationary, "at will" and permanent, contracted employees. Employees should know their rights and, once they're permanent, "probation" is inappropriate, if not illegal. For new employees, this is the time for clear work standards and behavioral expectations. Document, document, document!
Job coaching The company pays for an in-house or out-sourced mentor to do one-on-one professional development in certain designated areas of performance. Don't just "send them off to a coach". Select the appropriate coach for what is needed and, if the company's paying, prep the coach with your expectations for the employee's growth, a tight time line, expectations and deliverables. At this stage coaching is no longer an option for the employee. It's this or termination.
Education and Training Classes Courses in-house or out-sourced in everything from public speaking to business writing and time management. Tie this activity to tangible outcomes; what behavior do you expect to see – immediately – as a result, i.e. the person's reports are now better written; they have learned to better prioritize work i.e. deadlines are now met consistently.
Demotion A move to a lower place in the org chart, usually (but not always) accompanied by a lower salary. For civil servants who may have operated in higher provisional titles, it's being "bumped back" to their civil service title. Continue to hold the person accountable to behavioral, attitudinal and performance standards. Employment is still "at will". Let them know that this is, in fact, a fresh opportunity for them to excel and possibly move back up the ladder.
Reassignment Less drastic than demotion. A lateral move to a different job in the same or different department This often works out superbly. Do your homework and reassign for fit not just an open slot. Do not continue to hold their past over their head.
Take some time to strategize with your HR Department before deciding if the employee is worth saving and what the best next step should be. These choices represent empowering options when a problem employee puts your back against the wall but you're not quite ready to pull the plug.