text:
Prosaurolophus blackfeetensis es una especie del género extinto Prosaurolophus ("primera cresta") de dinosaurio ornitópodo hadrosáurido, que vivió a finales del período Cretácico, hace aproximadamente 75 millones de años, en el Campaniense, en lo que hoy es Norteamérica.

Siendo la segunda especie del género, P. blackfeetensis, está basada en un espécimen del Museo de las Rocosas, MOR 454, que fue descrito Jack Horner. Este espécimen, y los restos de otros tres individuos, fueron encontrados en el Condado Glacier de Montana. En este caso, los fósiles fueron encontrados en un lecho de huesos de Prosaurolophus, que indica que los animales vivieron juntos por lo menos un cierto tiempo. El lecho se interpreta como reflejo de un grupo de animales que se juntaron cerca de una fuente de agua durante una sequía. Aunque muchas especies de hadrosáuridos se han consolidado, esta especie es considerada como válida en la revisiones más recientes. Horner diferenciaba las dos especies por los detalles de la cresta. Interpretó que P. blackfeetensis tiene una cara más alta y empinada que P. maximus, con la cresta migrando hacia atrás, hacia los ojos, durante el crecimiento. Estudios más recientes han considerado las diferencias como insuficientes para sustentar dos especies.

Referencias

Véase también
 Prosaurolophus

Enlaces externos

 Prosaurolophus en Thescelosaurus! dentro de Hadrosaurinae.
 Prosaurolophus en la página del Natural History Museum

Saurolophinae
Dinosaurios del Cretácico
Dinosaurios de América del Norte


Quinton's best 100% FREE Christian dating site. Meet thousands of Christian singles in Quinton with Mingle2's free Christian personal ads and chat rooms. Our network of Christian men and women in Quinton is the perfect place to make Christian friends or find a Christian boyfriend or girlfriend in Quinton. Join the hundreds of single Alabama Christians already online finding love and friendship with single Christians in Quinton!
I'm recently divorce. I have three wonderful children one of which lives with me.I'm easy going, fun loving and looking for someone to share in some great fun.


text:
ypsirocks.com
Hidden Cam Gay Porno
If you own the copyright on a particular photo or video, email me at [email protected] Join our Facebook group: Germany is one of those Countries who do not. Gay webcam xxx. the best, tokens start at . The vast majority of mobile phones in use are camera phones. SUBSCRIBE for more!
In the United States, video voyeurism is an offense in twelve states[32] and may require the convicted person to register as a sex offender. FaptoGayPorn has collected the best gay porn sites and divided into categories, they have been tested against phishing and spyware. Please turn it on and reload the page by hitting CTRL+R.
However, there are some trends regarding who is likely to engage in voyeurism. By using our services, you agree to our use of cookies. Little to no research has been done into the demographics of voyeurs. This selection presents several different diaries divided by categories.
There have been multiple instances of successful treatment of voyeurism through putting patients on fluoxetine and treating their voyeuristic behaviour as a compulsion.
Spy On This Uncut Man Peeing
Link to this video Embed code Embed size 400x300 640x481 960x721 Custom: You further acknowledge and represent that you understand and accept responsibility for your own actions, and release the owners and operators of this Web site and its service provider(s) from all liability. If all of these conditions apply to you, you are given permission to ENTER. Voyeurism is the sexual interest in or practice of watching other people engaged in intimate behaviors, such as undressing, sexual activity, or other actions usually considered to be of a private nature.
If you experience any difficulties, please try disabling Adblock. This website is and will always be FREE. You can click these links to clear your history or disable it. When a review was published in 1976 there were only 15 available resources. Offering exclusive content not available on RedTube. This is based on the idea that countries with pornography censorship have high amounts of voyeurism. The defendant pleaded guilty.
This is a reversal from the historical perspective, moving from a term which describes a specific population in detail, to one which describes the general population vaguely.
Are you a loyal Jubilee fan?
This may have been difficult to find in the past, but thanks to Gay Tube you will no longer have to go far to find the hottest homoerotic porno videos especially when these hot studs are bumming.
There was no indication that the footage had been shown to anyone else or distributed in any way.
Jonathan - https: Amazing secret camera zoophilia porn moments with a guy getting fucked by horse in the ass and mouth for a complete amateur zoo play. In the light novel series Baka to Test to Shōkanjū, Kōta Tsuchiya is subject to voyeurism, explaining why he is referred to as "Voyeur". Adblock has been known to cause issues with site functionality. Ultimately, we aim to inspire people to LIVE DEEPER. One of my good drinking buddies confessed to me a while back that although he had only been interested in the fairer sex for his adult life to date, that he had an abiding curiosity to be with a guy.
By accessing the materials on this Web site, you acknowledge and represent that you will not redistribute this material to anyone, nor will you permit any minor or any person who might find such material personally offensive to see this material. Help us caption & translate this video! This menu's updates are based on your activity. These skin flick movies feature hot gay men of all shapes, cock sizes, and looks involved in Sapphic sex. These statistics apply only to those who qualify as voyeurs under the definition of the DSM, and not the broader modern concept of voyeurism as discussed earlier in this article. Some consumer digital cameras are now so small that in previous decades they would have qualified as "spy cameras", and digital cameras of twenty megapixels or more are now being embedded in some mobile camera phones. Live gay cam sites - free gay cams & gay webcams. It features all of the hot homoerotic men that you fantasize about.
For brands interested in partnering with Jubilee, email us: You must be logged in to post comments. We create shareable human-centric videos that create connection, challenge assumptions, and touch the soul. Lovemap theory suggests that voyeurism exists because looking at naked others shifts from an ancillary sexual behaviour, to a primary sexual act.
A darksome Hiding Place
That you are familiar with your local community standards and that the sexually-explicit materials which you have chosen to view and/or download from this Website are well within the contemporary community standards of acceptance and tolerance of your community for sexually-explicit materials of that nature. There has also been success in treating voyeurism through using treatment methods for obsessive compulsive disorder. There is free hot stud porn for everyone here! Psychoanalytic, group psychotherapy and shock aversion approaches have all been attempted with limited success. Enjoy as many of the free twink XXX videos that you want to see and enjoy here. In common law countries it is only a crime if made so by legislation. Voyeurism is not a crime at common law. Please note that all images and videos on this site reflect persons who are at least 18 years or older.
As we all love to spy on young twinks when they are doing their secret business I don't wat to. Some countries, such as South Korea and Japan, require all camera phones sold in their country to make a clearly audible sound whenever a picture is being taken. Follow us on Discord and Twitter, use the bar on the left to share or tell your friends about this big gay porn list. This nice assortment of manly videos features all of the hardcore ass fucking you could ever want to masturbate to especially when you have a huge basket of juicy hunks to play with! By using this website, you agree with our use of cookies. All depictions on this Web site are for fantasy entertainment only, read below for complete disclosure.
[2] However, that term is usually applied to a male who observes somebody secretly and, generally, not in a public space.
I claim no credit for the pictures or videos posted on this blog. Please read and comply with the following conditions before you continue: A male voyeur is commonly labelled as "Peeping Tom" or a "Jags", a term which originates from the Lady Godiva legend. We appreciate your help. In the United Kingdom, for example, non-consensual voyeurism became a criminal offence on May 1, 2020. In that case, in 1950, the Supreme Court of Canada held that courts could not criminalise voyeurism by classifying it as a breach of the peace and that Parliament would have to specifically outlaw it. Cookies help us deliver our services.
Some features of this page will not work correctly. Thank you for your vote! The video has been added to your member zone favourites. JavaScript is required for this website. One of the few studies deals with a case study of a woman who also had schizophrenia. You must be 18 years of age and have the legal right to possess adult material in your community.
You can contact us, Add Site, or request a new category. If any of these conditions do not apply to you, you are not given permission to enter and view the contents of this Website and you should now LEAVE. You have Adblock enabled. Historically voyeurism has been treated in a variety of ways. Javascript is turned off in your browser.
You always have the option to delete your Tweet location history. Research shows that, like almost all paraphilias, voyeurism is more common in men than in women. Become a male cam model, guys who are not gay, gay-for-pay performers, bisexual boys, men who are curious about gay sex. In another English case in 2020, R v Wilkins (2020),[29][30] a man who filmed his intercourse with five of his lovers for his own private viewing was sentenced to eight months in prison and ordered to sign onto the Sex Offender Register for ten years. The data is only saved locally (on your computer) and never transferred to us. In 2020, the Indian Parliament made amendments to the Indian Penal Code, introducing voyeurism as a criminal offence. The material appearing in this blog was all found on the internet and assumed to be in the public domain. You have already voted for this video!
Caught My Roommate jerking off
Secret photography by law enforcement authorities is called surveillance and is not considered to be voyeurism, though it may be unlawful or regulated in some countries. Gay live cam sites, 48 Security Cam of Prison Scenes:. That you are at least 18 years of age or older, and that you are voluntarily choosing to view and access such sexually-explicit images and content for your own personal use. Xvideos uses cookies. Permission to enter this Website and to view and download its contents is strictly limited only to consenting adults who affirm that the following conditions apply:
Criminal voyeurism statutes are related to invasion of privacy laws[34] but are specific to unlawful surreptitious surveillance without consent and unlawful recordings including the broadcast, dissemination, publication, or selling of recordings involving places and times when a person has a reasonable expectation of privacy and a reasonable supposition they are not being photographed or filmed by "any mechanical, digital or electronic viewing device, camera or any other instrument capable of recording, storing or transmitting visual images that can be utilised to observe a person. "You are now leaving Pornhub. By choosing to enter this website you are affirming under oath and penalties of perjury pursuant to Title 28 U. Currently, one of the top trending pornstar is Rocco Steele, with 160 videos and a whooping 36. The wonderful thing is that you've got the option to watch these videos in HD to have the full experience you deserve, or for when you've got less time and slow internet, you can simply watch it with the lower quality, which is just as worth it. He's got a really masculine, rugged look with his sharp jaw and full beard.
All depictions on this Web site are for fantasy entertainment only, and do not represent, reflect, document or otherwise memorialize the actual conduct, solicitation, or promotion of any illegal act.
Fedoruk et al.
Although small spy cameras had existed for decades, advances in miniaturisation and electronics since the 1950s have greatly aided the ability to conceal miniature cameras, and the quality and affordability of tiny cameras (often called "spy cameras" or subminiature cameras) has greatly increased.
Please login or signup (free).
The site is designed and intended solely for consenting adults; people who are at least 18 years old (21 years old in Alabama, Mississippi, Nebraska, Wyoming, and any other location where 18 years is not the age of majority) who are interested in and wish to have access to visual images, verbal descriptions, and audio and video sounds of a sexually oriented, sexually explicit erotic nature.
Sexy Blond Str8 Guy with Big Cock Shoots on his face #120 - Amateur, Big Cock, Big Sexy Gay/Gay
You have Adblock enabled. Or even if you've got a partner and want some spice in your lovemaking/hardcore fucking, Porn Hub will never let you down. Are you over eighteen and willing to see adult content? For when you want something personal, there's the option to watch someone strip for you and do anything you want them to on their live cam show. So attending to that morning wood in the morning before anything else can actually prove to be beneficial to you and give you a head start to a great day. If you experience any difficulties, please try disabling Adblock. Regarding WALL POSTS. Sure, having an orgasm at night before sleeping gives you a good night's sleep, but having an orgasm in the morning ensures you'll have a great day and will keep you in a wonderful mood throughout the day.
Actualmente en Colombia. Whether you're on your own and want a little action, Porn Hub is there for you, just a click of a button away. XF escribame si estas en Cali o si tienes algunos consejos de la zona! Do not share them because you'll cause me to be unable to continue uploading. Enjoy privately and leave them where they are.
6 million views. Do NOT continue if: They've got Asian gays getting it on, and if you've ever wondered if the stereotype of Asians having small dicks is true, then allow Porn Hub to answer your curiosity. You can take time out to get to know some of the pornstars to make it easier for you to know which videos you'd like to bookmark.
Adblock has been known to cause issues with site functionality. There are actually real health benefits to having an orgasm, proved by Science. When you're masturbating and you want to get in sync with another dude masturbating, then you can head on over to the Solo Male category, where everyone knows how to satisfy themselves just as good as you would have satisfied them. Everyone enjoys disappearing from the real world for a little while and entering into fantasy land. I get why he's of the top trending; he's sexy as fuck with his huge tattoo covered arms, really thick and muscular thighs, a dick so huge that you're not sure if it could fit inside of you. You wouldn't deprive yourself of food and water, would you? You can take your pick between the thousands of models who are online at the same time, from around the world.
They've got a list of the top trending pornstars, showing how many views they've gotten and having all their videos easily accessible under their name. Si disfrutas mis videos, me alegre! If you enjoy my videos, that's great! Thank you for your understanding.
If you own the rights to any content and would like it removed, please contact us.
A good way to start your day is by attending to your morning wood, giving yourself the pleasure you deserve before you start your day and face reality. It's like entering a gay fantasy land but better because it's not just in your imagination, they've actually got everything you could ever hope for. Anything you imagine, anything you'd like to see gay men do, they've got it all for you. You can filter out from which region you prefer, the language, and even category such as BDSM, Mature, and more. It falls under the same category as needing food and water. You have been automatically moved to theversion of XVideos. They've also got Interracial, which is honestly my favorite. Super affordable at only $9.
Gayrookievideos features amateur adult content and does not knowingly publish any content that may be under copyright.
Busted! 😎 Guys caught fucking @ a hidden spot in the beach! 🏖
They've also got amateurs putting on a show for you, sometimes even better than the professionals. Plus, I'm sure you'd only want the best of the best when watching porn, making sure your orgasm is out of this world. It's healthy to be a little selfish once in a while and focus on yourself. § 1746 and other applicable statutes and laws that all of the following statements are true and correct: Hurry up and visit Porn Hub now! This website contains information, links, images and videos of sexually explicit material (collectively, the "Sexually Explicit Material"). There's something so hot about seeing big black dicks enter small white ass holes, or the other way around. Firstly, having sex or masturbating is something every species need.
Thanks for watching! I know we've all usually watched feet fetish amongst women, but on Porn Hub, they've got sexy feet fetish videos amongst the hot gays. Meet new guys for free!, once I stopped working at the head office of the cam company, I began to take camming more serious. It just looks so taboo and out of this world, making it exciting for my dick. Buddy joined him. You can even search the live gay cams by age, location, and status to find the camera boy you desire.
Peeing And Shaking It @ The Urinals! 💯
When you engage with some of the camera boys, be it twinks, hunks, bears or any other breed of gay type, you are getting a connection. Then stick around, watch, chat, and interact. He was still attracted to women, but guys were just SO sexy.
He kept going, shooting over and over. Unlike other so-called free gay cam sites, we don't ask for any credit card details or even an e-mail address! His rigid cock was as thick as Buddy's, but way longer. Looking for a man with a burly physique and luscious chest and body hair? On to get to take a smile that would have a drop me. 15 best roulette chat sites (talk to strangers), we provide the same basic features with our random video and cam chat rooms options, but on top of that we also provide a text chat choice. BongaCams guys are constantly horny and won't ever say no to anal sex. In less then a minute you could be showing your live cam to thousands of strangers.
They do all the dirty stuff that they do to make money, too. The amount of money you can make varies by website, how much you work, and what your patrons tip you. So did Richie. Gay cam sex girl sobbed, after the woman as i was a job,.
Free Gay Video Chat Without Registration
Free Muscle Gay Male Videos At Boy 18 Tube
Live Sex Chat For Adults Only
GayConnect: Free Gay Chat Rooms & Video Chat
Recorded Webcam Videos And Gay Porn Movies
Hidden Cam In Male Locker Room Gay Porn Videos At Gay0Day
Top Gay Cams: List Of Live Gay Webcam, Popular Gay Chat Sites
Live Gay Webcams Paysites LINKS
Gay Daddy Porn Videos & Mature Gay Sex Movies
Hidden Cam Porno (GAYS) » Best Videos (GAYS) » 1
CAM4: Browser Upgrade
Free Chat Now
Koa Gay Myvidster Cam
Gay Daddy Sex Cams
Sexy Male Cam Models Are Waiting For You At RoyalCams.com
Free Live Gay Cams & Gay Sex Chat Rooms
Gay College Guy
Free Gay Sex Cams And Live Chat – CamVey
Hidden Cam Gay Porn Video
🦸 Andrew Gillum Ig
© ypsirocks.com. All Rights Reserved.

redpajama_set_name: RedPajamaCommonCrawl


A YOUNG GIRL OF THE CANTON SCHWYZ.
THE costume of women and young girls in the Canton of Schwyz, and especially in the chief place of that name, is characterized by a certain degree of stiffness, and approaches the ancient French taste; it is something between the dress of the peasant and the citizen. It follows, too, the caprices of fashion, and is subject to various changes. The ordinary and more or less modern dress of the inhabitants consists at the present time of a black woolen corset, bordered with silken trimmings; a skirt, in part wool, ornamented with blue stripes or flowers, covered with a linen apron of various colors; white cotton stockings; shoes ornamented with little silver buckles.
The hair is gathered into a twist at the back of the head; the principal ornament consists of an original and unique coif, composed of common and coarse laces, rising in two enormous butterfly wings, between which rests a tissue of artificial flowers, intermingled with tinsel, and fastened by a large silver eagle set transversely in the hair.
This headdress, singular as it is, does not fail to be pleasing when it decks the head of some pretty blonde. It is naturally less becoming to ladies of a certain age, when the hair is gray and powdered. Finally, as a mark of feminine piety, girls and young women rarely go forth without holding in the hand a rosary and a book of prayers.
Source: Select historical costumes compiled from the most reliable sources by Henry Hinton. Published: 1868. Publisher: New York Wynkoop & Sherwood.
This entry was posted in 1868, 19th Century, Switzerland, Traditional and tagged Canton of Schwyz, Traditional Switzerland costumes on 4/13/17 by world4.


With Valentines Day quickly approaching I thought I would write a quick and easy list of Valentines gifts for that special lady in your life. Daddy Lamb and I are both rubbish at buying gifts for Valentines so hopefully these lists will give us both the kick up the bum we need to get buying.
All of these gifts are available to buy online so you have plenty of time to get ordering.
First on my list is a Yankee Candle . Find me a girl who doesn't like candles and I'll eat my hat! 😉 Buy for something fruity and sweet and you can't go wrong. Or something fresh and clean for everyday use (I recommend Baby Powder). You might think these candles are a little pricey but they last for ages and the smells are delicious. I promise, she'll love it.
In my opinion you can't have enough perfume. If you are really stuck for ideas, just look at what shes already wearing and either buy that again, or speak to someone at a perfume counter and ask what they would recommend that's similar. Do not try buy her something without knowing what sort of scent she wears. Daddy Lamb made that mistake a few years ago, and I still have the bottle, full and hardly worn. Such a waste of money. FYI my fave is Lancome La Vie Est Belle .
MAC. Buy her MAC . Simple.
You may think it's a bit obvious, but a lady loves flowers. Especially when they come with chocolates and diamonds. Amazon have a huge selection and some even offer free delivery. If she's at work on Valentines Day, why not have them delivered to her at work. You will be sure to pull on those heart strings.
WE LOVE BATHS. Especially if we have young kids and barely time to shower, let alone bath. So buy us some romantic bath bombs and dedicate an evening to pampering. Maybe throw in a glass of bubbly and some chocolate and you will definitely earn some serious hubby points.


text:
Institute Special Report: Surge in Silicon Valley retirements to create labor force challenges
October 13, 2017 – The rapidly aging population will bring a surge of retirements by Silicon Valley workers over the next eight years, creating thousands of job vacancies that will alter the composition of the regional labor force, the Silicon Valley Institute for Regional Studies announced today.
In a special in-depth report on trends in labor force participation, the Institute estimates 300,000 older workers will retire through 2025, generating high-level implications for workforce policy.
"On the positive side for workers there will be numerous job openings at all skill levels," said Stephen Levy, senior economist for the Institute and director of the Center of the Continuing Study of the California Economy. "The challenge for private- and public-sector employers is finding workers with the skills and experience to replace retiring boomers."
Levy prepared the report in partnership with Rachel Massaro, Joint Venture Silicon Valley vice president and senior research associate for the Institute.
The retirement surge is expected to change the composition of job openings in the region by creating a large source of middle-skill/middle-wage jobs across a wide array of occupational categories vital to the region's economy but not necessarily in tech, the report shows.
The surge will occur at time when job growth is expected to continue, albeit at a slower rate than in the booming post-recession recovery period and subsequent high-growth period of 2013-2015. At the same time, the region's birth rate remains relatively low, limiting the number of local youth entering the workforce.
Labor force participation rates for workers ages 55 and over have increased over the past decade, the report data indicates, with older workers remaining in the workforce longer. As of 2016, 42.8 percent of that group were in the workforce, an increase from 38.5 percent in 2007. That compares with 85.4 percent of residents ages 25-54 in the workforce.
Workers ages 55 and older in Silicon Valley, California and throughout the United States are staying in the workforce longer. Compared to the state and nation, Silicon Valley had the highest number of older workers.
The report also noted that many retiring workers have substantial education and experience, particularly in such non-tech occupations as teachers, doctors, nurses, public safety workers, construction occupations and local government. Replacing these workers will pose challenges in both the public and private sectors.
Some 75 percent of the forthcoming job openings in the period between now and 2025 will come from replacing retiring workers or workers who change occupations. Workforce policies will need to focus on replacement needs in addition to new jobs and occupations.
These data do not present a complete picture of workforce trends in Silicon Valley because many workers commute into the region and are not included in the datasets. Expanded public transit is expected to bring even more workers into the region in the future.
About the Silicon Valley Institute for Regional Studies
The Silicon Valley Institute for Regional Studies provides research and analysis on a host of issues facing Silicon Valley's economy and society. The Institute is housed within Joint Venture Silicon Valley. For more information, visit www.siliconvalleyindicators.org.
About Joint Venture Silicon Valley
Established in 1993, Joint Venture provides analysis and action on issues affecting the Silicon Valley economy and quality of life. The organization brings together established and emerging leaders—from business, government, academia, labor and the broader community—to spotlight issues, launch projects and work toward innovative solutions. For more information, visit www.jointventure.org.
institute report


text:
Q: Why does glibc's strlen need to be so complicated to run quickly? I was looking through the strlen code here and I was wondering if the optimizations used in the code are really needed? For example, why wouldn't something like the following work equally good or better?
unsigned long strlen(char s[]) {
    unsigned long i;
    for (i = 0; s[i] != '\0'; i++)
        continue;
    return i;
}

Isn't simpler code better and/or easier for the compiler to optimize?
The code of strlen on the page behind the link looks like this:

/* Copyright (C) 1991, 1993, 1997, 2000, 2003 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Written by Torbjorn Granlund (tege@sics.se),
   with help from Dan Sahlin (dan@sics.se);
   commentary by Jim Blandy (jimb@ai.mit.edu).

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#include <string.h>
#include <stdlib.h>

#undef strlen

/* Return the length of the null-terminated string STR.  Scan for
   the null terminator quickly by testing four bytes at a time.  */
size_t
strlen (str)
     const char *str;
{
  const char *char_ptr;
  const unsigned long int *longword_ptr;
  unsigned long int longword, magic_bits, himagic, lomagic;

  /* Handle the first few characters by reading one character at a time.
     Do this until CHAR_PTR is aligned on a longword boundary.  */
  for (char_ptr = str; ((unsigned long int) char_ptr
            & (sizeof (longword) - 1)) != 0;
       ++char_ptr)
    if (*char_ptr == '\0')
      return char_ptr - str;

  /* All these elucidatory comments refer to 4-byte longwords,
     but the theory applies equally well to 8-byte longwords.  */

  longword_ptr = (unsigned long int *) char_ptr;

  /* Bits 31, 24, 16, and 8 of this number are zero.  Call these bits
     the "holes."  Note that there is a hole just to the left of
     each byte, with an extra at the end:

     bits:  01111110 11111110 11111110 11111111
     bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD

     The 1-bits make sure that carries propagate to the next 0-bit.
     The 0-bits provide holes for carries to fall into.  */
  magic_bits = 0x7efefeffL;
  himagic = 0x80808080L;
  lomagic = 0x01010101L;
  if (sizeof (longword) > 4)
    {
      /* 64-bit version of the magic.  */
      /* Do the shift in two steps to avoid a warning if long has 32 bits.  */
      magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL;
      himagic = ((himagic << 16) << 16) | himagic;
      lomagic = ((lomagic << 16) << 16) | lomagic;
    }
  if (sizeof (longword) > 8)
    abort ();

  /* Instead of the traditional loop which tests each character,
     we will test a longword at a time.  The tricky part is testing
     if *any of the four* bytes in the longword in question are zero.  */
  for (;;)
    {
      /* We tentatively exit the loop if adding MAGIC_BITS to
     LONGWORD fails to change any of the hole bits of LONGWORD.

     1) Is this safe?  Will it catch all the zero bytes?
     Suppose there is a byte with all zeros.  Any carry bits
     propagating from its left will fall into the hole at its
     least significant bit and stop.  Since there will be no
     carry from its most significant bit, the LSB of the
     byte to the left will be unchanged, and the zero will be
     detected.

     2) Is this worthwhile?  Will it ignore everything except
     zero bytes?  Suppose every byte of LONGWORD has a bit set
     somewhere.  There will be a carry into bit 8.  If bit 8
     is set, this will carry into bit 16.  If bit 8 is clear,
     one of bits 9-15 must be set, so there will be a carry
     into bit 16.  Similarly, there will be a carry into bit
     24.  If one of bits 24-30 is set, there will be a carry
     into bit 31, so all of the hole bits will be changed.

     The one misfire occurs when bits 24-30 are clear and bit
     31 is set; in this case, the hole at bit 31 is not
     changed.  If we had access to the processor carry flag,
     we could close this loophole by putting the fourth hole
     at bit 32!

     So it ignores everything except 128's, when they're aligned
     properly.  */

      longword = *longword_ptr++;

      if (
#if 0
      /* Add MAGIC_BITS to LONGWORD.  */
      (((longword + magic_bits)

        /* Set those bits that were unchanged by the addition.  */
        ^ ~longword)

       /* Look at only the hole bits.  If any of the hole bits
          are unchanged, most likely one of the bytes was a
          zero.  */
       & ~magic_bits)
#else
      ((longword - lomagic) & himagic)
#endif
      != 0)
    {
      /* Which of the bytes was the zero?  If none of them were, it was
         a misfire; continue the search.  */

      const char *cp = (const char *) (longword_ptr - 1);

      if (cp[0] == 0)
        return cp - str;
      if (cp[1] == 0)
        return cp - str + 1;
      if (cp[2] == 0)
        return cp - str + 2;
      if (cp[3] == 0)
        return cp - str + 3;
      if (sizeof (longword) > 4)
        {
          if (cp[4] == 0)
        return cp - str + 4;
          if (cp[5] == 0)
        return cp - str + 5;
          if (cp[6] == 0)
        return cp - str + 6;
          if (cp[7] == 0)
        return cp - str + 7;
        }
    }
    }
}
libc_hidden_builtin_def (strlen)

Why does this version run quickly?
Isn't it doing a lot of unnecessary work?

A: It is explained in the comments in the file you linked:
 27 /* Return the length of the null-terminated string STR.  Scan for
 28    the null terminator quickly by testing four bytes at a time.  */

and:
 73   /* Instead of the traditional loop which tests each character,
 74      we will test a longword at a time.  The tricky part is testing
 75      if *any of the four* bytes in the longword in question are zero.  */

In C, it is possible to reason in detail about the efficiency.
It is less efficient to iterate through individual characters looking for a null than it is to test more than one byte at a time, as this code does.
The additional complexity comes from needing to ensure that the string under test is aligned in the right place to start testing more than one byte at a time (along a longword boundary, as described in the comments), and from needing to ensure that the assumptions about the sizes of the datatypes are not violated when the code is used.
In most (but not all) modern software development, this attention to efficiency detail is not necessary, or not worth the cost of extra code complexity.
One place where it does make sense to pay attention to efficiency like this is in standard libraries, like the example you linked.

If you want to read more about word boundaries, see this question, and this excellent wikipedia page

I also think that this answer above is a much clearer and more detailed discussion.

A: In addition to the great answers here, I want to point out that the code linked in the question is for GNU's implementation of strlen.
The OpenBSD implementation of strlen is very similar to the code proposed in the question. The complexity of an implementation is determined by the author.
...
#include <string.h>

size_t
strlen(const char *str)
{
    const char *s;

    for (s = str; *s; ++s)
        ;
    return (s - str);
}

DEF_STRONG(strlen);

EDIT: The OpenBSD code I linked above looks to be a fallback implementation for ISAs that don't have there own asm implementation. There are different implementations of strlen depending on architecture. The code for amd64 strlen, for example, is asm. Similar to PeterCordes' comments/answer pointing out that the non-fallback GNU implementations are asm as well.

A: In short, this is a performance optimization the standard library can do by knowing what compiler it is compiled with - you shouldn't write code like this, unless you are writing a standard library and can depend on a specific compiler. Specifically, it's processing alignment number of bytes at the same time - 4 on 32-bit platforms, 8 on 64-bit platforms. This means it can be 4 or 8 times faster than naïve byte iteration.
To explain how does this work, consider the following image. Assume the 32-bit platform here (4 bytes alignment).

Let's say that the letter "H" of "Hello, world!" string was provided as an argument for strlen. Because the CPU likes having things aligned in memory (ideally, address % sizeof(size_t) == 0), the bytes before the alignment are processed byte-by-byte, using slow method.
Then, for each alignment-sized chunk, by calculating (longbits - 0x01010101) & 0x80808080 != 0 it checks whether any of the bytes within an integer is zero. This calculation has a false positive when at least one of bytes is higher than 0x80, but more often than not it should work. If that's not the case (as it is in yellow area), the length is increased by alignment size.
If any of bytes within an integer turns out to be zero (or 0x81), then the string is checked byte-by-byte to determine the position of zero.
This can make an out-of-bounds access, however because it's within an alignment, it's more likely than not to be fine, memory mapping units usually don't have byte level precision.

A: You want code to be correct, maintainable, and fast. These factors have different importance:
"correct" is absolutely essential.
"maintainable" depends on how much you are going to maintain the code: strlen has been a Standard C library function for over 40 years. It's not going to change. Maintainability is therefore quite unimportant - for this function.
"Fast": In many applications, strcpy, strlen etc. use a significant amount of the execution time. To achieve the same overall speed gain as this complicated, but not very complicated implementation of strlen by improving the compiler would take heroic efforts.
Being fast has another advantage: When programmers find out that calling "strlen" is the fastest method they can measure the number of bytes in a string, they are not tempted anymore to write their own code to make things faster.
So for strlen, speed is much more important, and maintainability much less important, than for most code that you will ever write.
Why must it be so complicated? Say you have a 1,000 byte string. The simple implementation will examine 1,000 bytes. A current implementation would likely examine 64 bit words at a time, which means 125 64-bit or eight-byte words. It might even use vector instructions examining say 32 bytes at a time, which would be even more complicated and even faster. Using vector instructions leads to code that is a bit more complicated but quite straightforward, checking whether one of eight bytes in a 64 bit word is zero requires some clever tricks. So for medium to long strings this code can be expected to be about four times faster. For a function as important as strlen, that's worth writing a more complex function.
PS. The code is not very portable. But it's part of the Standard C library, which is part of the implementation - it need not be portable.
PPS. Someone posted an example where a debugging tool complained about accessing bytes past the end of a string. An implementation can be designed that guarantees the following: If p is a valid pointer to a byte, then any access to a byte in the same aligned block that would be undefined behaviour according to the C standard, will return an unspecified value.
PPPS. Intel has added instructions to their later processors that form a building block for the strstr() function (finding a substring in a string). Their description is mind boggling, but they can make that particular function probably 100 times faster. (Basically, given an array a containing "Hello, world!" and an array b starting with 16 bytes "HelloHelloHelloH" and containing more bytes, it figures out that the string a doesn't occur in b earlier than starting at index 15).

A: Briefly: checking a string byte by byte will potentially be slow on architectures that can fetch larger amounts of data at a time.
If the check for null termination could be done on 32 or 64 bit basis, it reduces the amount of checks the compiler has to perform. That's what the linked code attempts to do, with a specific system in mind. They make assumptions about addressing, alignment, cache use, non-standard compiler setups etc etc.
Reading byte by byte as in your example would be a sensible approach on a 8 bit CPU, or when writing a portable lib written in standard C.
Looking at C standard libs for advise how to write fast/good code isn't a good idea, because it will be non-portable and rely on non-standard assumptions or poorly-defined behavior. If you are a beginner, reading such code will likely be more harmful than educational.

A: You don't need and you should never write code like that - especially if you're not a C compiler / standard library vendor. It is code used to implement strlen with some very questionable speed hacks and assumptions (that are not tested with assertions or mentioned in the comments):

*

*unsigned long is either 4 or 8 bytes

*bytes are 8 bits

*a pointer can be cast to unsigned long long and not uintptr_t

*one can align the pointer simply by checking that the 2 or 3 lowest order bits are zero

*one can access a string as unsigned longs

*one can read past the end of array without any ill effects.

What is more, a good compiler could even replace code written as
size_t stupid_strlen(const char s[]) {
    size_t i;
    for (i=0; s[i] != '\0'; i++)
        ;
    return i;
}

(notice that it has to be a type compatible with size_t) with an inlined version of the compiler builtin strlen, or vectorize the code; but a compiler would be unlikely to be able to optimize the complex version.

The strlen function is described by C11 7.24.6.3 as:

Description

*The strlen function computes the length of the string pointed to by s.

Returns

*The strlen function returns the number of characters that precede the terminating null character.

Now, if the string pointed to by s was in an array of characters just long enough to contain the string and the terminating NUL, the behaviour will be undefined if we access the string past the null terminator, for example in
char *str = "hello world";  // or
char array[] = "hello world";

So really the only way in fully portable / standards compliant C to implement this correctly is the way it is written in your question, except for trivial transformations - you can pretend to be faster by unrolling the loop etc, but it still needs to be done one byte at a time.
(As commenters have pointed out, when strict portability is too much of a burden, taking advantage of reasonable or known-safe assumptions is not always a bad thing.  Especially in code that's part of one specific C implementation.  But you have to understand the rules before knowing how/when you can bend them.)

The linked strlen implementation first checks the bytes individually until the pointer is pointing to the natural 4 or 8 byte alignment boundary of the unsigned long.  The C standard says that accessing a pointer that is not properly aligned has undefined behaviour, so this absolutely has to be done for the next dirty trick to be even dirtier.  (In practice on some CPU architecture other than x86, a misaligned word or doubleword load will fault.  C is not a portable assembly language, but this code is using it that way).  It's also what makes it possible to read past the end of an object without risk of faulting on implementations where memory protection works in aligned blocks (e.g. 4kiB virtual memory pages).
Now comes the dirty part: the code breaks the promise and reads 4 or 8 8-bit bytes at a time (a long  int), and uses a bit trick with unsigned addition to quickly figure out if there were any zero bytes within those 4 or 8 bytes - it uses a specially crafted number to that would cause the carry bit to change bits that are caught by a bit mask.  In essence this would then figure out if any of the 4 or 8 bytes in the mask are zeroes supposedly faster than looping through each of these bytes would. Finally there is a loop at the end to figure out which byte was the first zero, if any, and to return the result.
The biggest problem is that in sizeof (unsigned long) - 1 times out of sizeof (unsigned long) cases it will read past the end of the string - only if the null byte is in the last accessed byte (i.e. in little-endian the most significant, and in big-endian the least significant), does it not access the array out of bounds!

The code, even though used to implement strlen in a C standard library is bad code. It has several implementation-defined and undefined aspects in it and it should not be used anywhere instead of the system-provided strlen - I renamed the function to the_strlen here and added the following main:
int main(void) {
    char buf[12];
    printf("%zu\n", the_strlen(fgets(buf, 12, stdin)));
}

The buffer is carefully sized so that it can hold exactly the hello world string and the terminator. However on my 64-bit processor the unsigned long is 8 bytes, so the access to the latter part would exceed this buffer.
If I now compile with -fsanitize=undefined and -fsanitize=address and run the resulting program, I get:
% ./a.out
hello world
=================================================================
==8355==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffffe63a3f8 at pc 0x55fbec46ab6c bp 0x7ffffe63a350 sp 0x7ffffe63a340
READ of size 8 at 0x7ffffe63a3f8 thread T0
    #0 0x55fbec46ab6b in the_strlen (.../a.out+0x1b6b)
    #1 0x55fbec46b139 in main (.../a.out+0x2139)
    #2 0x7f4f0848fb96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #3 0x55fbec46a949 in _start (.../a.out+0x1949)

Address 0x7ffffe63a3f8 is located in stack of thread T0 at offset 40 in frame
    #0 0x55fbec46b07c in main (.../a.out+0x207c)

  This frame has 1 object(s):
    [32, 44) 'buf' <== Memory access at offset 40 partially overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext
      (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow (.../a.out+0x1b6b) in the_strlen
Shadow bytes around the buggy address:
  0x10007fcbf420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10007fcbf470: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00[04]
  0x10007fcbf480: f2 f2 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf4a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf4b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fcbf4c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==8355==ABORTING

i.e. bad things happened.

A: There's been a lot of (slightly or entirely) wrong guesses in comments about some details / background for this.
You're looking at glibc's optimized C fallback optimized implementation.  (For ISAs that don't have a hand-written asm implementation).  Or an old version of that code, which is still in the glibc source tree.  https://code.woboq.org/userspace/glibc/string/strlen.c.html is a code-browser based on the current glibc git tree.  Apparently it is still used by a few mainstream glibc targets, including MIPS. (Thanks @zwol).
On popular ISAs like x86 and ARM, glibc uses hand-written asm
So the incentive to change anything about this code is lower than you might think.
This bithack code (https://graphics.stanford.edu/~seander/bithacks.html#ZeroInWord) isn't what actually runs on your server/desktop/laptop/smartphone.  It's better than a naive byte-at-a-time loop, but even this bithack is pretty bad compared to efficient asm for modern CPUs (especially x86 where AVX2 SIMD allows checking 32 bytes with a couple instructions, allowing 32 to 64 bytes per clock cycle in the main loop if data is hot in L1d cache on modern CPUs with 2/clock vector load and ALU throughput.  i.e. for medium-sized strings where startup overhead doesn't dominate.)
glibc uses dynamic linking tricks to resolve strlen to an optimal version for your CPU, so even within x86 there's an SSE2 version (16-byte vectors, baseline for x86-64) and an AVX2 version (32-byte vectors).
x86 has efficient data transfer between vector and general-purpose registers, which makes it uniquely(?) good for using SIMD to speed up functions on implicit-length strings where the loop control is data dependent.  pcmpeqb / pmovmskb makes it possible to testing 16 separate bytes at a time.
glibc has an AArch64 version like that using AdvSIMD, and a version for AArch64 CPUs where vector->GP registers stalls the pipeline, so it does actually use this bithack.  But uses count-leading-zeros to find the byte-within-register once it gets a hit, and takes advantage of AArch64's efficient unaligned accesses after checking for page-crossing.
Also related: Why is this code 6.5x slower with optimizations enabled? has some more details about what's fast vs. slow in x86 asm for strlen with a large buffer and a simple asm implementation that might be good for gcc to know how to inline.  (Some gcc versions unwisely inline rep scasb which is very slow, or a 4-byte-at-a-time bithack like this.  So GCC's inline-strlen recipe needs updating or disabling.)
Asm doesn't have C-style "undefined behaviour"; it's safe to access bytes in memory however you like, and an aligned load that includes any valid bytes can't fault.  Memory protection happens with aligned-page granularity; aligned accesses narrower than that can't cross a page boundary.  Is it safe to read past the end of a buffer within the same page on x86 and x64?  The same reasoning applies to the machine-code that this C hack gets compilers to create for a stand-alone non-inline implementation of this function.
When a compiler emits code to call an unknown non-inline function, it has to assume that function modifies any/all global variables and any memory it might possibly have a pointer to.  i.e. everything except locals that haven't had their address escape have to be in sync in memory across the call.  This applies to functions written in asm, obviously, but also to library functions.  If you don't enable link-time optimization, it even applies to separate translation units (source files).

Why this is safe as part of glibc but not otherwise.
The most important factor is that this strlen can't inline into anything else.  It's not safe for that; it contains strict-aliasing UB (reading char data through an unsigned long*).  char* is allowed to alias anything else but the reverse is not true.
This is a library function for an ahead-of-time compiled library (glibc).  It won't get inlined with link-time-optimization into callers.  This means it just has to compile to safe machine code for a stand-alone version of strlen.  It doesn't have to be portable / safe C.
The GNU C library only has to compile with GCC.  Apparently it's not supported to compile it with clang or ICC, even though they support GNU extensions.  GCC is an ahead-of-time compilers that turn a C source file into an object file of machine code.  Not an interpreter, so unless it inlines at compile time, bytes in memory are just bytes in memory.  i.e. strict-aliasing UB isn't dangerous when the accesses with different types happen in different functions that don't inline into each other.
Remember that strlen's behaviour is defined by the ISO C standard.  That function name specifically is part of the implementation.  Compilers like GCC even treat the name as a built-in function unless you use -fno-builtin-strlen, so strlen("foo") can be a compile-time constant 3.  The definition in the library is only used when gcc decides to actually emit a call to it instead of inlining its own recipe or something.
When UB isn't visible to the compiler at compile time, you get sane machine code.  The machine code has to work for the no-UB case, and even if you wanted to, there's no way for the asm to detect what types the caller used to put data into the pointed-to memory.
Glibc is compiled to a stand-alone static or dynamic library that can't inline with link-time optimization.  glibc's build scripts don't create "fat" static libraries containing machine code + gcc GIMPLE internal representation for link-time optimization when inlining into a program.  (i.e. libc.a won't participate in -flto link-time optimization into the main program.)  Building glibc that way would be potentially unsafe on targets that actually use this .c.
In fact as @zwol comments, LTO can't be used when building glibc itself, because of "brittle" code like this which could break if inlining between glibc source files was possible.  (There are some internal uses of strlen, e.g. maybe as part of the printf implementation)

This strlen makes some assumptions:

*

*CHAR_BIT is a multiple of 8.  True on all GNU systems.  POSIX 2001 even guarantees CHAR_BIT == 8.  (This looks safe for systems with CHAR_BIT= 16 or 32, like some DSPs; the unaligned-prologue loop will always run 0 iterations if sizeof(long) = sizeof(char) = 1 because every pointer is always aligned and p & sizeof(long)-1 is always zero.)  But if you had a non-ASCII character set where chars are 9 or 12 bits wide, 0x8080... is the wrong pattern.

*(maybe) unsigned long is 4 or 8 bytes.  Or maybe it would actually work for any size of unsigned long up to 8, and it uses an assert() to check for that.

Those two aren't possible UB, they're just non-portability to some C implementations.  This code is (or was) part of the C implementation on platforms where it does work, so that's fine.
The next assumption is potential C UB:

*

*An aligned load that contains any valid bytes can't fault, and is safe as long as you ignore the bytes outside the object you actually want.  (True in asm on every GNU systems, and on all normal CPUs because memory protection happens with aligned-page granularity.  Is it safe to read past the end of a buffer within the same page on x86 and x64? safe in C when the UB isn't visible at compile time.  Without inlining, this is the case here.  The compiler can't prove that reading past the first 0 is UB; it could be a C char[] array containing {1,2,0,3} for example)

That last point is what makes it safe to read past the end of a C object here.  That is pretty much safe even when inlining with current compilers because I think they don't currently treat that implying a path of execution is unreachable.  But anyway, the strict aliasing is already a showstopper if you ever let this inline.
Then you'd have problems like the Linux kernel's old unsafe memcpy CPP macro that used pointer-casting to unsigned long (gcc, strict-aliasing, and horror stories).  (Modern Linux compiles with -fno-strict-aliasing instead of being careful with may_alias attributes.)
This strlen dates back to the era when you could get away with stuff like that in general; it used to be pretty much safe before GCC3, even without an "only when not inlining" caveat.

UB that's only visible when looking across call/ret boundaries can't hurt us.  (e.g. calling this on a char buf[] instead of on an array of unsigned long[] cast to a const char*).  Once the machine code is set in stone, it's just dealing with bytes in memory.  A non-inline function call has to assume that the callee reads any/all memory.

Writing this safely, without strict-aliasing UB
The GCC type attribute may_alias gives a type the same alias-anything treatment as char*.  (Suggested by @KonradBorowsk).  GCC headers currently use it for x86 SIMD vector types like __m128i so you can always safely do _mm_loadu_si128( (__m128i*)foo ).  (See Is `reinterpret_cast`ing between hardware SIMD vector pointer and the corresponding type an undefined behavior? for more details about what this does and doesn't mean.)
strlen(const char *char_ptr)
{
  typedef unsigned long __attribute__((may_alias)) aliasing_ulong;

  // handle unaligned startup somehow, e.g. check for page crossing then check an unaligned word
  // else check single bytes until an alignment boundary.
  aliasing_ulong *longword_ptr = (aliasing_ulong *)char_ptr;

  for (;;) {
     // alignment still required, but can safely alias anything including a char[]
     unsigned long ulong = *longword_ptr++;

     ...
  }
}

You can use aligned(1) to express a type with alignof(T) = 1.
typedef unsigned long __attribute__((may_alias, aligned(1))) unaligned_aliasing_ulong;.  This could be useful for the unaligned-startup part of strlen, if you don't just do char-at-a-time until the first alignment boundary.  (The main loop needs to be aligned so you don't fault if the terminator is right before an unmapped page.)
A portable way to express an aliasing load in ISO is with memcpy, which modern compilers do know how to inline as a single load instruction.  e.g.
   unsigned long longword;
   memcpy(&longword, char_ptr, sizeof(longword));
   char_ptr += sizeof(longword);

This also works for unaligned loads because memcpy works as-if by char-at-a-time access.  But in practice modern compilers understand memcpy very well.
The danger here is that if GCC doesn't know for sure that char_ptr is word-aligned, it won't inline it on some platforms that might not support unaligned loads in asm.  e.g. MIPS before MIPS64r6, or older ARM.  If you got an actual function call to memcpy just to load a word (and leave it in other memory), that would be a disaster.  GCC can sometimes see when code aligns a pointer.  Or after the char-at-a-time loop that reaches a ulong boundary you could use
p = __builtin_assume_aligned(p, sizeof(unsigned long));
This doesn't avoid the read-past-the-object possible UB, but with current GCC that's not dangerous in practice.

Why hand-optimized C source is necessary: current compilers aren't good enough
Hand-optimized asm can be even better when you want every last drop of performance for a widely-used standard library function.  Especially for something like memcpy, but also strlen.  In this case it wouldn't be much easier to use C with x86 intrinsics to take advantage of SSE2.
But here we're just talking about a naive vs. bithack C version without any ISA-specific features.
(I think we can take it as a given that strlen is widely enough used that making it run as fast as possible is important.  So the question becomes whether we can get efficient machine code from simpler source.  No, we can't.)
Current GCC and clang are not capable of auto-vectorizing loops where the iteration count isn't known ahead of the first iteration.  (e.g. it has to be possible to check if the loop will run at least 16 iterations before running the first iteration.)  e.g. autovectorizing memcpy is possible (explicit-length buffer) but not strcpy or strlen (implicit-length string), given current compilers.
That includes search loops, or any other loop with a data-dependent if()break as well as a counter.
ICC (Intel's compiler for x86) can auto-vectorize some search loops, but still only makes naive byte-at-a-time asm for a simple / naive C strlen like OpenBSD's libc uses. (Godbolt).  (From @Peske's answer).
A hand-optimized libc strlen is necessary for performance with current compilers.  Going 1 byte at a time (with unrolling maybe 2 bytes per cycle on wide superscalar CPUs) is pathetic when main memory can keep up with about 8 bytes per cycle, and L1d cache can deliver 16 to 64 per cycle.  (2x 32-byte loads per cycle on modern mainstream x86 CPUs since Haswell and Ryzen.  Not counting AVX512 which can reduce clock speeds just for using 512-bit vectors; which is why glibc probably isn't in a hurry to add an AVX512 version.  Although with 256-bit vectors, AVX512VL + BW masked compare into a mask and ktest or kortest could make strlen more hyperthreading friendly by reducing its uops / iteration.)
I'm including non-x86 here, that's the "16 bytes".  e.g. most AArch64 CPUs can do at least that, I think, and some certainly more.  And some have enough execution throughput for strlen to keep up with that load bandwidth.
Of course programs that work with large strings should usually keep track of lengths to avoid having to redo finding the length of implicit-length C strings very often.  But short to medium length performance still benefits from hand-written implementations, and I'm sure some programs do end up using strlen on medium-length strings.

A:
why wouldn't something like the following work equally good or better?

// OP's code - what is needed to portably function correctly?
unsigned long strlen(char s[]) {
    unsigned long i;
    for (i = 0; s[i] != '\0'; i++)
        continue;
    return i;
}

OP's code has functional errors.
Easy enough to amend though.

In writing portable code, care is needed to first get the function correct and then look to performance improvements.
Even the very simple, seemingly correct code can be functionally flawed.
Type
A string length is in the range of size_t which may differ from unsigned long.  Problem with function signature as does not match size_t (*f)() = strlen.  Problem with uncommon platforms where ULONG_MAX < SIZE_MAX and the string length is enormous.
const
s should be const char *.
Non-2's complement
(This concern affects a vanishingly small number of processors today so is really only of pedantic concern.  Non-2's complement will likely get spec'd out in the next C (C23?)).
The s[i] != '\0' may trigger on  -0 when char is signed and not 2's complement. It should not. str...() function as if the characters are accessed as unsigned char.

For all functions in this subclause, each character shall be interpreted as if it had the type unsigned char (and therefore every possible object representation is valid and has a different value).

To repair these aspects of OP's simple code
size_t strlen(const char *s) {
    size_t i;
    for (i = 0; ((const unsigned char *)s)[i] != '\0'; i++)
        continue;
    return i;
}

Now armed with a better, portable strlen() candidate, look to comparing it to the "complicated" alternatives.

A: One important thing not mentioned by the other answers is that the FSF is very cautious about ensuring that proprietary code does not make it into GNU projects. In the GNU Coding Standards under Referring to Proprietary Programs, there is a warning about organising your implementation in a way that it cannot be confused with existing proprietary code:

Don't in any circumstances refer to Unix source code for or during your work on GNU! (Or to any other proprietary programs.)
If you have a vague recollection of the internals of a Unix program, this does not absolutely mean you can't write an imitation of it, but do try to organize the imitation internally along different lines, because this is likely to make the details of the Unix version irrelevant and dissimilar to your results.
For example, Unix utilities were generally optimized to minimize memory use; if you go for speed instead, your program will be very different.

(Emphasis mine.)

redpajama_set_name: RedPajamaStackExchange


Lots of people in the hobbyist community building RepRap-type 3D printers and other kinds of hobbyist-scale CNC tools often seem to use these switchmode mains-input power bricks designed for OEM integration into another chassis, commonly made by names such as MeanWell, Shenzhen Keyington (kytet) etc.
Since some people sometimes have questions about how to correctly and safely wire up the 110-240VAC line input cable to these kinds of power supplies, and since I was working with one recently, I thought I'd take a few photos to provide an informative guide for beginners.
Here are the materials I'm going to use to get started – the SMPS module itself, a chassis-mount snap-in IEC mains socket with 4.8mm male spade terminals, some spade and fork crimp terminals, some heavy-duty cable for the high-current DC output, and some cable for the mains AC side.
For mains AC wiring, you really want to choose some wire that has copper conductors of an appropriate thickness for the currents involved, insulation of an appropriate thickness, insulation that is intact and not damaged, and a standard color code for the AC mains active, neutral and earth.
The easiest thing to do is to simply start off with a little bit (30cm or so is plenty) of 3-core mains AC flex cable. You could even find some discarded appliance on the roadside, or something, and cut off the cable to get a perfectly usable bit of flex for free. You can see a relevant example in the above photo.
You can just strip off all the outer insulation off the piece of flex and keep the three internal wires, as shown. When cutting the outer sheath, remember to be careful not to damage or cut into the insulation on the inner wires. You want the insulation on these wires intact and not damaged, so check and make sure it's not cut or damaged. Now you've got three perfectly suitable wires ready to go, with standard color coding, appropriate insulation thickness and appropriate copper thickness for mains AC use.
This is just a random photo I've pulled from somewhere on the Web of somebody's RepRap build. Here you can see that every one of the wires – the AC active and the neutral as well as the DC output rail and the DC ground – is the same color. The mains earth does not even appear to be connected, I'm not sure.
Don't do this. Use appropriate, standard colors for all the wires – brown and blue (or black and white if you're in the US, I guess) for the AC active and neutral and striped yellow/green for the mains earth. I really think a black wire should be used for the DC ground, although it might be best to try a different color if you're using US-standard AC wiring with a black active wire. Red, or some other "warm" color other than brown, is best for the +24V or +12V DC output rail, I think.
Now, I'll start by stripping the wires and crimping on three 4.8mm female spade terminals. When you strip the wire, be careful not to cut off the copper strands inside, as this compromises the integrity, and the current-carrying capacity, of the conductor.
When working with crimp terminals of this sort, it's really important to use a good ratchet-type crimping tool. Trying to do a half-assed job crimping the terminals with an inappropriate crimping tool, or a vice, or pliers or something like that is just going to waste your time on an unreliable, and maybe even dangerous, result.
Now we can just plug the wires in to the IEC socket. Yes, in theory, you can just solder the wires onto the IEC socket, but I prefer not to. If you choose to go down that path, though, you do need to make a good, reliable solder joint reasonably quickly. If you're too slow and heat up the socket too much, the plastic can start to melt and the metal pins in the socket can start to move.
Remember that the 3 terminals on the back of the IEC socket are labelled with their functions – L, N and E moulded into the plastic next to each pin meaning live (or active), neutral and earth respectively. The earth pin is the one in the middle. L, N and E correspond to the brown, blue and green/striped wire respectively, assuming you're working with the same set of standard colors we use in Australia.
You can just stick the wires under the screw terminals like this. Many people do so, but again, for a production build (as distinct from quick testing) I'd personally prefer not to do it. If you do go down this route, though, remember that a wire wrapped clockwise around a screw terminal will be pulled inwards and fastened snugly against the screw terminal as you tighten up the screw, whilst a wire wrapped anticlockwise around a screw terminal will be pushed outwards and loosened a little bit away from the screw as the screw is tightened. Therefore the wire should go in clockwise.
Here's some random photo I've found from somebody on the Web again… note that the active and neutral are apparently transposed here. Don't do this.
Personally, I think it's a much better course of action, for increased security and reliability in the connection, to crimp a few 3.7mm fork terminals onto the wiring loom, like I have done here, and attach these to the power supply.
You can also put a rubber boot over the back of the IEC connector, if you want, to cover its terminals. These come in two different sizes, for male and female chassis-mount IEC sockets. However, if you're mounting the IEC connector on an enclosed, covered chassis where it's not accessible, I really don't think it's needed.
I also popped a couple of appropriately large fork terminals (the yellow ones, with a cable entry suited to this thick cable) on the cable I'm running for the DC side. Very thick cable is used here to minimize voltage drop at high currents. This can then be terminated onto the DC output terminals on the supply.
After everything here is done remember to flip down and close the screw cover, which stops screws and other debris from falling and hitting the exposed 240VAC screw terminals.
Now… let's plug it in for a test. It works!
Alternatively, you can use a chassis-mount IEC socket like this one, which incorporates a built-in IEC socket, fuseholder and switch in one integrated package. When using a module like this, you'll need to run one active wire (either with spade terminals or directly soldered on) from the fuseholder terminal to one pole of the switch (the other side of the fuseholder is pre-connected to the active pin of the IEC socket) and a neutral wire from the neutral pin of the IEC socket to the other pole of the switch.
The earth wire to the SMPS just comes directly from the earth pin on the IEC connector, and the active and neutral wires going to the SMPS are connected to the active and neutral poles on the "switched side" of the switch. OK, so it's a little clumsy to explain in words, but if you're working with a device of this sort and you're not sure, feel free to comment here or ask me.
Now you're ready to probably consider mounting the IEC socket on a chassis so that the mains supply wiring is completely enclosed and protected… or maybe even using a 3D printer to print a plastic cover that mounts on the end of the power supply chassis, completely enclosing the wiring. We might look at this next time, but not right now.
Another thing of note is that many of the cheap supplies out there don't actually have a screw-cover over the power in/out screw terminals. IMO that's quite an annoyance in regards to keeping these things safe.
Thanks for this. I'm just starting a Prusa i3 build and opted for the IEC with fuse and switch that you pictured last. Seemed the 'tidiest' way to do it. The one I bought (via eBay) has its own mounting screws as well which will hopefully help with getting it fixed into a printed box for the back of the power supply.
Hi , I've got a socket like in the last photo (with the switch and fuse), Have you got a photo of the back to better show how to wire it up ? Good article, thanks for posting.


text:
The MD
What Media Says
Why Shemford?
Steps for Admission
Franchise Benefits
Franchise Requirements
Franchise Faq
Evaluation Form
Upgrade School
Nursery School Franchise
Franchise Costs For Starting a Play way School
Minimum Requirement of land for a Nursery-Class 12th School (Day School)
There are 4 major categories that require different land areas for opening a school. They are as follows:
In metropolitan cities, with a population exceeding 25 lakhs, the land should not be less than 1 acre.
The minimum land area required for the schools in Delhi is 1 acre and for NCRs is 5 acres.
In hilly areas, the land should not be less than one acre. The norms as prescribed by the Planning Commission shall be applicable for determining the eligibility in hilly areas.
In all other places, the school must possess at least about 2 acres of land.
The land requirement has been finalized considering the fact that a school must have enough space for an adequate building and space for proper playgrounds for imparting physical health education and conducting games.
In case of lease, it has to be for a minimum period of 30 years and in favour of the Society/School by a registered deed.
Land Area for Residential School
A Residential School must possess about 15-20 acres of land. Such a school is to be affiliated with CBSE Board. These schools are truly global in approach and can be setup in India or Abroad.
Apart from the land, you need to invest on the construction, the cost of which may be ranging from Rs 700 per sq. ft. onwards (including furniture and interiors), depending on the fee that is being targeted by the school. You can always seek to secure bank funding for a majority of this amount. Banks may provide you a one-year moratorium, which will help you comfortably focus on the school. Within a year, you will be settled & able to start paying the bank installments easily. Hence, essentially to start a school, you need the required land and some working capital too.
State Select State Andaman and Nicobar Islands Andhra Pradesh Arunachal Pradesh Assam Bihar Chandigarh Chhattisgarh Dadar and Nagar Haveli Daman and Diu Delhi Goa Gujarat Haryana Himachal Pradesh International Jammu and Kashmir Jharkhand Karnataka Kerala Lakshadeep Madhya Pradesh Maharashtra Manipur Meghalaya Mizoram Nagaland Odisha Pondicherry Punjab Rajasthan Sikkim Tamil Nadu Telengana Tripura Uttar Pradesh Uttarakhand West Bengal
Enquire For Select Admissions Franchise
SHEMFORD Futuristic Schools
614A, DMall, Netaji Subhash Place,
Pitampura, Delhi-110034
franchise@shemford.com
Kids good table manners
Teaching kids good table manners is one of the most important tasks that parents have to carry out. It's...
shemfordfuturisticschool Do you wonder if your child is going...
Copyright @2019, SHEMFORD FUTURISTIC SCHOOLS


I'm an artist, author, and leadership coach. My work is inspired by my adventures as a working professional seeking to express my creative and analytical sides, as well as my search for creativity, purpose, and peace.
Painting in my studio in San Francisco's Mission District. Photo by Stef Etow.
After ten years of not making art, I started making art again while working full-time in Silicon Valley. I created a drawing a day for over seventy days–on nights, weekends, and early mornings. I share my story and art from this project in my book, Something More: A Working Professional's Search for Creativity, Purpose, and Peace.
As I've moved through my education and career, I've always felt that there's "something more" to life. It's an ongoing challenge for me to balance the practical with the creative and the purposeful.
Bernadette Cay is an artist, author, and leadership coach. After Stanford, she launched products Google and Twitter. She recently completed her first solo exhibition at the SFMOMA Artists Gallery. This body of work follows her 2017 book Something More: A Working Professional's Search for Creativity, Purpose, and Peace, a finalist for Best Overall Design in Non-Fiction in the 2018 Next Generation Indie Book Awards. Bernadette lives in Brooklyn and online at bernadettecay.com.


A beautiful, modern display on wood grain adds a nice design touch to any home. A thoughtful gift for newlyweds, housewarming or the holidays! This solid hardwood wall clock is offered in both Cherry and Maple options.
All clocks come complete with quartz movements and all hardware.
The hands are reversible for either black or white, so no option choice is required upon checkout.
Requires one AA battery to operate (not included).
Hands are shipped uninstalled to prevent damage.
Wall Clock - "Now Is The Time"


text:
package test.testng249;

import org.testng.Assert;
import org.testng.ITestNGListener;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import org.testng.annotations.Test;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlInclude;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

import test.SimpleBaseTest;

import java.util.Arrays;
import java.util.Collections;

public class VerifyTest extends SimpleBaseTest {

  @Test
  public void verify() {
    XmlSuite suite = new XmlSuite();
    suite.setName("Suite");

    XmlTest test = new XmlTest(suite);
    test.setName("Test");
    XmlClass c1 = new XmlClass(B.class);
    c1.setIncludedMethods(Collections.singletonList(new XmlInclude("b")));
    XmlClass c2 = new XmlClass(Base.class);
    c2.setIncludedMethods(Collections.singletonList(new XmlInclude("b")));
    test.setXmlClasses(Arrays.asList(c1, c2));

    TestNG tng = new TestNG();
    tng.setVerbose(0);
    tng.setXmlSuites(Collections.singletonList(suite));
    TestListenerAdapter tla = new TestListenerAdapter();
    tng.addListener((ITestNGListener) tla);
    tng.run();

    Assert.assertEquals(tla.getPassedTests().size(), 2);
  }
}

redpajama_set_name: RedPajamaGithub


Terrific home in Need of TLC to shine again. NO ELECTRICITY - BRING FLASHLIGHT! Please submit all offers with proof of funds and/or financial information sheet, pre-approval letters, etc.. Disclosures online and seller prefers Counsel Title in Lanham. If you submit an offer, please forward to co-lister also. All offers,if any due by noon, Tuesday, March 27, 2018.
I am interested in 1909 U Place SE, Washington, DC 20020.


text:
Fernando Alonso to race for McLaren at the 2019 Indy 500
owenmahamilton
Post subject: Fernando Alonso to race for McLaren at the 2019 Indy 500
No indication as to what engine he will be using.
https://www.motorsport.com/indycar/news ... 9/3211661/
JN23
Post subject: Re: Fernando Alonso to race for McLaren at the 2019 Indy 500
When Alonso did this in 2017 was it broadcast on sky in the UK? I seem to remember watching some of it but can't remember where
JN23 wrote:
All Indycar races were (and currently still are) on BT Sport or ESPN but I think that is changing for 2019.
It was on BT Sport I think or one of the ESPN's anyway. I think it'll be the same again but the TV rights are about to come up again soon I think but not sure, I read on another forum Alonso had bought the rights for Spain but some of the Spanish rags are the worst out there like Diario Gol and Marca so I dunno if that story came from there or not.
Engine wise I think Andretti tweeted something that made it look like they'll be involved with Honda but I also read links to Ed Carpenter Racing which is Chevy so still not confirmed.
The rumour a few weeks ago before we had any news was no full season but a 500 appearance with McLaren-Andretti Honda so it's 2 out of 3 so far with no full season and the 500 so I'll lean toward Honda.
"Clark came through at the end of the first lap so far ahead that we in the pits were convinced that the rest of the field must have been wiped out in an accident."
-Eddie Dennis, describing the dominance of Jim Clark in the Lotus 49 at Spa 1967
Just saw elsewhere Andretti deleted the tweet that said it'll be similar to 2017.
Charles LeBrad
Now we just need JPM to enter Le Mans next year in a competitive car, win it, and beat Nando to the triple crown
wire2004
A youtuber by the name of david land. who is pretty knowledgeable and keeps up to date with the ins and outs of Indy car had mentioned that Michael andretti maybe a little annoyed and may not link up with McLaren because when andretti sent the tweet out a couple months ago about the probable link up with McLaren and Alonso. This was catagotically denied at the time. Which got Michael's back up. It was around the time when Michael said they had till i thinn it was the end of September too make a decision.
Alonso and McLaren have also tiddled off Honda alot. And from what I can make of things. Honda's USA branch wants too link up with Alonso and McLaren. But McLaren and Alonso have burned and mud slinged Honda so much in Japan with the formula 1 engine. That the Japanese seem to be getting involved in not allowing it too happen.
Maybe McLaren can link up with chevy. And maybe work together to build a McLaren built engine for 2020.
I can't remember if they work with Honda. But I did also here McLaren working with Schmitt racing as well. But i am thinking that's a collaboration between Schmitt and andretti.
bradtheboywonder wrote:
That would mean that Alonso wouldn't win the Indy 500 next year and Jpm win or man's next year.
owenmahamilton wrote:
I've heard it will be with Chevrolet, the Honda bridge is well and truly burned.
dompclarke
wire2004 wrote:
With McLaren going to Indy on their own as a one off (for now) I wouldn't be putting money on them winning it whoever you stick in the car! If they were competing as a rebranded Andretti like last time I'd think differently however
Interesting, Mclaren (As United Autosports) and Andretti are co-owners of a V8 supercar team, along with Walkinshaw.
If there's any tensions, the next team meeting could be awkward
Forgive me. I thought Tom walkinshaw died like 5 years ago. Or has his company carried on through his son or something
sandman1347
The question I find myself pondering is; does any of this actually add to his legacy in the way he intends? Honestly, I'm interested to know what others think about this. The idea of winning the "Triple Crown" is appealing and all but, in practice, is it really something that changes the way you think of a driver of Alonso's caliber? When he won at LeMans, it was a bit of an anticlimax. You expected him to win (especially with the fact that the Toyota was in a league of its own). The Indy 500 is much less predictable but, again, winning that race wouldn't really change my perception of Alonso as a driver the way winning another WDC would. Anyone feel differently about that?
kleefton
I'd say it'd be a nice feather in the cap. It would be a pretty rare accomplishment. Some f1 fans might not change their perception of him if he does it, but it would also bring him some massive recognition for those who don't follow F1 that closely. I personally think it would be cool for him to do it. That's really all he can do at this point anyway; the doors to F1 success are almost completely shut for him.
sandman1347 wrote:
The triple crown only really became a thing recently when Alonso decided to make it a thing, Graham Hill is the only driver to do it but I would say he is more well known for being a 2 time F1 WDC.
MB-BOB
Location: Dallas, TX, USA
Mario Andretti not only won a Formula 1 race... he won twelve F1 races AND the 1978 World Driver's Championship.
Mario Andretti not only won the Indy 500... he also won four Indycar Championships
Mario Andretti won several World Sportscar Championship races, winning 1 Daytona 24 and 3 Sebring 12hr races. He competed at LeMans across 4 decades, his best finish was 2nd in 1995 (at age 55)
Marion Andretti won the 1978-79 Int'l Race of Champions (IROC) series
Mario Andretti won several NASCAR races, including the Series' premiere event, the 1967 Daytona 500
Mario Andretti raced in the Can-AM series in the late 60's and early 70's.
Mario Andretti won numerous races in the USAC Sprint car series.
Mario Andretti won numerous races in the USAC Midget car series.
Mario Andretti often won races and multiple championships across multiple disciplines in the same (or consecutive) years. I'd like t see his frequent flyer mileage statement throughout his career.
Andretti and Dan Gurney are the only two drivers to have won races in Formula One, IndyCar, World Sportscar Championship and NASCAR. Is that a "Quadruple Crown?"
Point is... It's these kinds of accomplishments that create an actual legacy in racing worth mentioning. Fernando Alonso can do these one-off races for his personal satisfaction, which I am sure is his primary motivation. Because Andretti's 109 racing victories (across all categories) is 3-times more (and then some) than Alonso's 33 (32 F1 and one LeMans to date).
Indeed, Nando could race another 20 years and not accomplish half of what Andretti did.
Life-Long F1 Fan from 1965 -- More than 575 Grand Prix recorded since 1982 (all but 3), and counting...
Last edited by MB-BOB on Tue Nov 13, 2018 3:30 am, edited 1 time in total.
For me, yes. Not so much the Triple Crown specifically - although it will put him in a category of two in the record books, far more exclusive than the number of F1 WDCs - but racing in and being competitive in other disciplines, particularly one that's so much a graveyard of F1 talent as IndyCar.
I don't rate his Le Mans win very highly, however. His driving was excellent, but it's not worth any more than a WDC where you only beat your teammate - and I don't rate those very highly either.
MB-BOB wrote:
Yeah I would say that is more impressive than what Alonso is trying to achieve.
I think it would be more impressive for Alonso to become IndyCar champion than to win the 500, honestly. The 500 - while a great spectacle and a truly difficult race - is also quite a lottery. If he could be F1 champion, LMP1 champion and IndyCar champion, I believe that would put him alone in that category. And championships are worth more than race wins.
Exediron wrote:
I would agree if the Le Mans championship was more than a formality...
dompclarke wrote:
Well it was specifically to being Indycar champion having more weight than winning the Indy500.
In that case I do agree!
It won't make any difference to his F1 legacy obviously but as a racing driver overall it would help it a lot for obvious reasons being competitive in multiple series highlights the adaptability of his skills. Doing things not many have done and being competitive will always enhance your legacy more than just thinking he could be competitive in other series, he's out there doing it so it will enhance that overall racing driver legacy like Clark and Andretti have especially as multi discipline champions.
I think as Exediron says though that championships at each level would enhance it even more than the triple crown which is just a rare feat highlighting the adaptability of the driver in marquee races and the marquee series in F1.
I don't think winning another F1 title does that much tbh unless it was against Lewis in a straight fight. Its not like there's unanswered questions there, he's been in all the situations you can think off and generally shone so outside a straight fight with Lewis again that he happened to win I don't think there's any gain there. If McLaren had a dominant car this year and he was getting multiple poles and wins and an easy title against Stoff what does that actually tell you that you didn't already know? It does nothing for me personally unless it was a fight against Lewis in equal cars and that's not on offer so enhancing your legacy in other ways is probably the right move. Seb has twice the F1 stats of Alonso but half the reputation, the extra stats alone wouldn't do much for Alonso at this point I feel.
I actually hope he doesn't win the 500 next year as I fear he wouldn't bother trying a full season and I think the multiple title thing would be pretty cool so I'm in a tough spot as a fan because I don't actually want him to win it next year, I want him to do a full season,lol.
I don't think Conway,Lopez and Koba have given up just yet, they won Fuji last time out.
I do think that actually winning the championship in the IndyCar series would be a big achievement. It wouldn't so much speak to his level of talent but it would say a lot about his ability to adapt because that series is substantially different from F1. It's been a long time since top F1 drivers have even competed in IndyCar and even longer since one of them has won the series. I think that would be more impressive than taking the 24 hrs the way that he did. I think Alonso drove brilliantly at LeMans but I don't think that the field presented any challenge to Toyota.
Mr-E
He will be racing Marcus Ericsson then.
Correct, the team was being run by Ryan, and last year he brokered a deal where Andretti and United Autosports bought in, creating Walkinshaw Andretti United
Mr-E wrote:
He'll also be racing a fair number of people who are quicker than Marcus Ericsson...
Marshall Pruett's last couple of podcasts have spoke about some of the goings on and in summary he's saying it will be Chevy powered and its all agreed behind the scenes. Issues both ways between Honda and McLaren rather than Honda and Alonso is why they'll use Chevy and Alonso wants to do it with McLaren so that's why he'll run Chevy.
McLaren think the venture will pay for itself and won't interfere with the F1 side. (Chris Medland)
Alonso had offers from other teams but wanted to run with McLaren. If McLaren didn't come he'd have taken one of those offers up. (Medland)
Andretti will offer some technical assistance like 2017.
Could well be a two car team but no hint who the 2nd driver could be.
So basically the story back in September that McLaren wanted Chevy and Honda had no issue with Alonso himself seems true.
Bob Fernley to lead McLaren IndyCar team.
https://www.mclaren.com/formula1/team/m ... t-indycar/
Lotus49 wrote:
He's a good bloke.
Yeah can't argue with the job he's done at Force India and looks like he's got some NA racing pedigree as well. I think the F1 team could've done with him tbh, maybe with Ferran heading up the Indy team instead but I'm sure there are reasons they've done it this way around and I'm sure he'll do a great job.
I wonder if McLaren are using Indy next year to lay the groundwork for a full team and full time entry to Indy in 2020 maybe.
I'm not sure because Alonso apparently doesn't want to do the full series, he doesn't like the cars.
That's the rumour anyway but I was more thinking of McLaren doing it with or without him, Zak seems to value it brand wise for McLaren in NA and its not really that expensive so was wondering if they're laying some foundations.
Yeah that's what the Spanish press close to him is saying, he didn't enjoy the car in a normal circuit plus doing so many races away from Europe. Honestly he should suck it and do it. Winning the WEC (if he does it), plus the F1 and the Indy championship is a feat for the history books.
Could be, I guess I just had it in my head it was an Alonso led crusade?
Robot wrote:
One for the history books perhaps but this idea that it has more value than a WDC title is questionable for me, Mansell won back to back F1 and Indycar titles but it didn't raise his stock above drivers like Senna and Prost who only competed in F1.
Zak seems to think McLaren should be in all different types of series, it'll be interesting to see whether or not its just an Alonso thing in the coming years.
Users browsing this forum: Black_Flag_11, Google [Bot] and 1 guest