text:
Competition Stomps Into Boys & Girls Clubs
ATLANTA – Is your fraternity or sorority ready to be crowned the next Sprite Step Off champion? If so, get your best moves working because Sprite Step Off is back and better than ever.
The tournament-style competition kicked off on March 19 in Charlotte, N.C. with teams from across the country competing for two $100,000 grand prizes in scholarships. Regional event competitions also will take place in Chicago, New York, Atlanta, Los Angeles and Houston, with the winning teams advancing to the national championship in Washington D.C. on May 21.
This 2011 Sprite Step Off officially kicked-off with an online application submission which began Feb. 10 and concluded on March 13. Interested fraternities and sororities entered the competition by submitting a short performance video that showcased their step talents and highlighted their positive contributions to their community. Sprite Step Off breaks the mold of traditional step competitions by creating a platform that focuses on scholarship, education and community service.
"Sprite Step Off gives college students an outlet to showcase creative self-expression through the art of step while promoting the importance of higher education and being active," said Augusto Elias, Sprite Brand director, Coca-Cola North America. "Sprite sees stepping as a vehicle to empower this innovative generation to spark their creativity and fresh thinking while giving back to the community."
Sprite will enlist the National Step Show Alliance to oversee and manage the scoring and judging during all phases of the competition. The selected teams will compete at venues in cities nationwide, including:
•	New York, N.Y. – March 26
•	Atlanta, Ga. – April 2
•	Los Angeles, Calif. – April 9
•	Houston, Texas – April 16
•	Chicago, Ill. – April 30
The first place fraternity and sorority winners from each regional event will receive travel to the championship event in Washington D.C. on May 21. The event will feature the top 12 teams – six fraternities and six sororities – as they compete to see who will bring home the Sprite Step Off II crown. Tickets for the regional events are $20 and are available at www.spritestepoff.com.
DJ Rock-T from the "Rickey Smiley Morning Show" will be the official MC of the Regional and National Championship events, and DJ Mr. Quick will perform on the turntables alongside appearances by local celebrities and guest musical performances to be announced.
Community service will once again be an important part of the competition. Each participating step team will participate in service activity at a local Boys & Girls Club in each host city. Sprite will also present each participating Boys & Girls Club with a $4,500 check and book donations. The Boys & Girls Clubs participating include:
•	New York, NY – Kips Bay Boys & Girls Club
•	Atlanta, GA – Boys & Girls Club of Metro Atlanta
•	Los Angeles, CA – Challengers Boys & Girls Club
•	Houston, TX – Boys & Girls Club of Greater Houston
•	Chicago, IL – Boys & Girls Club of Chicago
"We're so grateful to Sprite for making Boys & Girls Clubs such an integral part of the Step Off Competition," said Frank Sanchez, Vice President, Sports, Entertainment & Alumni Relations for Boys & Girls Clubs of America. "Our Club members need inspiration from high achievers like these step competitors to graduate from high school with a plan for their future."
Supporting community service initiatives has been a core element of the National Pan-Hellenic Council's nine organizations since their founding. These organizations include: Alpha Kappa Alpha Sorority, Inc., Alpha Phi Alpha Fraternity, Inc., Delta Sigma Theta Sorority, Inc., Zeta Phi Beta Sorority, Inc., Iota Phi Theta Fraternity, Inc., Kappa Alpha Psi Fraternity, Inc., Sigma Gamma Rho Sorority, Inc., Phi Beta Sigma Fraternity, Inc. and Omega Psi Phi Fraternity, Inc.
"Stepping has a uniquely positive impact on the college experience of our youth and we commend Sprite for its continued commitment to the National Pan-Hellenic Council and for partnering with the Greek community to build the art form in the right way," said Jennifer M. Jones, NPHC National President. "Sprite is showcasing the art of step and the creativity of our students to a national audience. The program's emphasis on service to our local communities is particularly important, with much needed outreach that promotes the benefits of physical fitness and education to the next generation of students."
College Greek "Stepping" is a mix of foot movements, handclaps and voice chants performed by historically African-American Greek letter organizations. This form of self-expression has transcended African-American Greek letter organizations and is now shared by many multicultural fraternities and sororities, including both Hispanic and Asian groups. Sprite created the tournament to celebrate the uniqueness and manifestation of stepping and to recognize the leadership, service, loyalty and perseverance that make the multicultural college Greek system a source of empowerment.
Sprite Step Off is a national competition that celebrates the creativity and originality of the multicultural college experience through stepping, scholarship and service. Sprite Step Off will make it possible for a broader audience to experience an iconic form of self-expression that has been shared by multicultural college students for decades and encourage young people nationwide to get involved in community service to improve their communities.
For more than 100 years, Boys & Girls Clubs of America has changed and saved lives, enabling young people to achieve great futures as productive, caring, responsible citizens. Today, some 4,000 Boys & Girls Clubs serve some 4 million young people through Club membership and community outreach. Clubs are located in neighborhoods throughout the country and on U.S. military installations worldwide, providing young people 6-18 years old with guidance-oriented character development programs conducted by trained, professional staff. Key programs emphasize leadership development; education and career exploration; community service; technology training; financial literacy; health and life skills; the arts; sports, fitness and recreation; and family support. In a Harris Survey of alumni, 57 percent said the Club saved their lives. National headquarters are located in Atlanta.
STORY TAGS: Boys & Girls Clubs , Sprite Step Off , Black News, African American News, Minority News, Civil Rights News, Discrimination, Racism, Racial Equality, Bias, Equality, Afro American News


A solar keratoses is a scaly spot found on sun-damaged skin. It is also known as actinic keratoses. It is a UV light–induced lesion of the skin that may progress to invasive squamous cell carcinoma.
The prevalence of solar keratoses is much higher in individuals with fair skin and blue eyes and is lower in individuals with darker skin types.
The prevalence of solar keratoses is higher in men than in women. This is theorized to result from a greater likelihood that men have an outdoor occupation and thus have greater cumulative UV exposure.
One of the most important determinants of solar keratoses risk is age, particularly when evaluated with other strong predictors, including cumulative sun exposure, place of birth, occupation, and skin type. solar keratoses can occur in patients aged 20-30 years, but they are more common in patients aged 50 years and older.
Itching or burning in the affected area.
The patient with solar keratoses is an elderly, fair-skinned, sun-sensitive person. The lesions arise in areas of long-term sun exposure, including the face, ears, and, in men, bald scalp, as well as in the dorsal forearms and hands.
Exaggerated hyperkeratoses – Produces a hornlike projection, known as a cutaneous horn, above the skin surface.
Solar keratoses are a reflection of abnormal skin cell development due to DNA damage. Solar keratoses are caused by UV rays. Both epidemiologic observations and molecular biologic characteristics of the tumor cells suggest UV light is sufficient to induce solar keratoses. Sensitivity to UV light is inherited. Solar keratoses occur more frequently in fair, redheaded, or blonde patients who burn frequently and tan poorly. Increased sun exposure and higher intensity exposure increase the chance to development of solar keratoses. Immunosuppression following organ transplantation dramatically increases the risk of developing solar keratoses.
Solar keratoses are more likely to appear if the immune function is poor, due to ageing, recent sun exposure, predisposing disease or certain drugs.
An solar keratoses sometimes disappears on its own, but it typically returns after more sun exposure. Because it's impossible to tell which patches or lesions will develop into skin cancer.
Treatment of a solar keratoses requires removal of the defective skin cells. Epidermis regenerates from surrounding or follicular keratinocytes that have escaped sun damage.
Tender, thickened, ulcerated or enlarging solar keratoses should be treated aggressively. Asymptomatic flat keratoses may not require active treatment but should be kept under observation.
These creams may cause redness, scaling or a burning sensation for a few weeks.
Photodynamic therapy uses a light-sensitizing compound that preferentially accumulates in solar keratoses cells, where it can be activated by the appropriate wavelength of light. Delta-aminolevulinic acid is a component of the heme biosynthetic pathway that accumulates preferentially in dysplastic cells. Once inside these cells, it is enzymatically converted to protoporphyrin IX, a potent photosensitizer. With exposure to light of an appropriate wavelength, oxygen free radicals are generated and cell death results.
Freezing (cryotherapy): Solar keratoses can be removed by freezing them with liquid nitrogen. Doctor applies the substance to the affected skin, which causes blistering or peeling. As skin heals, the lesions slough off, allowing new skin to appear. Cryotherapy is the most common treatment. It takes only a few minutes. Side effects may include blisters, scarring, changes to skin texture, infection and darkening of the skin at the site of treatment.
Scraping (curettage): In this procedure, surgeon uses a curet to scrape off damaged cells. Scraping may be followed by electrosurgery, in which the doctor cut and destroy the affected tissue with an electric current. This procedure requires a local anesthetic.
It can be difficult to distinguish between noncancerous spots and cancerous ones. So it's best to have new skin changes evaluated by a doctor, especially if a spot or lesion persists, grows or bleeds. SO, early analyze is essential.


PINK STRIPES WITH PURPLE STAR - TEEPEE.
GREY LINEN WITH PURPLE STARS - TEEPEE.
BLACK AND WHITE STRIPES WITH FUCHSIA AFRICAN WAX - TEEPEE.
All our teepees are 1.1m x 1.1m at its base and 1.8m tall.
All our teepees have a window on the back side.


text:
Q: cubic spline regression with sklearn? I want to regress very accurately a target which depends non-linearly from a single variable x. In my sklearn pipeline, I use:
pipe = Pipeline([('poly', PolynomialFeatures(3, include_bias=False)), \
                     ('regr', ElasticNet(random_state=0))])

This appears to give similar results to np.polyfit(x, y, 3) in terms of accuracy. However, I can basically go to machine precision by using cubic splines. See figure below where I show the data and various fits, along with the residual errors. [Note: the example below has 50 samples. I have 2000 samples in reality]
I have two questions:

*

*Any clue why polyfit or polyfeat + Elasticnet aren't able to reach the same level of accuracy?

*Any example of target regression with cubic splines in scikit-learn?

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.interpolate import interp1d
    %matplotlib inline

    data = pd.read_csv('example.txt') # added to this post below

    p = np.polyfit(data['x'], data['y'], 3)
    data['polyfit'] = np.poly1d(p)(data['x'])
    f = interp1d(data['x'], data['y'], kind='cubic')
    data['spline'] = f(data['x'])

    fig, axes = plt.subplots(nrows=3, sharex=True)

    axes[0].plot(data['x'], data['polyfit'],'.', label='polyfit')
    axes[0].plot(data['x'], data['spline'],'.', label='spline')
    axes[0].plot(data['x'], data['y'],'.', label='true')
    axes[0].legend()

    axes[1].plot(data['x'], data['polyfit']-data['y'],'.', label='error polyfit')
    axes[1].legend()

    axes[2].plot(data['x'], data['spline']-data['y'],'.', label='error spline')
    axes[2].legend()

    plt.show()

Here are the data:
example.txt:
    ,x,y
257,6.26028462060192,-1233.748349982897
944,4.557099191827032,928.1430280794456
1560,6.765081341690966,-1807.9090703632864
504,4.0015671921214775,1683.311523022658
1499,3.0496689401255783,3055.291788377236
1247,5.608726443314061,-441.9226126757499
1856,4.6124942196224845,845.129184983355
1495,1.273838638033053,5479.078773760113
1052,5.353775782315625,-115.14032709875217
247,2.6495185259267076,3656.7467318648232
1841,9.73337795053495,-4884.806993807511
1574,1.1772247845133335,5544.080005636716
1116,5.698561786140379,-555.3435567718
1489,4.184371293153768,1427.6922357286753
603,1.568868565047676,5179.156099377357
358,4.534081088923849,960.3983442022857
774,9.304809492028289,-4468.215701489676
1525,9.17423541311121,-4340.565494266174
1159,6.705834877066449,-1750.189447626367
1959,3.0431599461645207,3065.358649171256
1086,1.3861557136230234,5378.274828554064
81,4.728366950632029,682.7245723055514
1791,6.954198834068505,-2027.0414501796324
234,2.8672306789699844,3330.7282514295102
1850,2.0086469278742363,4603.0931759401155
1531,9.843164998128215,-4973.735518791005
903,1.534448692052103,5220.331847067942
1258,7.243723209152924,-2354.629822080041
645,2.3302780902754514,4128.077572586273
1425,3.295574067849755,2694.766296765896
311,2.3225198086033756,4152.206609684557
219,8.479436097125713,-3665.2515034579396
1917,7.1524135031820135,-2253.3455629418195
1412,6.79800860136838,-1861.3756670478142
705,1.9001265482939966,4756.283634364785
663,3.441268690856777,2489.7632239249424
1871,6.473544271091015,-1480.6593600880415
1897,8.217615163361007,-3386.5427698021977
558,6.609652057181176,-1634.1672307700298
553,5.679571371137544,-524.352981663938
1847,6.487178186324092,-1500.1891501936236
752,9.377368455681758,-4548.188126821915
1469,8.586759667609758,-3771.691600599668
1794,6.649801445466815,-1674.4870918398076
968,1.6226439291315056,5117.8804886837
108,3.0077346937655647,3118.0786841570025
96,6.278616413290749,-1245.4758811316083
994,7.631678455127069,-2767.3224262153176
871,2.6696610777085863,3630.02481913033
1405,9.209358577104299,-4368.622350004463

A: I'd like to post a follow-up of my earlier question. It is possible to fit a model based on B-spline with a limited complexity (pre-defined number of splines -- not growing with the number of points as with interp1d) using scikit-learn. The following code is taken from robust_splines_sklearn.py.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import splrep, splev

from sklearn.preprocessing import PolynomialFeatures
from sklearn.base import TransformerMixin
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression, ElasticNet

from sklearn.metrics import mean_squared_error

def get_bspline_basis(knots, degree=3, periodic=False):
    """Get spline coefficients for each basis spline."""
    nknots = len(knots)
    y_dummy = np.zeros(nknots)

    knots, coeffs, degree = splrep(knots, y_dummy, k=degree,
                                      per=periodic)
    ncoeffs = len(coeffs)
    bsplines = []
    for ispline in range(nknots):
        coeffs = [1.0 if ispl == ispline else 0.0 for ispl in range(ncoeffs)]
        bsplines.append((knots, coeffs, degree))
    return bsplines

class BSplineFeatures(TransformerMixin):
    def __init__(self, knots, degree=3, periodic=False):
        self.bsplines = get_bspline_basis(knots, degree, periodic=periodic)
        self.nsplines = len(self.bsplines)

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        nsamples, nfeatures = X.shape
        features = np.zeros((nsamples, nfeatures * self.nsplines))
        for ispline, spline in enumerate(self.bsplines):
            istart = ispline * nfeatures
            iend = (ispline + 1) * nfeatures
            features[:, istart:iend] = splev(X, spline)
        return features

data = pd.read_csv('example.txt')
knots = np.array([1, 1.5, 2, 3, 4, 5, 7.5, 10])

bspline_features = BSplineFeatures(knots, degree=3, periodic=False)
base_regressor = LinearRegression()

pipe1 = Pipeline([('poly', PolynomialFeatures(3, include_bias=False)), \
                  ('regr', ElasticNet(random_state=0))])

pipe2 = Pipeline([('feature', bspline_features), \
                  ('regression', base_regressor)])

models = {"polyfit": pipe1, "spline": pipe2}

X = data['x'].to_numpy().reshape((data.shape[0], 1))
y = data['y']

for label, model in models.items():
    model.fit(X, y)
    data[label] = model.predict(X)

fig, axes = plt.subplots(nrows=3, sharex=True)

axes[0].plot(data['x'], data['polyfit'],'.', label='polyfit')
axes[0].plot(data['x'], data['spline'],'.', label='spline')
axes[0].plot(data['x'], data['y'],'.', label='true')
axes[0].legend()

axes[1].plot(data['x'], data['polyfit']-data['y'],'.', label='error polyfit')
axes[1].legend()

axes[2].plot(data['x'], data['spline']-data['y'],'.', label='error spline')
axes[2].legend()

plt.show()

A: The former two methods for a single cubic equation to your data, but (as the name implies) interp1d interpolates the data with cubic splines: that is, there is a cubic curve for each consecutive pair of points, and so you are guaranteed a perfect fit (up to computational precision).

redpajama_set_name: RedPajamaStackExchange


text:
Cynthia's love for theatre began in elementary school, watching rehearsals of the Spelman/Morehouse Players while her mother worked in the shop assisting with set-decoration. After appearing on-stage as one of the children in their production of The King and I, she knew she wanted to be an actor. She appeared in numerous high school productions and studied theatre at New York University. In Atlanta, while working with the Atlanta University Summer Theatre, Black Image Theatre and New Cosmos Cultural Theatre, she frequently shared the stage with Samuel L. Jackson. She moved to New York in the early 70s and acted in numerous off-Broadway productions and was a member of the resident acting companies of both the 127th Street Repertory Ensemble, under the direction of Ernie McClintock, and Peabody Award winner Glenda Dickerson's Owen Dodson Lyric Theatre.
After writing Sally of Monticello, and receiving a scholarship to the Squaw Valley Community of Writers' Screenwriting Program, her focus shifted, slowly, to writing. She was an artist-in-residence for New York's Teachers and Writers for several years, and completed her MFA in creative writing
at Goddard College in 2004. Her work has been published in the New Press' anthology of the African-American migration, Up South, and in Goddard College's literary magazine, Pitkin in Progress. Currently she is an editorial contributor to Atención, the bi-lingual newspaper of San Miguel de Allende, Mexico.
Cynthia has worked behind the scenes both in theatre and music. She was the Associate Producer for the first play festival of the Audience Development Committee (AUDELO), a not-for-profit organization dedicated to promoting Black theatre in New York, and for five of their annual Recognition Awards; road manager and development consultant for Grammy Award winning jazz vocalist Cassandra Wilson; and development consultant for jazz vibraphonist and composer
Cecilia Smith's Sacred and Secular Music of Mary Lou Williams concert that was presented at DC's Kennedy Center in 2005. She continues to work with Cecilia as a free-lance grant writer. For three years, Cynthia was the Development Director of HarlemLIVE, a not-for-profit youth service organization.
Currently she is working on a memoir about her post Hurricane Katrina experiences and a series of short stories based on her family's oral history.
© 2009 Cynthia Simmons

redpajama_set_name: RedPajamaCommonCrawl


2013 Lexus IS 250 Obsidian Steering Controls, moon roof, bluetooth, IS 250, 4D Sedan, 2.5L V6 DOHC 24V VVT-i, 6-Speed Automatic Electronic with ECT-i, RWD, Black w/Leather Seat Trim, 4-Wheel Disc Brakes, ABS brakes, Air Conditioning, Alloy wheels, AM/FM radio: SiriusXM, CD player, HDD Navigation System, Lexus Enform, Lexus Premium Audio System, Navigation System, Power driver seat, Power moonroof, Power steering, Power windows, Rear Back-Up Camera, Remote keyless entry, Steering wheel mounted audio controls, Traction control, XM NavTraffic/XM NavWeather. Priced below KBB Fair Purchase Price! 21/30 City/Highway MPG Reviews: * If you appreciate the aggressive styling of contemporary sports cars, but crave the refinement and comfort of a luxury sedan, the 2013 Lexus IS is tough to beat. It may lack the athleticism of a BMW 3 Series and trail the Mercedes-Benz C Class in terms of prestige, but the Lexus IS remains a well-rounded performer with exceptional reliability and value. Source: KBB.com * Compliant ride; high-quality cabin materials; quiet interior. Source: Edmunds Awards: * 2013 KBB.com Brand Image Awards * 2013 KBB.com Best Resale Value Awards * 2013 KBB.com 5-Year Cost to Own Awards Come in to Ron Tonkin Gresham Hyundai to test drive today! DA2028.


text:
Thursday 22:46 - overcast clouds
Pakistan host Zimbabwe as cricket rehabilitation gathers pace
Journalist Shahid Hashmi, AFP | Friday, 30 October 2020, 05:35
All-rounder Imad Wasim has played 53 ODIs for Pakistan.
CRICKET NEWS - Pakistan take a further step out of the wilderness as international cricket hosts when they welcome Zimbabwe for their first ODI in a year on Friday, with England and South Africa both lining up tours.
The three one-day internationals, when Babar Azam will debut as ODI captain, are also Pakistan's first in the new World Cup Super League, the qualification process for the 50-over World Cup in 2023.
The rehabilitation of Pakistan, largely shunned by foreign sides after a deadly attack on Sri Lanka's team bus in 2009, has accelerated in recent months, partly as a result of the coronavirus pandemic.
After Pakistan toured England and agreed to visit South Africa - both hard-hit by Covid-19 - the two heavyweights were moved to show their gratitude by studying reciprocal trips. Neither has visited in more than a decade.
Zimbabwe, West Indies and Bangladesh have all toured Pakistan since the attack, and last year Sri Lanka ended their decade-long absence with a limited-overs tour.
Those games turned out to be Pakistan's last ODIs for a year and they return in Rawalpindi under new captain Azam, also the T20 skipper, hoping to take their first step towards the 2023 World Cup in India.
In the 13-team World Cup Super League, seven sides plus hosts India will qualify for the World Cup. All teams will play four home and four away series, with each match worth 10 points.
Pakistan's three ODIs and three T20s against Zimbabwe will be played behind closed doors in Rawalpindi, and with both teams in a bio-secure "bubble". All players have tested negative for the coronavirus.
'Not taking Zimbabwe lightly'
The series makes Pakistan just the third host of international cricket since the coronavirus pandemic.
England have hosted West Indies, Ireland, Pakistan and Australia, while Australia wrapped up a women's series against visitors New Zealand earlier this month.
Azam, who called it an "honour" to lead Pakistan, said Pakistan won't underestimate Zimbabwe despite the apparent disparity between the two teams.
"We won't be taking Zimbabwe lightly at all," he said. "For us, each and every point matters and a convincing victory against Zimbabwe will hold us in good stead for future series."
Pakistan, sixth in the ODI rankings to Zimbabwe's 14th, are heavy favourites with a mature batting line-up led by Azam and strong bowling, despite resting spearhead Mohammad Amir.
They have won 52 of their 59 ODIs against Zimbabwe with just four defeats, two no-results and one match tied.
Apart from Zimbabwe's off-field problems - the International Cricket Council suspended them for three months last year over political interference - the team are on an eight-match losing streak in ODIs.
They have lost 2-0 to the Netherlands, 3-0 against Ireland and 3-0 to Bangladesh since their last ODI victory, at home against UAE in April 2019.
"It's very crucial for us to play really well," said new skipper Chamu Chibhabha, who has captained Zimbabwe in just one match earlier this year.
"Super League games are very important because we have to qualify for the World Cup, which we missed in 2019."
Chibhabha, one of six Zimbabwe players in the squad who toured Pakistan in 2015, will hope for experienced all-rounders Elton Chigumbura, Sean Williams, Brendon Taylor and Craig Ervine to shine.
Pakistan: Babar Azam (capt), Haider Ali, Abdullah Shafique, Imam-ul-Haq, Haris Sohail, Abid Ali, Fakhar Zaman, Mohammad Hafeez, Khushdil Shah, Mohammad Rizwan, Iftikhar Ahmed, Faheem Ashraf, Imad Wasim, Rohail Nazir, Shaheen Afridi, Mohammad Hasnain, Haris Rauf, Musa Khan, Wahab Riaz, Usman Qadir, Zafar Gohar
Zimbabwe: Chamu Chibhabha (capt), Faraz Akram, Ryan Burl, Brian Chari, Tendai Chatara, Elton Chigumbura, Tendai Chisoro, Craig Ervine, Tinashe Kamunhukamwe, Wessley Madhevere, Wellington Masakadza, Carl Mumba, Richmond Mutumbami, Blessing Muzarabani, Richard Ngarava, Sikandar Raza, Milton Shumba, Brendan Taylor, Donald Tiripano, Sean Williams
Read more about: pakistan cricket zimbabwe odi cricket sport
Posted on: 05:35 Fri, 30 October 2020
Opsoeknagoeievrou
Lekkertyekom
MikQii15


text:
Home/World/With an 'Othello' of His Own, a Director Comes Full Circle
With an 'Othello' of His Own, a Director Comes Full Circle
admin Send an email 30 November 2022
LONDON — When Clint Dyer was an aspiring actor in the mid-1980s, he made his first visit to the National Theater, the revered London playhouse whose productions are a showcase for the great and good of British drama. "I'd never seen a stage that size," Dyer recalled recently. "I'd never seen actors of that level. What a thing! How inspiring!"
But when Dyer walked out of the auditorium after the show, he saw something that changed his mood instantly, he said: On a wall was a large photograph from a 1960s production of "Othello," with the actor Laurence Olivier in the title role — in blackface. The sight "broke my heart," Dyer said.
Dyer, who is Black, said he grabbed a pen and wrote the words "Shame on you" in the whites of Olivier's eyes.
Almost four decades later, Britain's theatrical landscape has changed radically. Last year, Dyer, 54, was named as the National Theater's deputy artistic director — a position that makes him arguably the most high-profile person of color in British theater. On Wednesday, he premieres his own production of "Othello" at the playhouse.
"It's such a strange feeling that I'm in this building, directing the play that broke my heart," Dyer said in an interview. "The beauty of that circle is almost overwhelming."
As the deputy artistic director of the National Theater, Dyer is arguably the most high-profile person of color in British theater.Credit…Adama Jalloh for The New York Times
The National Theater rarely stages the lengthy "Othello," but previous productions have been landmark events. Those include John Dexter's 1964 production with Laurence Olivier (so revered that photographs from the show were still on display two decades later), Sam Mendes's 1997 staging featuring David Harewood in the lead and Nicholas Hytner's acclaimed 2013 production starring Adrian Lester as Shakespeare's tragic hero, a Moor who murders his wife Desdemona after he is tricked into believing that she is having an affair.
Dyer's "Othello" — which sets the play in an arena populated by black-shirted thugs who seethe whenever Othello (Giles Terera) goes near his white wife (Rosy McEwen) — is highly anticipated, especially given that Dyer is the first Black director to tackle the play at the theater.
During a recent rehearsal break, the director said he was hoping to do something new in this show. "As a Black man, I've always found productions problematic," he said, adding that most directors play down the issue of race and focus on male jealousy, even when a Black actor takes the lead role. "The irony is," Dyer said, "the way we've been performing 'Othello' has in some ways highlighted our racism more than the actual play."
Rosy McEwen as Desdemona and Giles Terera as Othello in the production by the National Theater, where Dyer is the first Black director to tackle the Shakespearean tragedy.Credit…Myah Jeffers
To some theatergoers, Dyer's rise to the heart of Britain's theatrical establishment may appear swift. He was little known here until a play he directed and co-wrote, "Death of England," opened in February 2020, just a few weeks before the coronavirus pandemic shuttered London's playhouses. The play, about a working-class man coping with his conflicting feelings for his deceased father, was a critical hit for the National Theater.
Yet for almost two decades, Dyer had been toiling away in London's theater land. Born in 1968, he was brought up in Upton Park, a poor district of East London. His mother was a nurse, and his father worked at a Ford car factory. He wanted to be a soccer player, he said, but after acting in a school play, older schoolmates encouraged him to attend Saturday morning workshops at the Theater Royal Stratford East. Soon, he was acting in a play directed by Mike Leigh, and theater administrators pushed him to try his hand at writing and directing, too.
In 2004, Philip Hedley, the theater's artistic director at the time, asked Dyer to direct his first production, "The Big Life," about four immigrants to Britain from the Caribbean who take a vow to avoid women and wine, but swiftly break it. Based on Shakespeare's "Love's Labour's Lost," the musical transferred to the West End, though Dyer struggled to get directing work afterward.
Hedley said that race was "the only reason" Dyer's career didn't take off at the time. If he had been white, "he'd have been the hot property," Hedley said. Dyer said he restarted his career by taking acting gigs, and writing and directing plays on the side. It was 15 years before he directed in the West End again, with "Get Up, Stand Up! The Bob Marley Musical." He is now developing a Muhammad Ali musical for Broadway.
"It's such a strange feeling that I'm in this building, directing the play that broke my heart," said Dyer. "The beauty of that circle is almost overwhelming."Credit…Adama Jalloh for The New York Times
There is curiosity in Britain's theater world not just about Dyer's "Othello," but also about his plans as the National Theater's deputy director. Dominic Cooke, a former artistic director of the Royal Court who is one of the National's associate artists, said Dyer was chosen for the role partly because of his "really strong take on the politics of race."
The theater has long set targets to increase diversity on its stages, including one for 25 percent of performers to be people of color. (Last season it surpassed most of its objectives, with nonwhite artists making up 36 percent of its performers.) Dyer said "targets are valuable," but it shouldn't just fall to casting directors to increase diversity onstage. "We should really be going to writers," Dyer said, adding that he wanted to ask playwrights to consider the diversity of their characters from the moment they began working on a play.
Writers "should be doing the work to actually go out and learn about different cultures, different people and find the vernaculars that they speak in," Dyer said.
For all that focus on race, Dyer said his main responsibility as the National Theater's deputy director was nothing to do with diversity, but simply "to sell tickets" — and that started with his "Othello." For an artist of his generation, it felt like "a big deal" that a Black director was staging the play there, he said, but younger people might not see it as significant.
That didn't bother him, he said. "I'm glad they don't think this is a big deal, as I do," Dyer added. "Because they shouldn't. It should be bloody normal."
Director Dyer Play Said That
That awkward moment when the Prince of Wales says he's backing England.
Apartheid-Era Assassin in South Africa Is Stabbed Days Before Release Date
The War Between the Catholic Cardinals
Hundreds Gather to Memorialize Renowned African Human Rights Lawyer


We earlier asked who owns the copyright in downloaded or uploaded photos. Below, we turn our attention to how the court assesses damages for copyright infringement under the Copyright Act 1968 (the Act).
What are the Remedies Under the Copyright Act?
The Act sets out the remedies for image copyright infringement under Part 5. Relevantly, section 115 contains actions for infringement and s116 explains the rights of a copyright owner concerning infringing copies.
Either damages or an account of profits.
Importantly, under s 115(3), if the defendant establishes that at the time of infringement, he or she wasn't aware, or had no reasonable grounds to suspect their actions constituted copyright infringement, the plaintiff can only claim for an account of profits (otherwise known as innocent infringement).
Damages or An Account of Profits?
Damages and an account of profits are alternative remedies. The difference between the two is that damages are concerned with the money lost or potential money lost as a result of a defendant's infringing conduct. An account of profits looks at instead the profits that a defendant gained as a consequence of the infringement. The plaintiff (copyright owner) decides which remedy to pursue.
The purpose of an award of damages is to compensate the plaintiff for the loss suffered as a result of the infringement (Interfirm Comparison (Aust) Pty Ltd v Law Society of New South Wales). The court calculates damages as the depreciation caused by the infringement to the copyright's value (International Writing Institute Inc v Rimila Pty Ltd (1994) 30 IPR 250; Polygram Records Inc v Raben Footwear Pty Ltd (1996) 35 IPR 426).
The court measures the depreciation of the copyright's value by the fees the infringing party would have paid the copyright owner if they used work lawfully, such as the license fee or the royalty fee.
The plaintiff can't provide proof of damage.
In these instances, the court will treat the damages payable as being "at large". The court must be satisfied that some loss has occurred before it proceeds to attempt to determine the damages on any other basis (Aristocrat as discussed in Monte v Fairfax case).
An Account of Profits aims to prevent the unjust enrichment of the defendant. The plaintiff is entitled to the amount of profit the defendant makes through the infringing act. A proportion of overheads, including fixed costs, may be deducted from the profit the defendant is required to account for where the costs are attributed to production and sale of the infringing product. The appropriate position will vary according to the business' particular characteristics. Items such as rent and interest may also be deducted in appropriate circumstances.
Questions about damages for copyright infringement? Ask our intellectual property lawyers.


Future Music Festival 15: HILLTOP HOODS Join Line-Up!
It's been a big week of announcements so far from Future HQ – first, 200+ Aussies added to the line-up, then the premiere of 'Nasty', the brand new track from The Prodigy – and now we've got another corker to share: Adelaide's ARIA-winning hip-hop kings the Hilltop Hoods have joined the Future Music Festival 2015 line-up!
Making their very first appearance ever on a Future bill, we're thrilled to welcome the multi-platinum outfit to the party. The band are going to tear up the stages across the country alongside other killer names on the newly unveiled Future Live Stage, Presented By Pringles.
is racing towards triple platinum, reaching #1 on ARIA's Urban charts and #4 on the Singles Chart – making it their most successful single to date, still in the Top 10 five months since its release. Add to that a huge sell-out national tour across Oz and dates across the globe, one thing's for certain: their set at Future is going to be absolutely epic!
MCs Suffa, Pressure and DJ Debris first smashed through to the mainstream with their 2004 triple j hit 'The Nosebleed Section'. In 2006 they released #1 platinum LP The Hard Road, which won them a J Award, while their subsequent two albums have also gone double platinum. Each year the band also launch the 'Hilltop Hoods Initiative', which awards a $10,000 grant to emerging artists – in 2015 the round will open next week.
Joining the Hoods on the Future Live Stage, Presented By Pringles is an all-star cast – including the headlining man himself, Drake, whose solo arena shows in Sydney and Melbourne are now officially SOLD OUT, with all other states selling quickly. Sydney and Melbourne: Future is your ONLY chance to catch Drizzy's massive, state of the art stage and sound production – direct from the USA – in the flesh!
Also on this stage, get ready to catch sets from Atlanta rapper 2 Chainz (who has just launched a new label The Real University, aka T.R.U); honorary Aussie Example, who just moved to Australia and had his first baby with wife Erin McNaught; 'Nobody To Love' chart-toppers Sigma; British duo Gorgon City; and 'Hideaway' breakoutstar Kiesza, who recently teamed up with bad-boy Joey Bada$$ for his track 'Teach Me' – stream it here.
Future are excited to welcome Pringles onboard in 2015 and look forward to delivering one killer stage! We've got two more announcements coming your way this week – get set for more big reveals tomorrow.
Hilltop Hoods – just announced!!
*line-up may vary from city to city – check website for full info.


text:
New Australian trial shows HPV screening efficacy for cervical abnormalities
A new clinical trial (Compass) conducted by Cancer Council NSW and the Victorian Cytology Service in Australia has demonstrated the efficacy of HPV screening for the detection of high-grade cervical abnormalities.
The trial compared HPV screening to Pap tests (cytology) in subjects with substantial use of the HPV vaccine.
The screening was previously found to lower incidence and mortality due to cervical cancer by a minimum of 20%, indicating its accuracy, efficacy and safety.
Cancer Council NSW Research director professor Karen Canfell said: "We found that the HPV test was substantially more effective at picking up high-grade abnormalities compared to the Pap test.
"This adds to existing evidence about how much more accurate and effective HPV screening is. We now have a superior method for detecting not just the virus that causes cervical cancer, but also high-grade abnormalities."
The trial is expected to confirm the efficacy of the new screening programme before a renewed National Cervical Screening Programme is implemented in the country in December.
"The screening was previously found to lower incidence and mortality due to cervical cancer by a minimum of 20%, indicating its accuracy, efficacy and safety."
During the first phase of the trial, cervical samples were collected from approximately 5,000 women aged 25-64 years who visited for a routine screening at 47 participating sites in Victoria.
The samples were sent on the management pathway that is part of the upcoming renewed programme.
Victorian Cytology Service executive director associate professor Marion Saville said: "The results represent the first real-life demonstration of how the treatment pathways for primary HPV screening in HPV-vaccinated cohorts of women can work in practice."
The ongoing second phase of the trial aims to include 121,000 subjects attending a routine screening or follow-up management.
The enhanced detection of high-grade abnormalities of precancerous lesions (CIN2 or higher) is expected to allow early treatment that results in long-term protection from development of CIN3 and invasive cancer.
Prophylactic Human Papillomavirus Vaccines - Australia Drug Forecast and Market Analysis to 2022
Meningococcal Vaccines - Australia Drug Forecast and Market Analysis to 2022
Prostate Cancer - Australia Drug Forecast and Market Analysis to 2022
Melanoma – Australia Drug Forecast and Market Analysis to 2023
Victorian Cytology Service Inc
Cancer Council NSW


I was drilling in the servo arm bay of my comparf extra 2.6M and accidentally poked my drill bit all the way through the top of the wing (from the bottom).
What's the best way to patch this? Microbubbles and epoxy and sand smooth?
Fill the hole and cover with a piece of clear plastic tape (to make sure there are no bubbles). Let it cure with the tape on the underside of the wing so it forms over the hole inside the wing.


Prices, promotions, kinds, and availability might vary. The Post Workplace guarantees to beat renewal quotes by at least £50 for a buildings, contents or mixed coverage (some conditions apply, see T&Cs ). Some insurers may even enhance your contents cowl for different particular events, resembling non secular festivals and weddings.
The worth of your home must not be included within the local authority's means-testing until 12 weeks after you've confirmed that the care home placement can be permanent. Tina Johnson, who accused US Senate candidate Roy Moore of grabbing her in his workplace in the early Nineteen Nineties, told local news outlet that her home in Gadsden, Alabama, caught fireplace early Tuesday morning.
A home's occupants may be a single particular person , a family , household , or a number of families in a tribe Occupants may be part of different groups, comparable to nursing home residents or children in an orphanage. Some groups, corresponding to these in areas prone to flooding, subsidence or whose home is left unoccupied for long periods, can discover it tough to find low cost insurance cover as they're considered too excessive a danger.
You may get inspection reviews by searching for the care home on the Care High quality Fee web site or Ofsted for youngsters's care homes. Discover great finds in your native HomeGoods with The HomeGoods App. Beazer Homes additionally maintains a strict "no-spam" policy and fully complies with CAN-SPAM Act regulations.
Prices, promotions, kinds, and availability may vary. If you cannot afford to cover a large chunk of the cost if it is advisable to claim, don't set a high voluntary excess, as you'll must pay that in addition to the compulsory excess. Management settings like your system name, and discover apps, presents, and content material. XFINITY HOME Refund Policy for Pre-Funds: For those who make a pre-fee previous to set up of your XFINITY Home service, such pre-cost might be utilized as a credit to fees due on the following month's bill from Comcast.
Buildings insurance coverage will cover the structure of your home in addition to fixtures and fittings, whereas contents insurance coverage will cowl your possessions. Most policies do not cowl contents outdoors the home as normal, however you may prolong them so they do by shopping for what's called an 'all risks' or 'personal possessions' add-on to your contents coverage.
Even if you're unlikely to be eligible for monetary assist with residential care home charges, it might still be worth involving social services. Scott mentioned the town's planning committee is now researching what different municipalities across the country are doing in terms of accommodating tiny homes.
For those who finish your buyer relationship with us, this Policy will apply to non-public info we collected while this Coverage was in effect. The latter will mean a hike sooner or later price of insurance coverage. Direct Line When you buy a new home insurance coverage coverage through Direct Line , you'll get 10% off if you have already got another Direct Line coverage.


Backwell Tennis Club has gone one step further to help the environment by installing solar panels on their clubhouse roof.
Recently named the Avon Tennis Community Club of the Year, their panels were installed by local company Solarsense Ltd and will provide 6.8kW of power to enable reductions in energy use at the club.
To help with the cost, the club was grateful to receive a grant from Bristol Airport as part of their support for local communities in North Somerset.
Club chairman Richard Gaunt said: "The solar panels form part of an ongoing process to help the environment by reducing energy use at the club with small but significant investments.
See backwelltennis.co.uk for more information about the club.


text:
Q: Execute update clause even with errors I'm doing some script testing and I want to make sure that if the Update Clause I'm testing in this Try Catch :
BEGIN TRY
   BEGIN TRAN
   UPDATE NAME
    SET NAME.ADDBY =
    (CASE WHEN NAME.ADDBY = 'CONVERSION' THEN 'CONVERTED'
    WHEN NAME.ADDBY = 'CJDOG'THEN 'CJDAREME'
    WHEN NAME.ADDBY = 'npalerm' THEN 'REALLYLONGDETAILEDTEXT'
  ELSE NAME
   END)
   COMMIT TRAN
END TRY
BEGIN CATCH
   IF @@TRANCOUNT >0
   PRINT ERROR_MESSAGE()
        ROLLBACK TRAN

END CATCH
PRINT @@TRANCOUNT

fails, that other rows are updated and only the ones that didn't error go through.
Currenty because it is in the TRY CATCH there is a ROLLBACK that makes sure nothing goes through.
But when I try to run just the UPDATE part the errors terminates the whole script, instead of updating those that do not cause an error, in this case npalerm is too long in the case.
Any Ideas?
I know its a long desc I could've just included the Update but for detailed purpose I included it in the Catch.

A: In order to update the rows individually and catch the errors on each row rather than catching errors on the entire table/view update, you would need to wrap the whole thing in a cursor.
Be aware that cursors are more resource intensive and slower than set-based commands.


In this tutorial you'll learn the most important principals of the Livecode language and IDE by building 30 varied apps. The entire tutorial should take less than an hour to read, and just a few hours to complete if you actually create every example in Livecode as you go.
You can start learning, and make apps for your own personal use, with the open source version of Livecode. It's totally free and completely functional. You only ever need to pay for a license if you want to keep your distributed source code closed (secret), or use your apps for commercial (business/money making) purposes.
2) Drag 'controls' (gadgets/user interface components) onto the default 'card' (window/screen) in the stack.
3) Add more sub-stacks, cards, controls, etc, as needed to build the 'UI' (graphic User Interface) of your app.
4) Write code (scripts) using the 2000+ commands, event handlers and properties built into the Livecode language, to give functionality to your app.
Every 'object' in Livecode (control, card, stack, etc.) has a wide variety of 'properties' which can be edited manually in the Livecode 'IDE' (Integrated Development Environment (the main Livecode program)), by pointing and clicking, or by setting property values with code. For example, you can set the background color of a card by clicking a color selector in the IDE, or by writing a line of code in your program which sets the color value.
Likewise, you can set the text value displayed in a text field control, change the image displayed in an image control, set columns of data displayed in a table control, etc. by either manually clicking and editing properties in the IDE, or by setting those properties with code. Any property setting which can be adjusted manually in the IDE can just as easily be adjusted with code, and visa-versa.
Livecode's built in 'message handlers' provide the ability to respond, in code, to any possible event which can occur to any object in your app's visual layout. They make it simple to write code which can handle anything a user can do to interact with your app, or to handle any event/condition/situation which can arise within your app.
Not only are there a huge variety of message handlers built into the Livecode language, there are an even wider variety of 'commands' and 'functions' which can perform useful actions in response. There are commands to send emails, to edit images, to play and process sounds, to send and receive data to/from network ports, databases and web servers, to parse and organize large tables (columns and rows) of information, etc.
The built-in Livecode dictionary makes it easy to look up every word, handler, and structure in the environment.
Livecode's 'container' concept makes it equally easy to store/retrieve data in local files, web URLs, UI controls (text fields, grids, etc.), 'variables' (word labels you create in code), etc. Livecode's 'chunk' language allows you to easily access/change specific pieces of data (lines, words, characters, delimited text, etc.) within any container or data structure (lists, nested tables, etc.). A wide variety of built in controls and interfaces such as Livecode's grid, camera tools, database features, etc. make it easy for users to interact with complex data.
While building a Livecode app, you can switch back and forth instantly between editing and running code (hence the name 'Livecode'), and there's a message box in the IDE which lets you test and run small pieces of code, so that you can formulate bits of script which make up the actions of your app, as you go.
More than any other programming language, Livecode is easy, intuitive, consistent, and naturally English-like to learn and use. You'll find that many Livecode scripts can be understood immediately, even if you've never seen any code before. You can accomplish in days what would require months using other tools, and many difficult to achieve goals feel like child's play in Livecode. If you're an experienced developer, you'll be amazed at just how intelligently organized, pleasant to use, and dramatically productive the entire Livecode environment and tooling system is.
In this tutorial you'll learn by building apps. New commands, code structures, controls, techniques and concepts will be introduced as they're needed to create apps with new features.
Start by opening Livecode and creating a new stack (File -> New Stack -> Default Size).
Drag a button from the Livecode toolbar which runs vertically up the side of your screen, onto the default card of your new stack. Make sure the button control you just added is selected (outlined by a dotted line) in your stack, then click 'Code' in the Livecode toolbar which runs horizontally across the top of your screen.
You'll see that 2 lines of default "on mouseUp" handler code have been added for you. On the empty line between the start and end lines of the mouseUp handler code, type "beep".
Click the 'Apply' button, then click the 'Browse' tool in the vertical Livecode toolbar (the top left arrow icon in the toolbar).
Your app is now running. Click the button in your app, and a system beep will sound.
"Beep" is a command which is built into the Livecode language. In the example above, we made it run whenever a 'mouseUp' event occurs on the button. We can run other commands the same way. Click the 'Pointer' tool in the Livecode toolbar on the left side of your screen (right next to the 'Browse' tool at the top of the toolbar), to go back into editing mode.
If you've typed anything incorrectly, the Livecode debugger will pop up with the error line highlited, and a message explaining what's wrong. Click the blue button in the code editor, make any necessary changes to the code, and click apply to continue.
"Ask" is a command which requests some input from the user. Whatever the user types in response is saved in the 'variable' "it". "Put" is a command which moves data into various containers in the Livecode environment. In the example above, the text entered by the user is put into Livecode's built-in message box, so the user sees what they've just typed, echoed back in the message box. Click the 'Apply' button in the code window, click Livecode's 'Browse' tool to run your app, and click your app's new button to see the code in action.
The ampersand symbol (&) is used to 'concatenate' (join) pieces of text together. In the example above, the text entered by the user, combined with the default text "Hi" and an exclamation point, is put into the message box, so the user sees a welcoming message pop up when the process is complete. That whole joined together bit of code is enclosed in parentheses to clarify that it's a discrete unit. The parentheses aren't required here, but help ensure that that part of the code is treated as an isolated expression. It's a good idea to get used to doing this in longer, more complicated lines of code. Click 'Apply', and click 'Browse' in the toolbar to run the new code, then click the 'Pointer' took in the toolbar to go back to edit mode. Instead of clicking 'Apply', you can alternately simply close the edit window, and the keyboard shortcut keys CTRL + 9 to run the code, and CTRL + 0 to go back to edit mode.
answer "Favorite color:" with "Red" or "Blue" or "Green"
The 'answer' command pops up a message with up to 7 optional button choices for the user to select. The answer chosen by the user is stored in 'it', just as with the 'ask' command. The 'revSpeak' command pronounces quoted text using a synthesized voice. In the example above, the choice selected by the user is combined (using the ampersand symbol) with some static text, all of which is spoken aloud. Apply and run the code to see it work, then go back to edit mode.
Now drag a text field control from the tool bar onto your app. Make sure the text field stays highlighted, and click the "Inspector" icon in the horizontal Livecode toolbar on the top of your screen, or simply double click the field control to edit its properties. Change the 'Name' property of the field control to "field1" (Livecode is case insensitive, so it doesn't matter if you capitalize or not).
put the date into field "field1"
put (" " & the time) after field "field1"
put "It's now: " before field "field1"
Notice how the words "into", "after", and "before" affect where the text is put in the field. Now run your app to see it work.
ask "Type some more text:"
ask "Type a third bit of text:"
put myVar into field "field1"
Note that 'myVar' in the code above is a totally arbitrary label, and could be replaced with any other arbitrary word you make up. There are some limited rules about how variables are named in Livecode, mostly related to avoiding conflicts with other words used by the Livecode system . If you stick with uninterrupted strings of letters beginning with "my", you'll generally be safe for now. Variable labels are typically chosen to represent the information they hold in your app. In a game, you may choose to label the score and high score variables "score" and "highScore", for example. In a quick math script you might choose to label some variables "x", "y", and "z". In Livecode, you create a variable simply by 'put'ing a value into a new word determined by you.
Seeing more commands and language syntax put to use like this is all it takes to learn how to program in Livecode. As you see more code, you'll recognize repeated patterns of language use, as well as repeated working techniques, and creating apps will quickly become an intuitive process.
You can experiment with small bits of code by clicking the Livecode "Message Box" icon. Type 'revSpeak "This is awesome!"' into the Message Box and try playing with some more variations of the code examples from this section. You can actually refer to properties of controls in your stack, and make changes to your app, directly in the message box.
Experiment by dragging other controls onto your app to see how they look, play with the drawing tools, try edit features such as undo, redo, etc., to get to know the environment a bit more.
If you'd like to clear the clutter on your screen, try closing the Livecode tools palette. You can re-open it any time with the shortcut keys CTRL + T, or by selecting Tools -> Tools Palette in the main Livecode menu.
Create a new stack and click Livecode's Inspector icon to edit the stack's properties (you can also just double click the stack, or any other object, to bring up its property inspector). Set the 'name' and 'title' properties of the stack to "Happy Birthday".
In the main Livecode menu, select Object -> New Card. This adds another new window (empty screen) to your app. You can navigate between cards by selecting View -> Go First (Go Last, Go Next, etc.) from the main Livecode menu. Navigate to the first card and double click it (or click the Inspector icon) to edit its name property to "card1".
Drag an image control onto card1 and edit its 'Source' property to the name of any image file on your computer. You can click the '...' button to browse and select an image from any folder on your machine.
If you don't have a desirable image to use, try downloading one from Google, save it into a folder which you can easily locate, and then select it in Livecode. Set the 'Resize quality' property of the image to "best".
Position your image by dragging it near the top left corner of the card/stack, and grab the handles around the image edges to stretch it as you see fit.
Drag a label control onto your stack just below the image. Resize it wide enough to stretch most of the way across the stack, and tall enough to display several lines of text. Double click the label to edit its properties, click the 'A' tab icon (eighth from the left), and select the Left (first) 'Text Align' icon. Click the 'Contents' tab (second from the left) and type in some text such as "Happy Birthday Mom!"
Drag a button onto the bottom right hand corner of the card and set its 'name' and 'label' properties both to "Next".
This code sets a 'visual effect' (animated transition) to be applied when moving between cards, then switches to the "card2" screen and speaks "Happy birthday!" aloud.
You can learn about all the available visual effects in Livecode by clicking Help -> Dictionary (API) in the main menu, and then searching for "visual effect". You'll use the dictionary constantly to look up details about commands, handlers, properties, etc. It is the single most important reference tool available for Livecode.
Save this stack (File -> Save in the main menu) and click the pointer tool (or use the shortcut keys CTRL + 9) to run the app.
Can you imagine some other ways to use the techniques in this app for other purposes? For example, you could create a presentation, a 'choose your own adventure' story, an audio/visual book (even one which reads aloud to you), etc., with nothing more than what you've learned so far.
To create a stand-alone app from a Livecode project (one that can run outside of the Livecode environment), click File -> Stand Alone Application Settings, and select the platforms which you'd like to build for (Mac, Windows, Linux, etc).
Stick with desktop OSs for now, as Android and iOS mobile platforms require the download, installation, and configuration of significant third party tools. Click File -> Save Stand Alone Application, choose a folder, and a fully functional stand alone app will be created for every platform you've selected. You can run the app, email it to people, upload it to a web server for distribution, submit it to an app store, etc. Note that you can 'cross-compile' between platforms - build Mac apps on Windows, Linux apps on Mac and visa-versa, Android apps on any desktop platform, etc. - all using the exact same code! Try sending a stand-alone birthday card to someone you care about.
Create a new stack and edit the stack's properties (click the Inspector icon, or double click the stack, or you can also select Object -> Stack Inspector in the main Livecode menu). In the first property pane, set the 'name' and 'title' properties to "Tile Game". Now select the 5th property pane (click the icon which looks like a plus sign made of arrows), and change the 'width' and 'height' properties both to 300.
Drag a button onto the stack and set its 'width' and 'height' properties both to 100, its 'left' and 'top' both to 0, and its 'name' and 'label' properties both to "1".
Drag another button onto the stack and set its 'width' and 'height' properties both to 100, its 'left' and 'top' both to 200, its 'name' to '9', and its 'label' property to " " (so that no text is displayed on the face of the button - this will be the empty space into which numbered tiles are moved).
set the loc of me to the loc of button "9"
You can see in the code above that a new variable called "temploc" is created to hold "the loc of me" value. The 'loc' property holds an object's center location coordinate. The 'me' word is a shorthand way for an object to refer to itself (in the code above, 'me' could be replaced with 'button "1"'). The 'set' command allows you to set any property of any object to any value. First, the location of button 1 is set to that of button 9, then the location of button 9 is set to the original location of button 1 (previously stored in the 'temploc' variable). This has the effect of swapping the two buttons on screen.
set the loc of the target to the loc of button "9"
This block of code is called a 'user command', which we've labeled 'movetile'. Just like Livecode's built in commands, user commands accomplish some action(s). Once defined, a user command can be called using the word label you give it, just like any built-in command you've seen so far. They're simply created using a label and some code you define. When you want to use a section of code many times in many places in your app, user commands are the solution. Remember, we've already added the 'movetile' command to all the rest of the buttons in our game, so that code runs any time any of those buttons is clicked.
Notice the use of 'the target' in the code above, instead of 'me'. Because this code lives in the main stack script, 'me' would refer to the stack, rather then to the button which called the command. 'The target' ensures that the location property of the button which called the 'movetile' command is changed, rather than the location of the stack.
Save this stack, try playing the tile game a bit, and perhaps experiment with changing the color, font size, and other properties of the buttons to familiarize yourself more with the available options.
Create a new stack and edit its 'name' and 'title' properties to "Calculator". Edit its 'width' and 'height' properties to 400 and 480.
Drag a text field control onto the stack and edit its 'name' property to "Display". Edit its 'width' and 'height' properties to 80 and 400, and its 'left' and 'top' properties both to 0.
put the label of the target after field "display"
This code is similar to the stack script you saw in the Tile Game example. It adds the text label of any button clicked by the user, to the end of the 'Display' field. Remember, whichever button executes this command is referred to as "the target". Notice that the word "after" is used to join the button's label text to the end of the 'Display' field.
To precisely recreate the layout above, you could edit the location properties of each button, or you could try to painstakingly drag, drop, and visually align each button, but Livecode provides a better method. When you select multiple objects in the UI with your mouse, then click Livecode's inspector icon, you'll see a new tab appear in the object inspector called 'align controls'. In this tab, the 'equalize' tool resizes selected objects equally, the 'distribute' tool distributes the positions of selected objects equally across the screen, and the 'align' tool lines up selected objects along a straight vertical and/or horizontal line.
Spend some time familiarizing yourself with these tools - you'll use them often to lay out UI controls. Tip: when aligning the bottom row of calculator buttons in this example, move the "=" button elsewhere, so that you have some empty space on the card to begin selecting the last row of multiple buttons. Then move the "=" button back into position individually.
put the value of field "display" into field "display"
The term "value" refers to the evaluated (calculated) result of an expression. So, the code above simply replaces whatever expression is shown in the "display" field, with its evaluated result. For example, if the display field contained the text "1 + 2", the code above would replace that text with "3".
Try playing with the calculator app - it's now fully functional. Can you imagine how to add more advanced features to the app?
Create a new stack and edit the 'name' and 'title' properties to "Tip Calculator".
Drag 3 label controls onto the stack, and edit their 'contents' properties to "Dinner Cost", "Tip Percentage", and "Pay This".
Drag 3 text field controls onto the stack and edit their 'name' properties to "Field1", "Field2", and "Field3".
Be sure to save changes to your app. This author suggests saving incrementally numbered file names every time you make a major change/addition to your app layout or code (i.e., name consecutive files something like tipCalculator1.livecode, tipCalculator2.livecode, etc.). This habit can help you easily revert to previous states when app development goes in a bad direction.
+ the text of field "field1") into field "field3"
This code simply multiplies the dinner cost times the tip percentage, adds that value back onto the dinner cost, and displays the total in the third text field.
Notice the '\' character at the end of the first line of code above. It's used to split single lines of code onto 2 or more lines, whenever a single line is too long to read comfortably. Try erasing it and put all the code on a single line. You'll see that it works exactly the same.
Note that the text following the two dashes in the code above is called a 'comment'. Comments are human readable bits of text which are ignored completely by Livecode. They're used to clarify what a piece code does, for other people who read your code.
Run the Tip Calculator app now to see it in action. It should be mentioned that a simple calculation like this could be performed with the previous generic calculator, but one of the great things about apps is that you can design them to perform very specific tasks, which help to streamline the activities they enable, reduce potential input errors, protect pieces of data which shouldn't be edited by the user, etc. When creating apps for business, for example, controlling user input and data processing in that way is very important.
Can you think of some other types of apps which take values input by a user, perform specific calculations, and display the calculated results?
put (the text of field "field1" & cr) after field "scroll1"
put empty into field "field1"
This code adds text from the text entry field, to the end of the scrolling list display. The "cr" represents a carriage return. The text in the entry field is then erased, and the cursor is focused there, so that the user can enter a new line of text.
The first line of this code creates the new variable 'slct', to hold the index number of whichever line the user has selected ('hilitedlines'). The user is then asked if that line should be deleted. Notice that 'line slct of me' would, for example refer to the text of the second line, if the user had clicked on line 2 in the list. If the user responds yes to the question, then that line of the scrolling list field is deleted. This whole block of code, therefore, simply allows the user to click on items in the list to delete them. Try running the app to see the code in action.
Can you imagine some other uses for a list app like this (grocery list, contact list, appointment list, etc.)?
Create a new stack and drag a button control onto it. Edit the button's name property to "btn1", it's label to "Match Me", and then select any image for it's icon property (in the fifth pane of the property inspector).
In this code, whenever the mouse is clicked, the 'grab' command allows the clicked object to be dragged around the screen. When the mouse button is released, a "conditional expression" is evaluated. The 'if' code structure evaluates whether a condition is true, then performs some action(s) based on that evaluation. In the evaluation above, the 'intersect' function is used to check if the grabbed button ('the target') is touching the 'btn1' button. If that's true, AND if the dragged button's icon matches the btn1 icon, then a "Match!" message is displayed.
Notice that the 'intersect' function above takes two 'parameters', enclosed in parentheses. 'Functions' in Livecode work just like commands you've seen so far. They just use the parentheses syntax to take some input data (and they'll often produce some 'return value' output).
Run the app and notice that some controls may visually overlap in ways that you don't intend. You can adjust the 'layer' property of each object to adjust which objects cover over others when dragged.
Try to think of some ways in which the code features of this app could be used to create more interesting games. Then, take a look at the maze, frogger, and matching games at https://sites.google.com/a/pgcps.org/livecode/home/livecode-links. You may be surprized to see how just a little creative thinking can turn the basic click/drag, intersect, and 'if/then' property evaluation techniques into a wide variety of other entertaining games. Practice your digital drawing skills and get ready to create the next app store hit!
Every single thing a computer/device can do comes down to its ability to process 'data' of some sort. That data could be, for example, inventory prices in a business app, image and touch coordinates in a graphic game, binary sound data in a voice recorder app, hardware control codes in a robot automation app, etc. Really, all any computer can do is input, process, and output such data. Learning how various code structures are able to represent and manipulate every possible type of data a computer can effect, is largely what coding is about.
If you do any serious programming of any sort, you'll need to learn how to manipulate text data and how to manage complex data structures (rows and columns of data, potentially with sub rows and columns...). The examples in this section will introduce the tools required to deal with common types of data.
The code in this section can be entered into the Livecode message box in multi-line mode (press CTRL + ENTER to submit multiple lines of code), but this author's preference is to simply create a new stack with a button, and add the example code to the button's 'on mouseUp' handler. The editor, debug tools, save/load, and other features available in UI code windows are much better than those in the message box.
put names   -- displays the name "Tom"
put the keys of food  -- displays "fruit, veggie, meat"
put employees["address"]    -- "3 Lane Street"
Note in the 'foreach' loops that a variable of your choosing is used to label each element throughout the iteration. The 'foodname', 'namekey', and 'nameinfo' variables could be labeled anything you choose. Also, the 'cntr' and 'nmbr' variables, which are incremented (1 is added to the count number each loop) in the iteration above, are also variable labels which can be named as you please.
select word 2 of line 5 of field "field1"
This is a simple alternative to using arrays.
answer "It's " & tm & "!"
Together, the tools demonstrated above enable the most fundamental techniques needed for all data processing you'll do in Livecode. In this tutorial, we'll explore array, loop, chunk, and text processing techniques by example.
Create a new stack, add a field named "field1", and change its 'vScrollbar' property to true (put a check in that property box). This adds a scroll bar so that large amounts of text can be easily scrolled.
put "" into fld "field1"
The 'on startup' handler runs the code when the app starts. The first line ensures that the field is empty. The 'repeat' loop counts backward from 100 to 1, with the variable "c" holding the current loop number on each iteration. The rest of the code simply concatenates the current loop number with the rest of the song lyrics, and puts that whole string of text at the end of ("after") field1.
The 'send' command sends a "startup" event to the stack, which is handled by the 'on startup' handler in the stack code. This causes the code above to execute as if the app had just started, every time the button is clicked. You can use the 'send' command to easily run code on other objects, instead of having to create a user command for shared code.
put "" into fld "field2"
repeat for each word wrd in fld "field1"
put wrd & " hay " after fld "field2"
The first line above clears field2 of any existing text. The following loop goes through each word in field1, eliminates commas and periods and then performs a conditional operation based on the first letter of each word. If the first character is a vowel, then the entire word, followed by " hay", are added to field2. Otherwise, if the first letter is not a vowel, the rest of the word (starting at the second letter), followed by the first letter and "ay", are placed into field2. Tada, pig latin!
This code puts some default text into field1 when the program starts. The 'on openStack' handler is built into Livecode to do things when an app starts. Notice the format of the text above - several types of words, each enclosed in angle brackets, will be asked of the user. The words provided by the user will be replaced in the text, to create a funny madlib story. The user can edit the text to create their own madlib.
repeat for each word wrd in field "field1"
replace ("<" & clean & ">") with it in field "field1"
The first loop above iterates through each word in field1. Any word which contains the character "<" is added to the end of the text contained in a new variable labeled 'wrds'. When the loop is done, all the '<', '>', '.' and ',' characters in the wrds list are replaced with spaces, so that only the words themselves are included (the 'replace' command is built into the Livecode language).
The next loop creates a list of unique words in the 'wrds' list (in the default text above, that list is reduced to only the 3 words "name", "pronoun", and "noun"), and those words are saved in the new variable 'wrdsclean'. The way this loop works is a bit complicated for the moment - it creates an array named cleanlist, using each word as a key in the array. Since an array can only have unique keys, this process automatically eliminates any duplicate words. If you don't understand how that works, just move on and understand the key point that the loop iterates though the list of words and does something with each word (in this case creates a unique array element).
The final loop asks the user for a text entry for each word in the 'wrdsclean' list, then replaces the original bracketed words in the field, with the text entered by the user. At this point the madlib functionally is complete.
put URL ("file:" & field2) into field "field1"
You can see in the code above that the data from a field container can be put into a URL (file) container, and visa-versa, using the exact same code that you've become familiar with already, just like any other 'put' operation. You can send data to web site URLs and other useful containers just as easily. In our Madlib app, you can now edit the file name in field2 to save and load different versions of your own created Madlib texts.
Play a few Madlib games with some edited, saved and loaded text. Make up your own story with new bracketed word types!
put "5/27/1972" into fld "startdate"
put "4/1/2016" into fld "enddate"
This code should be fairly self explanatory once you see how the 'convert' command works. It converts a date into all its components, the first 3 of which are year, month, and day numbers. The routine above simply subtracts each of those start date components from the same end date components, and displays the results in the 'timebetween' field. Use it to figure out how long you've been alive! Can you think of other types of apps which could make use of date and time values?
put (fld "item" & " , " & fld "price" & cr) after fld "sold"
put "" into fld "item"
put "" into fld "price"
repeat for each line eachline in fld "sold"
put sbttl into fld "subtotal"
put sbttl * .06 into fld "tax"
put sbttl * 1.06 into fld "total"
The 'on closeField' handler is activated any time a field is left after being edited. The user can use the keyboard TAB key to jump between fields. The first 'if' evaluation checks to be sure that a number has been entered into the 'price' field. If so, the item and price values are added to the 'sold' list, the item and price fields are cleared, and the item field is refocused. The 'repeat' loop goes through each price (item 2) on each line in the 'sold' list, to add up a total sale amount. That amount, along with calculated tax and total amounts are displayed the appropriate fields.
send "closeField" to field "price"
You should recognize the majority of this code from the earlier 'to-do' app example. This code was copied from that app to allow the user to remove items from the sold list. The last line sends a 'closeField' event to the 'price' field, so that the total, tax, and subtotal values are recalculated and re-displayed after any item is removed from the list.
set the defaultFolder to "c:/4/"
repeat for each item fd in "item, price, subtotal, tax, total, sold"
The first five lines create an array to hold all the sale data. The next five lines create a variable to hold the current date and time, in a format which can be safely used in a file name (the backslash and colon characters are replaced). Then the 'saleData' array is saved to a binary file, with the datetime file name. A loop is then used to clear all the necessary fields to begin a new sale.
This app is really not so complicated, but it demonstrates well how simple code can produce powerfully useful real life applications. Using this app as a foundation, you could add any number of features (automatic sales discounts on certain days, or for specific customer situations, error checks to ensure proper data entry etc.).
put theHtml into fld "code"
This script generates some HTML table code using two nested repeat loops and a conditional evaluation which determines when new rows should be formed. An introduction to HTML coding is beyond the scope of this tutorial, but the methods used to concatenate (join together) the opening and closing < t r > (row) and < t d > (column) tags should be easy to follow. Notice in particular the if/then/else evaluation which determines the choice of items in each cell of the table layout. Once the HTML code is created, that code is put into the 'code' field, and the end result is made viewable in the browser by setting the 'htmlText' property of the browser widget. Try setting the variables in the beginning of the script to display a different month layout. If you know how to code HTML tables, try adjusting the size, padding, and other look/feel properties of the generated HTML.
set the penColor to "black"
put empty into image "image1"
with filter "PNG file, *.png"
In the introduction of this text, it was mentioned that any operation a person can perform in the Livecode IDE, can be duplicated in code. You have the full power of the IDE available in your apps, controlled entirely by scripts! The 'Freehand' button code above performs the same action as if an IDE user had manually selected the pencil tool from the Livecode toolbar (allowing the user to draw). Because we only want that action to happen when the mouse is over the image, the 'on mouseLeave' handler of image1 ensures that the browse tool is re-selected whenever the user's mouse leaves the image. The 'Random' button effects the same action as a user clicking the line tool, setting the pen properties, dragging the mouse between two random end points, and then selecting the browse tool. The 'Clear' button simply empties the image1 data, to clear the drawing. The 'Save' button handler requests a file name from the user and then exports the image1 data, as a .png, and saves it to the chosen file. Can you think of how to add other features such as a color selector and other drawing tools?
Create a new stack with two image controls named "heads" and "tails", a field named "field1", and a button. Set both the width and height of each image to 159, uncheck the 'Show border' property of both images so that no line is shown around their edges, then line up the images so that one completely covers the other.
Edit the 'background fill' property of the stack, click 'Define Custom Colors', and set the red, green, and blue values all to 201. This will match the background color of the stack to that of the images we'll use in the app.
put url "http://live-code.net/heads.jpg" into image "heads"
put url "http://live-code.net/tails.jpg" into image "tails"
put item random(2) of "Heads, Tails" into fld "field1"
The 'random()' function selects either the first or second item from the list "Heads, Tails", and that random text selection is put into field1. The conditional if/else operation then chooses which image to display, based on the field contents, and a short delay is added to make the image blink, so that it's clear to the user that a flip has occurred (sometimes the image may stay the same, and this provides visual feedback that the flip operation is complete).
The images in this app are loaded from an online server. To remove that dependency, they could alternately be packaged as local files, together with your distributed app (there is an option in the standalone app settings which allows you to include external files). They could also be included in image controls on a second hidden card, and copied as needed. This would allow them to get compiled directly into your app.
Try to think of some other types of apps which could make use of the techniques here. Perhaps an image matching game, or a diagram maker (such as a guitar or ukulele chord diagram designer, etc.).
accept connections on port 1234 with message "clientConnected"
read from socket pSocket with message "messageReceived"
open socket to "localhost:1234" with message "clientConnected"
At this point, you should be able to read/understand/alter a variety of existing Livecode examples. Any details about the Livecode language and IDE which you don't know or can't remember exactly (commands, handlers, syntax for loops and other code structures, patterns of use in the IDE, etc.) can be looked up in reference documentation. The Livecode dictionary is searchable, and has cross-referenced entries which help you find related topics about which you're unsure how to begin searching. The online lessons and forums can be searched by Google, and generally provide relevant answers and solutions to all the most common problems encountered in mainstream development. You'll continue to memorize and more intuitively recognize words and code structures which appear repeatedly in existing code.
So now is the time to focus on creating new apps from scratch. In this section of the tutorial, you'll learn a basic approach to getting started with new applications, and you'll read through several app histories to understand how the process evolved from original idea to final running code.
Keep in mind that in all but the simplest scripts, software generally never springs into being in its final form. It evolves and changes as it's created and used. Your first thoughts about what an app will look like, how it will behave, and how you will accomplish writing code to create it, will often go through stages as its features expand, and its usability is tested by humans. You may discover that people are able to break your app, or achieve unexpected results by using the interface in ways which you hadn't intended. If you're writing an app for other people who aren't familiar with software development, it's likely that their conception of how an app might work isn't detailed enough (often, not even really fully formed), or could be approached in a more streamlined way that is obvious to an experienced developer. A basic approach to turning imagined ideas into code will help begin the process of creating a working piece of software.
The first thing to do is imagine the user interface layout and the actions that a user will take when interacting with your app. This will provide a starting point to begin thinking about the data which will be input be the user, how it will be processed. and how the output will be displayed. In a game, that input may be as simple as the user moving a graphic around the screen, and the data processing may simply involve conditional evaluations which are performed when graphics collide (score numbers increase, other graphics' coordinates change, etc.). In a business app, the input may be columns of numbers upon which calculations are performed, fields of text which are sorted, searched, altered, saved/loaded, and otherwise manipulated to create a report, for example. In either case, starting with a UI layout helps to get the process started.
Livecode makes it easy to begin drawing screens, but you could even start your first stage by sketching a storyboard, flowchart, or screen layout(s) with pencil and paper. During the initial prototyping (drawing) stage, think about every piece of data the program will need to make your screen layout function. Will your game need to keep a list of image locations, user movement inputs, timer values, speed and score values, etc.? Will your business app need to read numbers from a local file, or an online database, or combine values from several fields in the UI? Look at your screen drawing and write down every piece of data that you can imagine will be dealt with by your app. Placing a scoreboard in your game drawing will help you think about that bit of data, and should likely start a chain of thought about where the on-screen value(s) will come from. Write down a list of all the other associated pieces of data which are needed to compute any such value(s) that come to mind. Think about the 'hidden' values which are needed to perform any operation in your app - perhaps the state tax percentage needed to calculate the total sale in a cash register app, or the list of coordinates of moving images in a game, etc. Will you need a way for users to select and save values, will there be some conditional evaluation which selects values, etc.? For example, for a sales tax value, perhaps a drop down list of states could be provided to the user, the selected result of which is used to choose an associated percentage value from an array, which is then saved in a file or custom property, which can be loaded every time the app starts. Not only will this little piece of data require more screen layout (drop down selector), but also more associated data (state list, file name, etc.), and more functionality that will need to be added to your code (routines to select, save, and load the associated state list, the chosen zip code, etc.). Even the simplest little data point and feature details in an app may require many lines of code!
Remember, everything that your app can do will be represented as some form of data. Think of how any input from the user will be saved as data values, how those values will be processed by your app, and how that data processing will lead to output in your app. You'll need to come up with your own ways of managing lists and tables of values using arrays. For example, if you're creating a calendar app, how do you store repeating events, alarm times, etc.? There is no absolutely definitive answer to this question, and if you look through the code of 10 different calendar apps, you'll likely find 10 different solutions. When processing large amounts of data, you'll need to think of the most efficient ways to access and manipulate values, without wasting processing power and speed, using the smallest lists possible (for example, key/index lists which represent large chunks of data, instead of the entire chunks themselves). You'll have to weigh the benefits and drawbacks of using files compared to database systems for information storage/retrieval. A database provides multi-user access to data and can deal with large volumes of information without as much thought required to manage performance, but it does require additional setup, or perhaps an available Internet connection on the user's machine, and different patterns of coding thought which can affect how you set up data structures throughout your app. Because programming is ultimately about processing data, getting all the required data representations and structures clearly organized is one of the most important parts of the coding process.
As you sketch your app layout and define the data required, you can naturally begin to imagine the code structures which will bring the data processing to life. Data will be stored in variables, saved and retrieved to/from containers, calculations will be performed upon numbers, text strings will be concatenated, the results of conditional operations will be performed, lists of data will be processed using loops, etc. You'll need to imagine and create those structures using your own creative approach, based upon previous examples you've seen. Often, there will be several ways to accomplish the same goal. The process will become intuitive with experience, as you see more of the available Livecode solutions in use, but good planning and thoughtful design will always be part of the approach. In the beginning, write down variable names and list the other data containers you'll need to use in the app (will you store data in files, URLs, custom properties, etc.?). Write out how you plan to use loops to step through lists of data, the types of if/then conditional evaluations you expect to perform, etc.
Up to this point in the tutorial you've been shielded from the design choices which go into building an app. All you've needed to do is understand how the IDE and code examples work in each finished project. From this point on, and as you create apps from scratch on your own, you'll need to think about the natural design choices which confront developers at every stage of building any app.
One way to get started with actual coding is to use 'pseudo code', or plain English descriptions of what should happen in your code. Write out what you want to happen when a certain condition arises. This will naturally lead to thoughts about specific Livecode commands, event handlers, user created functions, and other actual code structures. Put comments in an event handler of a button in your UI layout, for example, explaining what you want that button to do when clicked. Put dummy table data into a grid control, and add comments about where/how that table of data will be obtained. Flesh out the imagined functionality of your app by thinking about what each piece of code needs to do. By using pseudo code descriptions of what you want the code to do, you can work in a top-down way, keeping the overall design of the project in mind without getting caught up in the hairy details of getting every line of code to work properly. It's easy to lose sight of the overall plan when you're lost in the miniscule details of writing code. Try to get as much of the complete design and overall logic done before you begin writing code. You'll get better at thinking directly with code, and need less pseudo code as you gain more experience, but it's always best to plan out the visual layout, the required data values/structures, and the code structures that you imagine will flesh out all the actions which your app will require to operate.
Read the following case studies to see how the general approach above yields results. In every case, pay attention to the fact that each feature of any app is a design decision determined by necessity, implementation difficulty, and other factors which could all be solved by a number of alternate layout and code structure choices.


Please note that Pagely will end support for PHP 5.6 by January 31, 2019 and all applications will be switched to using PHP 7. Please switch your apps early to avoid issues caused by a forced upgrade.
Log into the Atomic control panel.
On the main menu at the left side of the screen, click on Apps.
Locate the app that you want to change the PHP version on and click on the gear icon to the right of the app name.
Next, click on the Show Advanced Options button to show additional app options.
Now that the additional advanced options are shown, you'll now see an option to toggle PHP versions. To switch to PHP 7, toggle to Latest Version (PHP 7).
You're all set! Your PHP version has now been changed. We recommend always keeping up to date by using the latest PHP stable version available. By using the latest version of PHP, not only will your site be more secure, but you'll also be able to take advantage of the incredible speed improvements of PHP 7!
If you are concerned about the compatibility of a plugin with PHP 7 we recommend the PHP Compatibility Checker plugin. It's easy to use and generates a nice report for you to see what parts of your code may not be compatible with PHP 7.
We recommend disabling the plugin when not actively testing your site.
What is my Atomic Username?
Pagely is the Managed WordPress Hosting Platform designed to exceed the needs of media, business, and Enterprise customers alike. We help the world's biggest brands scale WordPress.
Copyright © 2006-2017 Pagely, Inc. All rights reserved.
Pagely® and WordPress® are registered trademarks.


text:
Apartments See Our Limited-Time Offer Custom Interiors Realty & Moving Services
Ann's Choice Annual Resident Life Expo Held May 11
Fun and exciting opportunities for residents include tennis, art, flying drones, band, dancing, and more!
On May 11, more than 400 people, including priority list members, attended Ann's Choice Resident Life Expo and explored the vibrant opportunities the community offers through its resident-run activities.
"With more than 150 clubs and activities on campus, there is something for everyone," said Community Services Manager Angelena Adams. "Pursuits include arts and crafts, cultural, educational, games, music, theater, social, travel, volunteering, fitness, and more."
At the fun event, guests spoke with resident group leaders and joined in live demonstrations of square dancing, sing-a-longs, Silent Flyer simulator, and games. The community's 2nd Time Around Band entertained the crowd with old and "not so old" tunes.
Stan Komorowski, a member of the Romeo Club (Retired Outstanding Men Enjoying Ourselves) said, "I like the comradery of our club. We have a great time together." The club has more than 150 members and meets for breakfast once a month. After breakfast, members can stay for a talk by a guest speaker from Ann's Choice or the local community.
Sherry Resnick, who has lived at Ann's Choice for three years, is a founding member of the Gallery at Ann's Choice. "The Gallery has six art exhibits a year," said Resnick. The current show features the work of two local photographers, Mickie Rosen and Dutch Phil Bagley. Resnick also enjoys participating in the pottery club, short stories group, and exercise classes.
"You'll never be bored at Ann's Choice," said Adams. "There are so many opportunities to get involved and meet new people."
Ann's Choice is one of 19 retirement communities managed by Erickson Living. Located in Warminster, Pennsylvania, the scenic 103-acre campus is home to more than 2,000 residents.
For more information, visit www.annschoicecommunity.com.
30000 Ann's Choice Way, Warminster, PA 18974


text:
Die Japanische Badmintonmeisterschaft 1991 fand im Dezember 1991 in Tokio statt. Es war die 45. Austragung der nationalen Titelkämpfe im Badminton in Japan.

Medaillengewinner

Weblinks
http://www.badminton-a.com/nbaevent/index/aj.htm

1991
Badminton 1991
Badmintonwettbewerb in der Präfektur Tokio

redpajama_set_name: RedPajamaWikipedia


Some say that Griffin is the king of all creatures, because he has the sight and drive of an eagle combined with the fury and the intelligence of a lion. He also has his own qualities, like a majestic pose and divine powers.
Griffin: Tell us your opinions, questions, suggestions!


RECEIVE 5% OFF up until February 13, 2019 on WHRO Education Online Professional Development , Virginia's PBS Teacherline Courses , and even National PBS TeacherLine Courses . Follow instructions below for WHRO Education PD and Virginia's PBS TeacherLine Courses. Click on the image, and if you have email set up on your computer, the message to receive the discount will be set up and ready to go. You can also click here for 5% for the email message to pop up and be ready to go.
For National PBS TeacherLine courses, you can now register through the WHRO system. You DO NOT have to go to the national site to register.