text:
Colour: The Spectrum of Science
Why are there no blue roses?
Making the programme
Beyond the Rainbow
Episode 3 of 3
Helen Czerski looks at the colours invisible to our eyes. To see the universe in a new light, she takes to the skies in a jet equipped with an infrared telescope.
We live in a world ablaze with colour. Rainbows and rainforests, oceans and humanity, earth is the most colourful place we know of. But the colours we see are far more complex and fascinating than they appear. In this series, Dr Helen Czerski uncovers what colour is, how it works, and how it has written the story of our planet.
The colours that we see are only a fraction of what's out there. Beyond the rainbow there are colours invisible to our eyes. In this episode, Helen tells the story of scientific discovery. To see the universe in a whole new light, she takes to the skies in a NASA jumbo jet equipped with a 17-tonne infrared telescope.
We can't see in ultraviolet, but many animals can. Helen explores what the world looks like to the birds and the bees. With the discovery of x-rays we could look inside ourselves in ways that previously had only been possible after death. Today those same x-rays allow us to examine life at the atomic level, helping to develop new drugs and better materials. Ultimately, by harnessing all the colours there are, researchers are beginning to image the human body as never before, revealing new ways to treat disease.
15 days left to watch
Audio described
Mon 1 Jul 2019 23:00
You are at the last episode
See all episodes from Colour: The Spectrum of Science
Why do we see colours differently?
iWonder guide looking at how people can perceive the colours differently.
How optical illusions can trick our brain
Q&A with Helen Czerski
The programme's presenter answers your questions on Twitter
Follow the conversation on #BBC_colour (twitter.com)
How I explored the hidden stories of our planet's colours
By Helen Czerski, Physicist and Presenter
...and five other fascinating questions about colour
A tour of NASA's 17-tonne flying infrared telescope
The illusion of colour
See all clips from Beyond the Rainbow (2)
Timings (where shown) are from the start of the programme in hours and minutes
50 - Ballzauber! (Teil 26)
Presenter Helen Czerski
Executive Producer Jacqueline Smith
Series Producer Graeme Thomson
Director Toby Macdonald
Producer Toby Macdonald
Mon 17 Jul 2017 20:00
Tue 18 Jul 2017 03:00
Learn More with The Open University
Visit the Open University and discover a wealth of further information.
Uncover the unseen world of colour in this interactive video
NASA and SOFIA (www.nasa.gov)
Diamond light source (www.diamond.ac.uk)
Mark Lythgoe on the Life Scientific
Centre for Advanced Biomedical Imaging (www.ucl.ac.uk)
University of Bath - Department of Physics (www.bath.ac.uk)
Factual > Science & Nature > Science & Technology
iplayerdurationaudio-descriptionplayrecommend


text:
Students raised FJD$4k for cyclone victims
News - NationalBy Editor March 24, 2016 Leave a comment
LOCAL students studying in various universities in Fiji have raised a total of FJD$4,805.00 equivalent to SBD$18,099.23 towards the victims of the recent tropical cyclone Winston. This was made known to the Solomon Star by the President of the Solomon Islands Students Association (SISA) at USP, Laucala campus. Richard Hou said the money raised was…
Ship wrecks yet to be returned
THE old wreckage from a sunken ship in the Malaita outer islands are yet to be returned to Dr Reginald Aipia, sources revealed. Speaking to the Solomon Star one of the local scuba divers who helped to salvage the suspected mineral objects from the sunken ship said their boss (Aipia) is still waiting to receive…
Opposition questions Guam FOPA selection
THE Parliamentary Opposition Group is concerned that nepotism has influenced the list of cultural groups that will represent Solomon Islands in this year's Festival of Pacific Arts in Guam. In a statement issued on Wednesday, the Opposition said they have received complaints from various cultural groups that they have been misled by the Culture &…
Opposition queries gov't over diplomatic appointments
THE Parliamentary Opposition Group wants the Government to confirm whether any appointments have been made for the country's diplomatic offices overseas. In a statement issued yesterday, the Opposition Group said they understand that the country's diplomatic offices in Taiwan and Canberra have been left vacant whilst there are plans to replace the head of mission…
MMF backs SIPA reform
Malaita Ma'asina Forum (MMF) has commended the efforts made by Chief Executive Officer (CEO) Collin Yow of Solomon Islands Ports Authority (SIPA) to put in place new reforms that will generate more revenue for the country. This was revealed in the MMF final reports of their research conducted to unveil the financial status of the…
Heads of Missions consultations
A four day national consultation by the Ministry of Foreign Affairs and External Trade (MFAET) for its Heads of Missions and other relevant stakeholders will begin on Tuesday 29th March. The consultation will see all of the Country's Heads of Missions from New York, Havana, Brussels, Geneva, Taipei, Kuala Lumpur, Canberra, Suva, Wellington, Jakarta and…
Caucus hears Ports plan
Solomon Islands indigenous people are being urged to take ownership of their aspirations to develop the national economy thus improving their living standards and reducing the current high cost of living. The sentiments were made Tuesday (March 22) by the Chief Executive Officer of the Solomon Islands Ports Authority, Colin Yow while presenting the Ports'…
PMO apologises over statement
The Prime Minister's Office (PMO) yesterday issued an apology as it retracted a press statement regarding the Court of Appeal decision between Axiom KB Ltd and Sumitomo Metal Mining (SMM) Ltd. A statement from the PMO said the Government Communication Unit on the sole advise of the Special Secretary to the Prime Minister issued a…
Dr Billy Fito'o, PhD in education
Solomon Islanders in Suva were in tears on Wednesday when the newest Solomon Islander doctorate degree holder, Dr Billy Fito'o was capped at The University of the South Pacific graduation ceremony. Dr Fito'o from Kwara'ae in Mala'ita Province did his research on citizenship education in Solomon Islands.In congratulating Dr Fito'o, one of his mentors, Solomon…
$7M Demand
Water source landowners demand payment of arrears Kongulai water source landowners' trustees are demanding the government more than SBD$7 million in outstanding arrears for land rental. They want this to be paid up by this Friday, 25th March. Trustees claim the amount of $7,565,655 is to yet to be paid from $10,565,665 as arrears payable…
23456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
6926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991,0001,0011,0021,0031,0041,0051,0061,0071,0081,0091,0101,0111,0121,0131,0141,0151,0161,0171,0181,0191,0201,0211,0221,0231,0241,0251,0261,0271,0281,0291,0301,0311,0321,0331,0341,0351,0361,0371,0381,0391,0401,0411,0421,0431,0441,0451,0461,0471,0481,0491,0501,0511,0521,0531,0541,0551,0561,0571,0581,0591,0601,0611,0621,0631,0641,0651,0661,0671,0681,0691,0701,0711,0721,0731,0741,0751,0761,0771,0781,0791,0801,0811,0821,0831,0841,0851,0861,0871,0881,0891,0901,0911,0921,0931,0941,0951,0961,0971,0981,0991,1001,1011,1021,1031,1041,1051,1061,1071,1081,1091,1101,1111,1121,1131,1141,1151,1161,1171,1181,1191,1201,1211,1221,1231,1241,1251,1261,1271,1281,1291,1301,1311,1321,1331,1341,1351,1361,1371,1381,1391,1401,1411,1421,1431,1441,1451,1461,1471,1481,1491,1501,1511,1521,1531,1541,1551,1561,1571,1581,1591,1601,1611,1621,1631,1641,1651,1661,1671,1681,1691,1701,1711,1721,1731,1741,1751,1761,1771,1781,1791,1801,1811,1821,1831,1841,1851,1861,1871,1881,189

redpajama_set_name: RedPajamaCommonCrawl


Cartesio sideboard from Italian manufacturer Verardo. The frame is made of metal. Finishing of top and door: oak/maple/cherry/glass/lacquer from the range of the campaign. Inside the model can be equipped with shelves, drawers, bottle holders, small and large modules with drawers. A good choice for dining room in modern style. Product color black.


text:
Madden 21 Mobile Hack
Madden lovers! Searching for madden 21 mobile coins .Wait no more get unlimited madden coins using our madden 20 mobile hack
EA launched EA SPORTS Madden NFL 20 worldwide on Xbox One, PlayStation 4 and Origin for PC
August 13, 2019 by admin Leave a Comment
With the worldwide release of EA SPORTS Madden NFL 20 also for Xbox One by Electronic Arts unofficially begins the football season. This year, every Superstar X-Factors football fan can become a superstar and experience the special abilities of the finest NFL players. In the new career campaign Face of the Franchise: QB1, players can make the leap from college QB to NFL star.
But that's not all, as Madden NFL 20 also includes new Run Pass Option (RPO) moves, new Signature animations, Playbooks, and more. Madden Ultimate Team fans can secure items and bonuses for even more powerful squads in new missions.
Fans of the tough competition can look forward to the Madden NFL 20 Championship Series , where eSports players around the world battle for NFL gaming fame. The Madden NFL 20 Championship Series presents a reworked format that brings the game even closer to the real NFL season. All four Madden NFL 20 Major tournaments take place at crucial NFL times.
Also Read: madden 20 mobile hack
Even the mobile version of the game, Madden NFL Mobile , has started its new season. Here players can become a football legend at any time and take advantage of a variety of new features, including dynamic NFL seasons, competitive gameplay, and new offensive strategies and team building capabilities. Madden NFL Mobile is now available for download from the AppStore and Google Play .
Madden 20 Mobile Review
Madden NFL 20 is developed by EA Tiburon of Orlando, Florida and is also available worldwide for Xbox One .
Under the NFL Draft in 2019, Electronic Arts today officially unveiled Patrick Mahomes , quarterback of the Kansas City Chiefs and most valuable player of the 2018 NFL season, as cover star of all editions of Madden NFL 20 and Madden Mobile. In addition, first details about the game will be announced.
Mahomes delivered a record-breaking first season as a starter and goes down in history as the only quarterback to record more than 5,000 thrown yards in a season in both the college league and the NFL. He is also the third quarterback to score at least 50 touchdowns in a single season.
In addition to his appearance on the cover, Mahomes also served as a source of inspiration for the development of Face of the Franchise: QB1, a brand new and personalized career mode in Madden NFL 20 that allows fans to create their own junior quarterback and break away from college football, to fight through the NFL Combine and the NFL Draft to face the franchise in the NFL. The new scenario structure in this mode generates unique playable scenarios.
You may be interested in: madden NFL 20 review
In Superstar X-Factor , another novelty of this year's offshoot, the stars of the NFL demonstrate their unique abilities and show the world why they are among the best of the best. "The team wanted to ensure this year that the NFL superstars feel and play in all aspects of Madden, just as they do on the field every Sunday – we wanted to make sure the stars really feel like stars," said Seann Graddy, Executive Producer of Madden NFL 20. In addition, fans can look forward to new player celebrations, sprint and passport options (RPO) and unique playbooks.
Pre-Ordering the Madden NFL 20
Superstar Edition kicks off today and offers fans many benefits, including 12 Gold Team Fantasy Packs, 1 of 32 basic elite players from their favorite NFL team, a small Quick Sell training pack in Madden Ultimate Team and a unique one Legends Superstar ability of their choice for the created player in the new game mode Face of the Franchise: QB1.
In Face of the Franchise: QB1, fans of the college football can brace themselves for more than 10 new NCAA colleges, including Mahomes' Alma Mater Texas Tech, as well as other top teams such as Clemson, Oklahoma and LSU.
madden mobile 20 tips and tricks
Madden NFL 20 New Features
What you need to know about Madden NFL 20
madden NFL 20 review


text:
Die Brombenzoesäuren bilden in der Chemie eine Stoffgruppe, die sich sowohl von der Benzoesäure als auch vom Brombenzol ableitet. Die Struktur besteht aus einem Benzolring mit angefügter Carboxygruppe (–COOH) und Brom (–Br) als Substituenten. Durch deren unterschiedliche Anordnung ergeben sich drei Konstitutionsisomere mit der Summenformel C7H5BrO2.

Eigenschaften
Die Brombenzoesäuren sind kristalline Feststoffe. Die Schmelzpunkte unterscheiden sich deutlich. Die 4-Brombenzoesäure, die die höchste Symmetrie aufweist, besitzt den höchsten Schmelzpunkt. Die Brombenzoesäuren weisen aufgrund des −I-Effekts des Bromsubstituenten eine höhere Acidität im Vergleich zur Benzoesäure auf. Die pKs-Werte sind daher entsprechend niedriger (Benzoesäure: 4,20).

o-Brombenzoesäure kristallisiert im monoklinen Kristallsystem in der  mit den Gitterparametern a = 1482 pm, b = 2590 pm, c = 2590 pm und β = 118,25°. In der Elementarzelle befinden sich acht Formeleinheiten.

m-Brombenzoesäure kristallisiert ebenfalls im monoklinen Kristallsystem in der Raumgruppe  mit den Gitterparametern a = 2599 pm, b = 473 pm, c = 607 pm und β = 102°.

Auch p-Brombenzoesäure kristallisiert im monoklinen Kristallsystem in der Raumgruppe  mit den Gitterparametern a = 2959 pm, b = 615 pm, c = 398 pm und β = 95,5°. In der Elementarzelle befinden sich 4 Formeleinheiten.

Einzelnachweise

Siehe auch
 Brombenzylalkohole
 Brombenzaldehyde

Nach Substitutionsmuster unterscheidbare Stoffgruppe
 Brombenzoesaeure
 Brombenzoesaeure

redpajama_set_name: RedPajamaWikipedia


People who come to the place where two buildings collapsed, leaving at least three dead, this Friday in Rio de Janeiro to find information about their families can tell what apartment they lived in, but little is known about the "militias" that built them and they sold them illegally.
The families that resided in the two four-story buildings, among which the three dead so far, 11 injured and more than a dozen missing, occupied them this year despite the fact that last November the Mayor of this Brazilian city seized the works and prohibited its use.
As the prosecutors, due to the threats, do not enter the areas controlled by the militias - paramilitary groups made up of police and ex-policemen - nobody stopped the works or prevented the buyers of the apartments from occupying them.
The buildings were built in an environmental reserve area, in the shadow of a steep hill and next to a precipice, for which the Mayor had warned about the high risk of landslides in the neighborhood known as Muzema.
This community, with low-middle class buildings and numerous shops, is next to Río das Pedras, the favela of the western area of the city where the militias were born and are strongest.
Muzema was controlled by a group of militiamen led by the police chief Ronald Paulo Alves Pereira, arrested last February in an operation against paramilitary groups.
The construction of houses in invaded areas, generally environmental reserves, and real estate speculation has become one of the main sources of income of these armed groups, who also charge for offering "security" to their neighbors and have a monopoly on the sale of kitchen gas pipettes and clandestine television service.
The Mayor's Office warned that since 2005 the nearly 30 buildings of the Figueras condominium, in which the tragedy occurred, are in an irregular condition and that they had already begun processes for their demolition.
Although no authority says that the buildings were built by the militias, the few neighbors who agree to speak, with the condition of not being identified, admit that they knew about the irregularities.
"Because of the prices and lack of documentation, I knew it was not a legal apartment, but it was a good opportunity and I wanted to give my family a better life and remove it from the favela where we lived," the owner told Efe. of a property in a condominium located two streets from the place of the tragedy.
The illegal apartments are offered even on the internet, where it is possible to verify that a house with two rooms in the condominium has a cost of 25,000 reais (about 6,580 dollars), a value well below the market.
"The buildings seem solid and have different services, some even have a pool, so I never suspected that I could be in danger," added the person consulted by Efe.
The offer of housing by militia is a solution for many people who live on rent, want to leave dangerous favelas dominated by drug traffickers, do not want to go to the suburbs and can not afford the high prices of the market.
According to official statistics, the housing deficit in Brazil is about 6.35 million real estate, mostly (87.7%) concentrated in large cities.
"The invasion of land and illegal construction in areas of militias always had the complicity of authorities, although it causes tragedy for the inhabitants of poor regions," deputy Marcelo Freixo denounced on Friday, who led a legislative commission that investigated the militias in 2008.
The fight against paramilitary groups after the announced tragedy this Friday was defended by the vice president of Brazil, General Hamilton Mourao.
"We have to look for a coordinated way of acting between the different police forces so that the State can play its role and be present in those areas," he said.
"It is inadmissible that there are places that public bodies can not enter," he added.
The police major who commanded the militia in the district of Muzema is also accused of integrating the "Office of Crime", a group of militiamen who is attributed the murder last year of the councilor and human rights defender Marielle Franco , which stood out for its firm action against police and paramilitary abuses.


Re: Will my app still work after Jan.1,2017 ?
Now, my app works well on IOS9&10 with all HTTP connections to retrieve data and H5 pages. I just want to know if my app could still work on IOS9&10 without any update after Jan.1,2017. Could anyone give any feedback on this? Thanks in advance.
If you find any information, please reply as I'm up against this same question.
I just want to know if my app could still work on IOS9&10 without any update after Jan.1,2017.
Please read my App Transport Security pinned post and then write back if you have follow-up questions.


Villa Organic Gardens Garden Villa is located in Crikvenica, this air-conditioned villa features free WiFi and a 2 grand terrace. It provides free secured private parking.
There is a dining area and a kitchen equipped with dishwasher. A flat-screen LCD TVs in every room and DVD player, as well as a CD player are provided. Other facilities at Garden Villa include a big outdoor pool with a sea view.
There are 3 double bedrooms in a villa, green, red and blue. Red room has a fireplace and a swimming pool view. You can go to swimm straight from this room. Large livingroom is equiped with TV and a nice music set and a library. Ground floor offers a big modern kitchen and a dining room for up to 12 people. There is a big modern bathroom with marble shower and a jacuzzi tub. Outside there are few terraces, a pool terrace near the swimming pool and a barbeque terrace with a grand stone barbecue with a big table and chairs for up to 12 people.
There is a big parking for up to 4 big cars secured with a big fence. Entrance doors remotely opens and close.
You can enjoj large variety of fruits and vegetables picked straight from the garden. There are strawberies, cherries, peers, figs, plums, apples, and many other fruits you can pick and eat straight from our garden. Arround 70 different fruit and vegetables plants grows there at your disposal. You can enjoj your time in this tranquil area with your family or friends at the property. Rijeka is 37 km from Gardens Villa, and Opatija is 45 km away. Plitvice lakes are 100 km from the villa. Guests can enjoy various activities in the area, including windsurfing, diving, paragliding or biking. The nearest airport is Rijeka Airport, 22 km from Garden Villa. Nearest Crikvenica beach is arround 1 km away.
Beautiful villa with large swimming pool.
Thank you for visiting our pages. We welcome you to spend your summer vacation with us in Crikvenica, Croatia. Have a lot of fun with your family or friends in our cozy and modern villa Organic Gardens.
Welcome to town of Crikvenica at Croatian North Adriatic coast. Our little town Crikvenica can offer to you an amazing vacation in Croatia. You will bring home an amazing memories from your Croatian vacation and our villa Organic Gardens.
Crikvenica is a well known Croatian coastal town with beautiful sandy and pebble beaches. You can take a walk along the sea from the town of Crikvenica to Selce or Dramalj. Organic Gardens villa with a large swimming pool and a sea view is the place for your vacation in Crikvenica.
With by Organic Gardens © 2017. All Rights Reserved.


text:
Eric Nestler
Home / Artist / Eric Nestler
"The Rousseau Classic NC4 mouthpiece allows me to attain the highest possible level artistry and musicianship."
Eric Nestler has been on the faculty of the University of North Texas College of Music since 1992. He is currently a University Distinguished Teaching Professor of Music. Dr. Nestler presented his New York debut recital at Weill Recital Hall at Carnegie Hall in May 2003. Internationally, Nestler has performed solo recitals in Cape Town and Stellenbosch, South Africa and has traveled to Europe where he performed several solo recitals including performances at the Franz Liszt Academy in Budapest, Hungary, the Prague Conservatory, the Janacek Academy in Brno, the Czech Republic, and Castlefranco, Veneto, Italy. He has also performed extensively in Asia including Beijing, Chengdu, Guangzhou, Hong Kong, Shanghai, and Tianjin, China. In November 2004, Nestler was a featured artist at the Asian Saxophone Conference in Bangkok, Thailand. He is the author of several articles published in the Saxophone Symposium. In 2009, Nestler was diagnosed with embouchure dystonia and was unable to perform for many years. After receiving rehabilitation at the UNT Health Science Center, Nestler relearned to play the saxophone. Dr. Nestler earned a Bachelor of Music degree in Music Education, Summa Cum Laude, from Susquehanna University where he was a student of Donald Beckie. Dr. Nestler has since received both the Master of Music degree in Woodwind Instruments, with High Distinction, and the Doctor of Music Literature and Performance degree in Saxophone, Clarinet, and Bassoon, with High Distinction, from the Indiana University School of Music (Bloomington, IN). He studied with Eugene Rousseau (saxophone), James Campbell (clarinet) and Sidney Rosenberg (bassoon).
Visit Eric Nestler Website


Hey! Looks like you're on Windows. Looking for Replay Music for Windows? Go here!
Current Customers: You're downloading version 2.2.5, the most recent, fully functional version of Replay Music for Mac.
You can now record music from ANY SITE using the new Audio Capture Mode. In this mode, Replay Music will record any audio that is playing on your Mac. Works great for sites that cannot be stream captured (like Spotify).
Audio Capture Mode can automatically split and tag tracks!
Streaming Mode downloading improved for many sites.
New URL download bar. Just paste in the URL!
You can upgrade to version 2 for a special price. The upgrade is just $9.95 if you purchased Replay Music 1 before April 1, 2017, or November 1, 2016 if you bought the Replay Capture Suite. If you purchased after the specified dates listed above, the upgrade is free, and you can continue to use your existing registration code.
Previous version download links are available near the bottom of this page.
New Customers: Try Replay Music for Mac FREE today. In demo mode you can save your first 10 songs free in Auto mode. After 10 songs, all recordings are saved to 50% length. Once you purchase, you can save unlimited songs and unlock URL mode.
Ready to Buy? Replay Music for Mac comes with a no-questions asked 30-day money back guarantee.


The Marcelle Eyebrow Pen is packaged no differently from a regular thin marker. The applicator is a slanted felt-tip so you can draw either fine or thick lines.. The "pen" has a cap that closes tightly to prevent the product from drying out.
The slanted felt tip allows you to draw either thin or thicker lines.
The ink inside the Marcelle Eyebrow Pen dispenses very nicely. I have the color "Universal Dark" and the product is also available in "Universal Light". The ink sets very quickly, after which it is completely smudge-proof and lasts through the day very well.
The color "Universal Dark" works nicely with my black eyebrows because it's just the right shade of dark taupe-y brown, not too red and not too black.
The small downside of these that I have to point out is that like any other type of marks, the brow pen does not glide very well over bumpy surfaces. This was a problem for me because I have some small permanent acne scars and acne bumps along my brow line, especially on my left brow. So when I try to go over those areas with the product, the ink simply will not dispense. This definitely will not be an issue for most people before but I thought it's worth mentioning.
I think this is a very innovative brow product. The felt liner allows precise application and the formulation is natural looking and long lasting. However, as I noted, the application is problematic over bumpy skin textures.
Marcelle products are available online and in stores at London Drugs and Shopper Drug Mart across Canada.
Have you tried an "eyebrow pen" before? Let me know in the comments below!


text:
Vicki Momberg back in court next year, after case postponed
Jeanette Chabalala
Vicki Momberg back in the dock. (Iavan Pijoos, News24, file)
Vicki Momberg granted bail, pending her appeal
Vicki Momberg granted leave to appeal prison sentence
Vicki Momberg case: The k-word is used to mentally oppress the human spirit, court hears
Former real estate agent Vicki Momberg, who was convicted in connection with a racist rant, has appeared briefly in the Randburg Magistrate's Court, where her case was postponed until next year.
Momberg's lawyer was meant to furnish the court with details on where the process of her appeal was currently at.
The case was postponed to February 20, 2019, pending the outcome of the appeal of her prison sentence and conviction in the South Gauteng High Court in Johannesburg.
READ: Vicki Momberg returns to court to appeal conviction
Speaking to reporters shortly after the postponement, Momberg's lawyer Kingdom Onah said they were still waiting for the Director of Public Prosecutions to furnish them with a date on which the appeal would be heard.
"We believe that the sentence is harsh and we also believe the conviction should be overturned.
"We strongly believe we will be successful in the appeal," Onah said.
Momberg, who appeared in court for less than five minutes on Monday, was granted R2 000 bail in August.
She applied for bail after being granted leave to appeal both her conviction and her sentence by the High Court. No bail conditions were set.
Momberg was sentenced in March to three years in prison, of which one year was suspended, following her racist tirade in 2016.
Momberg was found guilty of four counts of crimen injuria on November 3 for calling a black police officer the k-word 48 times when he came to her aid following a smash-and-grab incident.
Read more on: vicki momberg | johannesburg
Gauteng Jobs


Alex Villeneuve, only 21 years old and near his graduation as master beer brewer on the Olds College, realizing the amount of waste (what's left of barley after the fermentation required for beer brewing) whose only faith was the garbage bin, thought he could to act on it.
And, as fast as possible, given that after fermentation, not only it was rendered as useless, but also quickly develops a rather nasty smell.
As a permaculture enthusiast he thought that he could arrange an effective solution for such a waste, given that every liter of beer results on a fermented barley waste of 150 grams. In total, beer only absorbs 15 percent of the brewed cereals, the remaining 85 percent gets thrown on the bin.
His experiment, which started on his college dorm room, has since moved to a warehouse and is bound to grow even more, supplying the groceries and restaurants of Alberta, Canada.
Recycling the barley waste, pressing it on a way it resembles a tree log, he found the natural habitat of the mushroom varieties he grows: oyster ((Pleurotus Ostreatus) and lion's mane (Hericium Erinaceus).
He, first pasteurizes the waste to get rid of all bacteria, then injects it with the fungus that gives birth to its high quality mushrooms. As a bonus, his system not only creates gourmet mushrooms which, in dry conditions, are being sold at over 100€ a kilo, but the fungus also alters the composition of the waste giving it new life, turning it into ration with a high protein value that can feed cattle with zero waste.
Alex Villeneuve managed to transform a product that so far was considered useless on a product with two different uses!
His innovation already earned him the Alberta Innovates Technology Futures Venture Prize for students, a value of 20,000 dollars, which he used to invest in equipment that allows him to control and regulate the temperature, moist, air circulation, light and the water needed to increase the productivity and quality of his mushrooms, as well as to improve the drying process; what allowed him to start his own company, Ceres Solutions, an homage to the Roman goddess of agriculture.
About to reach his graduation as master brewer, Villeneuve will soon also complete his studies to become a chef, although he has no plans to open his own brewery or restaurant.
So far all the breweries on Alberta, Canada, eight in total, made it clear they wish to associate with his company to run off the waste they produce daily, what will force him once more to expand his facilities and production.
Since we are dealing with an innovative process to use industrial byproducts that, so far, has not been developed by any other company worldwide, but will surely contribute to transform the beer production industry as a whole, be it industrial or artisanal, rendering it more ecologic and able to reduce the food scarcity on the distant future, given that besides producing gourmet mushrooms the waste can also be used a third time as livestock ration.
Being on its first steps and having already gained the interest of both the restaurant and gourmet products market, besides the beer brewing industry, this Canadian startup is bounded to make a name for itself thanks to its pioneerism and the entrepreneurship of its owner that had already proved himself as a brewer (inventing a ginger and rosemary beer that won him the first prize at the Edmonton Winter Drink Festival) and as a businessman (using his weekends during his chef apprentice degree to create pop up restaurants that had a great success).
Ever wondered how will the world face the expected growth of population, which is likely to lead to global food shortages and widespread famine? Well, have you ever wondered how vegetarians get their daily portion of animal protein?


So, I was off the blogging cause I "made" Nelles' birthday party! This was my 12th kids birthday party I have thrown. Well, I would say I never learn! Still doing it by myself, still cooking, baking cakes, making decorations, cleaning, planting flowers, etc… even when I don't have much time left. This is called … More Nelle is 6 now!
20 Comments Nelle is 6 now!
This day is special. Special to me. Not because 35 is a big deal to me but because I realize, that self-love and confidence finally have arrived. I don't know why it took so long! Being me is the best thing ever! My blogging friend Jodi can tell you, that I've been through … More Happy 35th birthday to me!
33 Comments Happy 35th birthday to me!
Today is Helmī Saule's 2nd birthday! I can't believe it! Oh, well I can believe it but still… 2 years! That's serious! She's not a baby anymore! She's a girl! GIRL! This Monday she had her first one hour visit to the kindergarten. We had to play peek a boo to get her dressed. I had … More My Birthday Girl!!!!
20 Comments My Birthday Girl!!!!


text:
Q: How to define a new font family on Beamer? How to define a new font family on Beamer?
I've tried this way, but I get Undefined control sequence :
\newfontfamily\fff{xxx.ttf}

Any good idea, please?
Thanks in advance!

A: \documentclass[12pt]{beamer}
\usepackage[T1]{fontenc}
\usepackage{biblatex}
\newcommand\palatino{\fontfamily{ppl}\selectfont}

\begin{document}

\begin{frame}{\palatino Title in Palatino}{Subtitle}
foo
\end{frame}

\end{document}

A list of the family names for pdftex is available here: http://mirrors.ctan.org/info/fontname/fontname.pdf (p. 30ff)
If you want to use a TrueType or OpenType font then use xelatex or lualatex. Then it is easier, for example:
\newfontfamily\DVS{Deja Vu Sans}

redpajama_set_name: RedPajamaStackExchange


text:
Moncler Derma Trademark Details
Moncler Derma was registered on Tuesday, April 3, 1984 and is currently owned by Richardson-Vicks Inc. under the registration number 1272305 . This mark is dead with a status of Cancelled - Section 8. The last case file activity for this mark occured 32 years ago on Tuesday, August 14, 1990, according to the United State Patent & Trademark Office
Moncler Derma
Richardson-Vicks Inc. of Wilton, CT
View all trademarks for Richardson-Vicks Inc.
Other Trademarks for Richardson-Vicks Inc.
Hoffmann-La Roche, Inc. of Nutley, NJ
View all trademarks for Hoffmann-La Roche, Inc.
Other Trademarks for Hoffmann-La Roche, Inc.
Kenneth L. Fishman
Ten Westport Rd.
Wilton CT 06897
No claim is made to the exclusive right to use the word "Derma", apart from the mark as shown.
a Moisturizing Skin Lotion
003 — Class 3 includes mainly items designed for cleaning, deodorizing, and other sanitary products made primarily for use on or for humans.
Non-Final Action Mailed
Correspondence Received In Law Office
Letter of Suspension Mailed


text:
MMNZ moves into third place for financial year
MMNZ's momentum continues through to its ninth year of consecutive growth, with third spot in the market for FY18 and 12,954 sales representing 8.4% market share – a 0.9% increase over the previous financial year.
This milestone comes less than 12 months after the company announced its "ambitious" goal of attaining 10% market share – a goal the company and its 56-strong dealer network are working hard to achieve.
"This outcome is testament to the ongoing contribution of our entire team and outstanding dealer network, who continue to surpass our best performance year after year," said MMNZ Head of Marketing and Corporate Affairs Reece Congdon.
"We have enjoyed phenomenal success in recent years and continue to strive for sustained growth and greater market share, through a dynamic vehicle range and industry-leading customer service."
Propelled by Triton
Underpinning MMNZ's impressive results is the Mitsubishi Triton, which keeps smashing its own records and boasted its biggest-ever sales month to round out the financial year. With 594 units sold in March, Triton out-muscled Toyota Hilux for the second time in three months. Overall, 5,200 Tritons were sold in FY18, up from 4,277 the previous year.
"Triton was the fastest-growing mainstream ute even before the new-look model landed, and we've only seen that trend accelerate as more and more Kiwis recognise the quality and value on offer," said Congdon. "Seeing Triton occupying territory long held by the likes of Hilux shows that we're heading in the right direction.
"Performance and safety upgrades delivered at a sharp price make Triton more compelling than ever before – and we're pleased to see customers taking advantage of this."
Strength in depth
"While Triton is our current star performer, we recognise the importance of providing a dynamic range that reflects Kiwis' diverse and changing lifestyles," said Congdon.
A perennial favourite, Outlander also enjoyed healthy sales across the 2018 financial year with 2,570 registrations.
Its hybrid electric cousin, Outlander PHEV – NZ's leading plug-in hybrid SUV – enjoyed a massive 36% increase in registrations from 268 to 365. This was boosted by the release of the new 19MY Outlander PHEV in August, which led to a record monthly sales figure in September, and tipped sales over the 1,000 mark since the model's original release in 2014.
ASX continued strongly with 2,578 registrations, and Kiwis will soon be able to get behind the wheel of the new 2020 ASX, which has undergone a major overhaul.
"With a suite of new products on the cards this year, we look forward to further evolving our high-performing line-up in the coming months. Watch this space!" said Congdon.
Video: See Triton in action here
CablePrice to raise the bar for FUSO South Island service


We spend a lot of time planning. We even make contingency plans for what to do if the main plan goes wrong. But what if the plan goes right, and we still fail? This is the my most dreaded kind of failure, because it tricks you into thinking that you're in control and that you're succeeding. In other words, it inhibits learning. My worst failures have all been of this kind, and learning to avoid them has been a constant struggle.
Start a company with a compelling long-term vision. Don't get distracted by trying to flip it. Instead, try and build a company that will matter on the scale of the next century. Aim to become the "next AOL or Microsoft" not a niche player.
Raise sufficient capital to have an extended runway from experienced smart money investors with deep pockets who are prepared to make follow-on investments.
Hire the absolute best and the brightest, true experts in their fields, who in turn can hire the smartest people possible to staff their departments. Insist on the incredibly high-IQ employees and hold them to incredibly high standards.
Bring in an expert CEO with outstanding business credentials and startup experience to focus on relentless execution.
Build a truly mainstream product. Focus on quality. Ship it when it's done, not a moment before. Insist on high levels of usability, UI design, and polish. Conduct constant focus groups and usability tests.
Build a world-class technology platform, with patent-pending algorithms and the ability to scale to millions of simultaneous users.
Launch with a PR blitz, including mentions in major mainstream publications. Build the product in stealth mode to build buzz for the eventual launch.
I had the privilege, and the misfortune, to be involved with a startup that executed this plan flawlessly. It took years, tens of millions of dollars, and the efforts of hundreds of talented people to pull it off. And here's the amazing thing about this plan: it actually worked. I think we accomplished every one of those bullet points. Check. Mission accomplished.
Only this company was a colossal failure. It never generated positive returns for its investors, and most of its employees walked away dejected. What went wrong?
We know what customers want. By hiring experts, conducting lots of focus groups, and executing to a detailed plan, the company became deluded that it knew what customers wanted. I remember vividly a scene at a board meeting, where the company was celebrating a major milestone. The whole company and board play-tested the product to see its new features first hand. Everyone had fun; the product worked. But that was two full years before any customers were allowed to use it. Nobody even asked the question: why not ship this now? It was considered naive that the "next AOL" would ship a product that wasn't ready for prime time. Stealth is a customer-free zone. All of the efforts to create buzz, keep competitors in the dark, and launch with a bang had the direct effect of starving the company for much-needed feedback.
We can accurately predict the future. Even though some aspects of the product were eventually vindicated as good ones, the underlying architecture suffered from hard-to-change assumptions. After years of engineering effort, changing these assumptions was incredibly hard. Without conscious process design, product development teams turn lines of code written into momentum in a certain direction. Even a great architecture becomes inflexible. This is why agility is such a prized quality in product development.
We can skip the chasm. As far as I know, there are no products that are immune from the technology life cycle adoption curve. By insisting on building a product for mainstream customers, the company guaranteed that they would be unhappy with the number and type of customers they got for the first version. Worse was the large staff in departments appropriate to a mainstream-scale product, especially in customer service and QA. The passionate early adopters who flocked to the product at its launch could not sustain this outsized burn rate.
We can capitalize on new customers. As with many Silicon Valley failures, a flawless PR launch turned into a flawed customer acquisition strategy. The first version product wasn't easy enough to use, install, and pay for. It also had hardware requirements that excluded lots of normal people. Millions of people flocked to the website, but the company could only successfully monetize early adopters. As a result, the incredible launch was mostly wasted.
We know what quality means. All of the effort invested in quality, polish, stability and usability turned out to be for nothing. Although the product was superior to its competitors in many ways, it was missing key features that were critical for the kinds of customers who never got to participate in the company's focus groups (or were represented on its massive QA staff). Worse, many of the wrong assumptions built into the technical architecture meant that, in the real world outside the testing lab, the product's stability was nothing to write home about. So despite the millions invested in quality, the end result for most customers was no better than the sloppy beta-type offerings of competitors.
Advancing the plan is progress. This is the most devastating thing about achieving a failure: while in the midst of it, you think you're making progress. This company had disciplined schedules, milestones, employee evaluations, and a culture of execution. When schedules were missed, people were held accountable. Unfortunately, there was no corresponding discipline of evaluating the quality of the plan itself. As the company built infrastructure and added features, the team celebrated these accomplishments. Departments were built and were even metrics-driven. But there was no feedback loop to help the company find the right metrics to focus on.
These shadow beliefs have a common theme: a lack of reality checks. In my experience, great startups require humility, not in the personal sense, but in the organizational capacity to emphasize learning. A good learning feedback loop trumps even the best execution of a linear plan. And what happened with this ill-fated company? Although it failed, many of the smart people involved have accomplished great things. I know of at least five former employees that went on to become startup founders. They all got a tremendous first-hand lesson in achieving a failure, all on someone else's dime (well, millions of dimes). As we move into a new economic climate, it's my hope that our industry will stop this expensive kind of learning and start building lean startups instead.
The interesting thing about an analysis like this is that it seems obvious in retrospect. A lot of people say that they know that they don't know what customers want. And yet, if you go back and look at the key elements of the plan, many of them are in subtle conflict with the shadow beliefs. Understanding that tension requires a lot of reflection and a good teacher. I myself didn't understand it until I had the opportunity to view that failure through the lens of the customer development theory. I had a big advantage, because Steve Blank, the father of customer development, got to see the failure up close and personal too as an investor and board member. A much less painful way to learn the lesson is read his book: The Four Steps to the Epiphany.
In preparing for the strategy series panel this week, I have been doing some thinking about costs. Fundamentally, lean startups do more with less, because they systematically find and eliminate waste that slows down value creation. Sounds a little abstract, though, doesn't it? I want to talk specifics, and when you come right down to it, most technology startups don't have a very interesting cost structure. Almost all of it is in one giant fixed-cost bucket: salaries. And all of that cost was caused by one activity: hiring.
Hiring is no different from any other company process. I've written previously about how to conduct a good interview, how to build a process to assess fit, and, most importantly, how to do root cause analysis to continuously improve. But hiring does have some special challenges, and today I want to talk about the one that drives almost all of the cost (and most of the mistakes): deciding when and how to hire new people.
In the startups I've been involved with, there are few mistakes I regret more than hiring too many people too soon. It's one of the hardest things to see while it's happening, and it's one of the hardest mistakes to undo, because of the human and emotional costs of layoffs. Much of what I have found effective is counter-intuitive, because it requires investing more effort in each hire - all in the name of efficiency. This can be especially challenging for HR professionals who measure their success based on the number of jobs they fill. This is another sub-optimization caused by incentivizing the wrong metric.
We should begin by clearing up one common misconception: that hiring more people means you can create more value faster. This is a variant of the time-quality-money fallacy, and it is not necessarily true. There are two complicating factors. One, which is described in great detail in the Mythical Man-Month (in finding that link, I discovered that today is coincidentally the exact 11th anniversary of my first purchasing that book: Jan 19, 1998), is that as you add people to a team or project, there is an increase in communications overhead that makes everyone slightly less productive. Second, a lot of work that you do is actually not value-creating - it's waste. Hiring people to do more of that kind of work can actually slow down your whole company. In fact, unless you are adding capacity to a bottleneck in your development process, you probably should not be hiring at all. For more detail on this second point, I recommend The Goal: A Process of Ongoing Improvement.
Lean startups vs lean companies.
Let's start with deciding when to add a new job to the payroll. Here's my suggestion: don't hire for any job unless you have tried, and failed, to do it yourself. There are lots of bottlenecks in any company, but only a few of them actually are on the critical path of a startup's success. For example, let's say you don't have an operations team, and so you're still getting paged late at night when servers crash. Is it time to make your first operations hire? That depends. If you're coming in to work groggy and therefore are not spending time with customers, I'm willing to bet it is. But if it's just an inconvenience, then you should focus on figuring out how to mitigate the pain rather than hire to alleviate it.
The main drawback of this approach is that most people in most startups are already too busy. As a mentor of mine always says, "Startups don't starve, they drown." If you're already too busy, how can you afford to take on yet another job? Wouldn't it be faster to just hire a new person and delegate to them? Not in my experience. If you hire a smart, competent person, they will inevitably find ways to be productive and keep busy. But you still won't know if the work they are doing is on the critical path. They may be dong good work, but you must be able to evaluate its contribution to the company's overall success to know if you've made a hiring mistake or not. If you've done the job yourself, you'll know that it's important and you'll know what success looks like. Oftentimes, in my experience, you'll realize that you don't need to hire for it at all.
Insisting that someone inside the company take on every new job has other benefits, too. It's a way of making necessity the mother of invention, and taking advantage of your limited resources to help the company decide not to do things it doesn't need to do. This tool is often hidden in plain sight. I didn't truly appreciate its power until I saw how larger startups can lose it if they're not careful. Having too few people forces companies to focus on working smarter and eliminating unnecessary projects.
The person will fail. This may seem wasteful, but it's actually very valuable. Having a star performer attempt it will give the expert you eventually hire built-in credibility. You'll also have someone on staff who understands the problem, and can help the newcomer get integrated into the team faster.
The person will succeed, and it will matter. In this case, you now have an expert on staff already. This gives you the option to still hire an true expert, or to back-fill the person who has taken on the new job. In fact, in many situations, you'll actually find that the job is not as big as you thought, and you don't need to hire anybody. Or the person you get to do it will know how to invest in infrastructure that makes one of their many jobs automatic - this is one of the advantages of hiring smart people and building a culture of continuous improvement.
The person will succeed, and it won't matter. This is surprisingly common, and is the greatest savings of all. In many situations, people invest experts with wished-for magic powers, thinking they will "solve all our problems" even when that's not realistic. By having an in-house person succeed, you can evaluate whether having an expert on staff is really shortening the critical path of your organization's success. If not, you can avoid making the hire with confidence.
Returning to our example of the beleaguered founder who still has the pager, before hiring an operations guy, try promoting someone from within to take on the job. If you find yourself now spending time with customers, learning and guiding the learning of your whole company, you were probably right that the pager was getting in the way. But, if you find yourself getting caught up in some other distraction, and not really adding value, then the pager was a red herring. You need to get your priorities straight and, until you do, you probably may as well carry the pager too.
Once they've decided to make a hire, startups should specialize in hiring candidates who are not actively looking for a job. This requires dramatically more work than hiring active candidates, but it usually generates positive returns.
The best candidates are those you (or someone on your team) have worked with before. Hiring them has substantial benefits over strangers: lower risk (because you know their strengths and weaknesses ahead of time), faster team integration (because they know someone already and that person can mentor them), and lower communication overhead (because they are more likely to speak and undersatnd a common language).
Most companies I work with think they are already pursuing these already-known passive candidates. I disagree. I am willing to bet that, right now, you can think of at least one person who is not working at your company who is an absolute star at what they do. Even if you have a referral bonus program, even if you've talked to that person about your company, and even if you've sent a recruiter to call her, I bet you could do more. Ask yourself this question: have you really made that person an offer they can't refuse? No Godfather-type violence is required. Telling someone "I really believe you can change the course of my company's life, and I'm willing to do whatever it takes to get you on board" is surprisingly powerful. Every person who you could make that offer to but haven't is a lost opportunity. Multiply that across everyone in your organization, and every superstar they know, and that's a huge potential pool of talent.
Hiring well requires a lot of introspection in order to do it well. You have to really understand your company and what it needs. You need to be able to communicate the value your company creates to others. And you need to be able to ask yourself the tough questions to continue to refine your hiring process as you scale. But in lean times like these, I don't see any real alternative.
When I first learned to program on the web, Perl + CGI was the dominant platform. But by the time I was building my first websites for commercial use, PHP had taken over. Since then, PHP (as part of the LAMP stack) has really been the dominant development platform, at least in the free software and startup worlds. Through my platform choices, I have forced many people to learn PHP and to work with it on a regular basis. Some of them are probably still cursing my name, because - let's face it - PHP can be pretty painful. As a language, it's inelegant. Its object-orientation support is "much improved" - which is another way of saying it's been horrendous for a long time. Writing unit tests or mock objects in PHP is an exercise in constant frustration.
And yet I keep returning to PHP as a development platform, as have most of my fellow startup CTOs. This post is about why.
Let's start with some circular reasoning. The number one reason I keep coming back to PHP is that it has overwhelming community support. I've written elsewhere that success in creating a platform is "becoming a function not of the size and resources of the company that builds it, but of the size of the community that supports it." When we started IMVU in 2004, we could rely on a staggering amount of open source software that jumpstarted our initial product offering. From e-commerce to blogs to photo galleries, we benefited from tens of thousands of lines of code that had already been battle-tested. Add onto that the incredible amounts of infrastructure code that we reused, and we were able to bring our product to market months earlier.
But that just begs the question: why does PHP have the most thriving community? It's an example of an information cascade - as PHP started to pull ahead of the platform pack, more and more people started working on it, increasing the size of the community and therefore making it more likely that even more people would choose it.
Speed of iteration, thanks to reload-pages-every-time. CGI scripts had notoriously bad performance. That's because for every page request the web server had to spawn a new interpreter process, load the script, and return the output across process boundaries. So when people started using Apache's module system to build better web application platforms, it was a natural that they'd try to make the system more efficient. Take mod_perl, for example. In that system, the first time you loaded a script to handle a page, the whole script (as well as associated data) were kept resident in memory. The next time you needed to handle that page, you could take advantage of caching for excellent performance. There was only one real disadvantage: when the script source code changed, you needed to restart apache so that it could reload. This sounds like a good trade-off, but it turned out to be a classic sub-optimization.
Memory-resident code made it slightly slower to iterate on scripts. Every change required a server restart. Even on a single server, those extra few seconds between iterations is costly. Writing code with PHP, even though the language is crufty, feels fast, because of the tight write-test-debug loop. Plus, with memory-resident code, it's pretty easy to forget which version of the code is actually running at any given time. The stuff in memory is invisible - you can't double check it. As a result, you have to be a lot more careful.
This feature also supported multi-user environments much better. You could give someone a directory on your server as effectively a simple sandbox. You didn't need to worry about them breaking your server configuration or restarting it while you were in the middle of something important. This made it easier for ISP's to offer PHP hosting on shared servers, too. All of which meant it has always been exceptionally easy to get started with PHP. And when considering a new language or platform, the getting-started barrier is probably the single most important factor.
Direct mapping of outputs to inputs: URL's to files, code and presentation intermixing. PHP has a number of other seeming defects that make it easy to understand what's happening in a PHP application. This allows new people to get integrated into an existing PHP project faster. For example, I have repeatedly taught PHP to complete novices in several companies, including people who had never before programmed at all.
Almost every PHP-based website is burdened with ugly URLs that contain the name of the file that implements each page. This is considered bad practice, because URLs are supposed to be about resources (meaning the content of a given page), not implementation. In theory, you should be able to completely change platforms, languages, and servers and not have to change your URLs. However this approach, while elegant, has a major drawback: it requires non-trivial understanding to figure out where to find the code for a given page. Just consider one way this is commonly done: having a table of regular expressions somewhere that maps URLs to pages. This sounds simple, but in order to use it everyone on your team has to: 1) know where to find the list of mappings and 2) be able to read regular expressions correctly. Every other system I've seen has some drawback like this. PHP has no such compunction: the name and location of the file are hanging out in the open, for everyone (including your teammates) to see.
And then let's consider what happens when you get to the implementation file tiself. PHP encourages one of the worst programming heresies of all: intermixing code and presentation logic in a giant mish-mash. If you're emitting HTML, as 99% of all PHP apps are, it's just so damn convenient to throw in PHP tags along with your layout tags, all inline on the page. In many ways, this is a maintainability nightmare, but it has a compensating benefit. In most cases, simple changes are simple to make. At IMVU, when we'd hire a new engineer, we could get them to ship code to production on their first day, even if they had never programmed in PHP before. That's simply impossible on most platforms. That benefit carries over through the whole life of a project. The vast majority of features are actually only a few lines of code. All the difficulty and effort is in finding the right place to put them. PHP's transparency makes that easier, encouraging more experimentation and fine-tuning.
All of which leads to a non-intuitive conclusion. PHP shines on one of the most important criteria for platform selection: readability. Yes, you heard me right. Even though PHP's syntax is an inelegant beast, the overall platform is impressively readable.
Incoherent (but huge) standard library. These days, successful programming is as much about processing data as creating algorithms. To be a good data-processing language, you need a large standard library. PHP has always scored well on this count, with lots of support for database drivers, URL parsing, HTTP fetching, regular expressions - you name it. And this all came bundled up in another bad practice: a big monolithic interpreter. For most of its existence, PHP didn't have a standard package-distribution system or very good module support. As a result, important features that were used widely almost had to be bundled into the interpreter itself. Although this was annoying for sysadmins, security consultants, and language purists (and for those who had proprietary modules that couldn't be bundled), it was a huge boon for developers. It meant that the PHP brand stood for the same set of tools always and everywhere. If someone offers you a library or script, it's a huge benefit to know that it will run in your environment, without having to worry about dependencies, which leads to a lot more code sharing and code reuse.
Bad OOP support. PHP began, as many scripting languages do, with pretty primitive language features. It was especially criticized for its lack of object orientated programming support. Although recent versions have added robust objects, inheritance, and interfaces, for most of its life PHP's objects were little more than decorated dictionaries. This is another feature that makes language purists cringe, but was key to PHP's success.
One of the overriding benefits of OOP is encapsulation: the ability to take a chunk of code and data and put them behind an interface. At the cost of a little extra indirection, you can organize your code around a series of long-lived objects, each of whom communicates with the other objects in simple, easy-to-understand ways.
In practice, though, this extra indirection imposes a steep penalty in transparency. Most PHP scripts are not long-lived, meaning that every object has to be constructed, used, and disposed for every request. And most PHP servers are run in a stateless mode, delegating storage to other processes like memcached and MySQL. So, in many cases, there's not much readability benefit to constructing an object, when all it is is a lightweight wrapper for external data access methods. A "module" of related functions does the job just as well, and is a lot easier to find when you're trying to understand how an application works. This is yet another way that PHP supports non-programmers well.
There's another big benefit: one of the major strengths of the web is that it auto-encapsulates code behind URLs. That's part of its magic, and PHP takes advantage of it. Everything is request-oriented, short-lived, and stateless. A PHP script is like an object itself, encapsulating a bit of functionality behind an interface defined by HTTP. It's one of the most effective paradigms for software devlopment in history. The platforms that win on the web are those that mirror its fundamental structure, not those that try to morph it into a more traditional "elegant" shape.
...that you could get smarter programmers to work on a Python project than you could to work on a Java project.
I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.
Which makes them exactly the kind of programmers companies should want to hire. Hence what, for lack of a better name, I'll call the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it.
As always, Paul is right. So, given that PHP is so popular, you might think it wouldn't be a great choice for companies that are trying to hire great programmers. Given that startups depend on superstars to survive, why stick with PHP? In my role as a CTO, I've always tried to choose the right tool for the right job. The IMVU downloadable client, just to name one example, is written primarily in python. This let us hire extremely high-caliber programmers to work on it. You might then assume that our backend was written in mod_python. But it's not.
When simple things are simple, and hard things are possible, great people can take it from there. So here's to the team that built PHP. Thank you.
Google revolutionized advertising by popularizing pay-per-click. This model has not translated well to the world of social networking, because customers of social networks engage sites in a different way than customers of search engines. The difference is intent: when you're searching for a specific topic, ads have a chance to fulfill your interest in that topic. Social network page views are much more likely to be internally focused; ads are more of a distraction.
Because social networks have generated staggering quantities of traffic without generating as much economic value from traditional advertising models, there's a big opportunity to buy traffic on a new model. Starting with Facebook's developer program, social networks are all jumping on the apps bandwagon. Those apps are generating even more page views, making it quite affordable to buy application installs (which is a cost-per-action ad that requires the user to install the app before the action is considered complete). These cost-per-install ads are a reasonable way to jumpstart traffic to a new app, which is what they've been used for so far. But I think there is a much more interesting way to use the model, and that's what I want to talk about today.
If you ask an expert in Facebook apps to come help build yours, you'll usually hear the same advice: build your app for virality. That's sensible advice; most people who have made a business on Facebook rely on the viral driver of growth. Those who have tried to build apps that exist just as glorified landing pages or marketing channels have generally failed. So why buy advertising on a cost-per-install basis? If you have a virally-growing app, you don't need the extra installs. And if your app is designed to drive traffic to some off-network site or product, the cost is usually prohibitive, because the traffic in your app doesn't convert any better than a traditional CPM or CPC-based ad anywhere else on the network.
As a result, CPI advertising is incredibly cheap. I have seen plenty of situations where CPI rates are as low as $0.25 to $1.00, and plenty of situations where you'd pay that much just for a click to your traditional landing pages.
The unexplored value of CPI ads is this: social networking apps give you the opportunity to practice advanced marketing techniques like true one-to-one marketing or permission marketing. When someone clicks on one of your traditional CPC or CPM ads, what do you know about them? You know the content of the ad, so you know a little bit about what they're interested in. Other than that, you know their IP address, maybe their browser version or what country they are in. In other words, not very much. That's why so much of traditional CPC marketing is focused on optimizing landing pages and registration forms.
By contrast, look at what it means to have someone install your Facebook app. Again, you know they have some level of interest in your ad. You already have an authenticated login. You know the person's age, gender, where they went to school, who their friends are, what their interests are. And, most importantly, you have several reliable communciation channels to talk to them including including email, profile notifications, feed items and status messages.
Imagine the kind of impact you could have with a potential customer if you didn't have to waste any energy at all on convincing them to invite their friends. You can actually communicate with them instead, learning more about them, getting better at serving their needs. If you have an e-commerce product, for example, you could try using the app to offer specialized product offers or to tune your recommendations. If you follow Seth Godin's original permission marketing concept, you could offer your customers entries in a contest in exchange for learning more about your products. You could find out what products your customer already uses, and find out when they run out, need to refill, are ready to switch, or it's time to upgrade.
Think of all the money car companies spend advertising to people who are not at all thinking of buying a car, just to reach the handful who are. What if, instead, you could self-select as someone who is thinking of getting a new car, and have the car company work with you to research and select the best option, instead of spamming you with ads all the time?
The specific form will depend on the kind of product or service you want to sell. But the general principle is to frame your marketing on social networks as an exchange of value, played in rounds. As the customer gives you a little of what you want, you give them a little of what they want. If you have the patience to walk down that path, you can convert prospects into customers for life. From their point of view, buying your product gives them not just the product itself, but membership in an exclusive club where they can get the inside scoop on what you're thinking and doing. Wouldn't you rather relate to customers in that frame of mind than on TV or in a banner ad? And, as a customer, wouldn't you rather be treated that way?
For me, there were plenty of surprises in the survey I conducted a few weeks ago. One of them was that multiple readers suggested holding "office hours" Q&A sessions in the Bay Area. I'm not quite ready to put out a shingle and take over my neighborhood Starbucks, but I have accepted two invitations to speak in a similar format in the coming weeks. So, for those of you in the neighborhood, feel free to bring your questions to either event. There are no canned presentations, so you can come set the agenda.
The first event is January 21, and is being put on by Dealmaker Media as part of their Strategy Series events: In the Trenches: Cutting Costs in a Tight Economy. The format is Q&A around a conference table with four "speakers" and a moderator. One of the other speakers is someone I know well: Seth Sternberg, founder of Meebo. He's a very smart guy who, as a Sequoia portfolio CEO, can tell you all about the "RIP good times" strategy.
If you're interested, you need to register by 3pm on the 21st (Dealmaker events almost always sell out).
If you want your Lessons Learned completely unfiltered, but need food to help you stomach it, February office hours may be for you. This time, the event is courtesy of Bootstrappers Breakfast. We'll be at Hobbee's in Palo Alto on February 6. This event is for entrepreneurs only, and they ask that you register in advance.
For those of you in the Bay Area, I hope you'll come and bring tough questions. If you do come, be sure to say hello and identify yourself as a reader. For those of you not nearby, feel free to ask your questions in the comments. I'll try and do a virtual office hours sometime if you're interested.
The most important aspect of a scalable web architecture is data partitioning. Most components in a modern data center are completely stateless, meaning they just do batches of work that is handed to them, but don't store any data long-term. This is true of most web application servers, caches like memcached, and all of the network infrastructure that connects them. Data storage is becoming a specialized function, delegated most often to relational databases. This makes sense, because stateless servers are easiest to scale - you just keep adding more. Since they don't store anything, failures are easy to handle too - just take it out of rotation.
Stateful servers require more careful attention. If you are storing all of your data in a relational database, and the load on that database exceeds its capacity, there is no automatic solution that allows you to simply add more hardware and scale up. (One day, there will be, but that's for another post). In the meantime, most websites are building their own scalable clusters using sharding.
The idea behind sharding is simple: split the data between multiple machines, and have a way to make sure that you always access data from the right place. For example, consider this simple scheme. Imagine you want to store data about customers, each of whom has "last name" field in your database. You could create 26 identical databases, and assign each of them a letter of the alphabet. Then, whenever you want to look up data about John Smith, you first connect to the "S" database, and then fetch the data you want. All of the sudden, your single database solution just got twenty-six times more capacity added to it.
Devotees of sharding will already be groaning, because this is a bad idea. The problem should be familiar to anyone who plays Scrabble: not all letter are equally likely to be used as the first letter of someone's name. The shards for S and R will be heavily loaded, but the shards for Q, X, and Z will probably be idle.
Vertcal partitioning. In this scheme, all of the data related to a specific feature of a product are stored on the same machines. For example, Friendster was famously vertically partitioned at one time in its growth curve. A different cluster of machines served each of Profiles, Messages, Testimonials, etc.
Key-based partitioning. In this scheme, you use part of the data itself to do the partitioning. The "letters of the alphabet" scheme I presented earlier is one (bad) example of this type. More common is to use a one-way hashing algorithm to map the data to be accessed to one of the shards that store it. Certain data types present natural hashes as well: for numeric keys, you can take the key mod N, where N is the number of shards; dates are easily partitioned by time interval, etc.
Directory-based partitioning. This scheme maintains a lookup table somewhere in the cluster, that simply keeps track of which data is stored on which shard. This has two major drawbacks: the central directory can become a single point of failure, and there is a performance cost for having to consult the directory ever time you want to access data anywhere in the cluster.
So far, this is just a summary of what all of us who have attempted to build web-scale architectures considers obvious. For a good in-depth look at each partitioning scheme, I recommend Scalability Strategies Primer: Database Sharding.
To support a single partitioning scheme is easy, especially if you design for it from the start. But startups rarely have either luxury. It's almost impossible to know ahead of time what kind of data partition makes the most sense for any particular part of your application. It also doesn't make sense to design your app for scalability from the start, since you may have to create many iterations before you find a version that requires any scalability at all. Even worse, it's a rare app that requires only one kind of data partitioning.
The solution is to build an architecture that works for the startup condition. To me, the optimal architecture is one that serves four goals simultaneously. I'll talk about those goals, and then propose a system that I believe serves them well.
The ability to handle increased capacity incrementally, by adding proportional amounts of new hardware. This is the main reason most people undertake sharding in the first place. Note that most key-based partitioning systems do badly on this criteria. Most key-hashing schemes have some breaking point where, if you add just one more shard, you have to re-hash all of the data (imagine having to add a 27th database server to the alphabet-hashing scheme discussed above).
Incremental and proportional software complexity. As you increase the amount of data partitioning, application code gets more complex. Just to cite one common example, when all of your data resides on a single shard, you can run complex joins against it. If that same data is partitioned, you need to process the data in other ways. Just as we want to be able to make proportional investments in hardware to handle increased load, a good architecture allows us to make proportionally-sized changes to the code. We want to avoid anything that requires a massive rewrite just to change how data is partitioned.
Support multiple sharding schemes. Log-based data is often optimally stored in date-based partitions. Customer data is normally partitioned according to customer id. What about log data about customers? A good architecture allows us to use the right tool for the job, or even combine tools as necessary.
Easy to understand. Some sharding schemes are themselves hard to follow, or require you to write code that is hard to read. Especially as teams grow, a good scheme can be undone by programmers who use it wrong. It's unrealistic to expect everyone on the team to understand scalability in detail. Instead, a good architecture has clear rules that allow them to do the right thing without having to think too hard about it.
With those criteria in mind, let me propose a solution that has served me well in several startups. First, I'll describe how it works, and then I'll lay out how to build it incrementally.
All of the complexity of determining which shard you need to use (which we'll get to in a moment) is hidden behind that simple API. Once a shard-lookup decision is made, there's no additional overhead; your application is talking directly to the right database.
At the expense of some additional parsing overhead in your data-access layer, you get additional metadata associated with every query in your application. You may start out using this data only for sharding, but you may find it has other benefits as well. For example, you might notice that caching gets a lot easier if you have good metadat about which queries are associated with the same entity. It's a very readable approach, and it makes it easy to change the sharding for a query without having to change a lot of intervening function signatures (since the shard info is carried by the statement that's already passed through).
The scheme part of the shard URL can allow you to use multiple shard-storage types. For example, in one system I built using this technique, the scheme specified the name of the ADODB driver to use for accessing that database.
You can even do more complex schemes, like having groups of IDs all map to the same URL in a bucket system, although I recommend keeping it simple whenever possible.
If you have a solid caching system in your cluster, like memcached, the overhead of a system like this is really quite small. The mappings never change (unless you build a data migration tool, in which case they change rarely) and so are easy to cache. Using memcached's multiget, which allows the fetching of many keys in parallel, I have written code to aggregate all the shard lookups for a given page and prefetch them, reducing the overhead even further.
The actual directory itself is straightforward. You need to store two kinds of information. One is a list of all the available shard types, and the machines available to store those types. This information is normally maintained by your operations team. Whenever they want to brng new capacity online, they simply add a row to the appropriate table. The second is the mapping itself. The sharding API follows a simple rule: whenever asked to find the shard for a URL, it either pulls it from the directory or, if it's not there, assigns it to one of the available shards for that entity type. (There's some added complexity as shards get "weighted" for more or less capacity, and for cases where data needs to be moved between shards, but these are not too serious to deal with). I normally recommend you just store this directory on your master database, but you could use a standalone vertical shard (or even a key-based partition!) to store it.
When load on the master DB gets above some agreed-upon threshold, we measure which tables and queries are causing the most read/write traffic.
We pick one such query, and decide to shard it. We always try to find queries that are causng load but are also relatively self-contained. For example, most applications usually have a number of highly-trafficked tables that are rarely joined with any others; these are excellent candidates for early sharding.
Once we've picked a query, we have to identify all of the tables it touches, and all of the queries that access those tables. The better your internal API's and data architecture, the easier this step will be. But even for total spaghetti code, this doesn't take more than a few hours.
We change the code to have all of the queries identified in step 3 tagged with the apporpriate entity URL that they affect. If we've uncovered an entity type that's not previously been sharded, we'll have to add some new shards and shard-types to the central directory.
Since there is already some data about these entities on the master DB, we need to migrate it to the new, sharded, locations we picked in step 4. I won't go into detail about how to do this data migration in this post; coordinating it with the code changes in step 4 is the hard part. You can read a little about it in my post on Just-in-Time Scalability.
Each time we need to add capacity to our application, we go back to step 1. At IMVU, during our steepest growth curves, we'd have to do this exercise every week. But we could do the whole thing in a week, and be ready to do it again the next week. Each time, our application got a little more complex, and a little more scalable. But at not time did we have to take the site down for a rewrite.
If your experience is anything like mine, you may be surprised at how much cruft remains on your master database. One advantage of this system is that it doesn't require you to add scalability to any piece of data that is seldom accessed. All that random junk sitting in your master databsase's scheme may make you feel bad, but it's actually not causing any harm. Only the parts of your app that need to scale will get the sharding treatment.
I've used this setup successfully, and have recommended it to many of the startups I advise. I much prefer it to the more complex solutions I've seen and worked with over the years, even though I recognize it has some drawbacks compared to those other systems. I'd really like to hear your feedback. Go ahead, poke holes in the design. Let me know the use cases that I've overlooked. And most of all, share with all of us what's worked for you.
At IMVU, we were terrified by how early we shipped (and charged for) our first product. Frankly, we were embarrassed by how many bugs, crashes, and defects it had. We were even more embarrassed by the pathetically small number of customers we had, and the pathetically low amount of revenue we had earned so far. It wasn't uncommon for advisors and even potential investors to ask, when we would show our results, "are there some 000's missing from this graph?" We'd always cringe as we admitted that, no, we really only had a few thousand customers and a few thousand dollars in monthly revenue.
Despite that, we were able to establish credibility, because we used those early numbers to demonstrate that our customers were getting real value from our product and, more importantly, that we understood how to build more of it.
You can read the article to find out why.