Shared posts

27 Dec 16:44

Are These Giant Chaotic Illustrations Predicting Natural Disasters?

by Beckett Mufson for The Creators Project

Foretoken, 2008, Installation shot at the Japan Society Gallery, New York, pen, acrylic ink on paper, mounted on board, 190x340cm, Photo by Richard P. Goodbody, Collection of Sustainable Investor Co., Ltd., (c) IKEDA Manabu, Courtesy Japan Society Gallery and Mizuma Art Gallery.

This article was originally published on December 8, 2014 but we think it still rocks!

Manabu Ikeda is known for weaving together fantastical, chaotic illustrations, often eclipsing an entire wall with his trademark combination of a traditional Japanese painting style and an ultra-detailed surrealism. His works are so mythic that they've been associated with prophecy more than once, he tells The Creators Project. Viewers have drawn a connection between his oceanic ink drawing Fortoken (2008) and the 2011 tsunami that shook his homeland of Japan to its core.

The tsunami he drew in Foretoken is a perfect example of the underlying theme that runs through almost all of his work: mankind's relationship with nature. "Human beings are part of nature," Ikeda says. "In the scars left by human beings on nature, I feel that it is possible to glimpse the strength of both their energies." This philosophy is evident in his depiction of dense urban areas clashing with massive waves, enveloping mountains, and congregating into serpent-shaped city.

The details are especially incredible because of the intense focus and effort Ikeda puts into every inch of his illustrations, weaving together small swathes of hand-penned ink into grand landscapes over the course of years. He works for eight hours a day, improvising to create the engrossing details. "It feels just like creating a large structure, piling up the building blocks randomly," he said. This is how Ikeda grows his surreal, hyper-dense illustrations into existence: slowly nurturing the empty canvas like a bonsai tree until his vision is fully realized. 

Detail of a work in progress painting in Madison, (c)IKEDA Manabu

Detail of a work in progress painting in Madison, (c)IKEDA Manabu

The artist took over three years to produce an illustration that will manifest Ikeda's feelings toward the aftermath and recovery of the same tsunami that Foretoken is so often compared to. We spoke to Ikeda about nature, prophecy, and how he creates such imaginative landscapes in a single draft.

Manabu Ikeda, (b. 1973), Victim, 2009. Pen, acrylic ink on paper, mounted on board; 27 3/5 x 39 2/5 in. Private Collection, New York. © Manabu Ikeda, courtesy Mizuma Art Gallery. Photo by Kei Miyajima.

The Creators Project: There is a lot of intricate detail in your work, each one feels like its own interconnected ecosystem. How do you hold the pure scope of these images in your head?

Manabu Ikeda: First, I try to draw the scene floating in my mind, and then the next scene that neighbors it. In that way, I try to essentially draw scenes, according to my own criterion of interest, one-by-one and connect them. It feels just like creating a large structure, piling up the building blocks randomly.

Take me through your actual planning process of your more complex illustrations such as Foretoken.

When I draw on a large panel, I draw the scene directly, mostly without making any drafts. Once the area of the drawing has increased to a certain degree, I start to think about the fundamental composition and motifs of the larger work, and lastly — it seems completed as a single form. The center of a panel is especially important in the structure of the artwork, as the things I draw there will directly influence the composition and theme of the work. I will think it over countless times, and sometimes I decide on the final design by drawing a large pencil framework first. Through that process of repetition, little by little the artwork is completed.

I always use a lot of caution in the large structure of the artwork itself, but I try to be as free as possible in the details I draw within that, so that the overall scenes do not feel overly in harmony with each other.

Manabu Ikeda, (b. 1973), Foretoken detail, 2008. Pen, acrylic ink on paper, mounted on boards; 72 x 132 in.  Collection of Sustainable Investor Co., Ltd. © Manabu Ikeda, courtesy Mizuma Art Gallery.

You’ve mentioned that you create your art based on your daily experience and memory. Can you expand on this in the context of some of your new pieces?

Basically I can say the same things. But recently, the themes of my artworks have become more specific, like a nuclear accident or the tsunami. Actual events that occurred in reality and my thoughts about them, beyond just my own experiences and memories, have a large role to play in my making process.

The themes of nature and man’s relationship to nature are present in much of your work. Why does this relationship interest you?

Human beings are part of nature. I have, at least, a great respect for nature.
 I feel a powerful attraction in the idea that, within this great nature, all of this existence called humanity—myself included—is grappling to exist within the struggle between wisdom and foolishness.
 Especially in the scars left by human beings on nature, I feel that it is possible to glimpse the strength of both their energies.

Manabu Ikeda, (b. 1973), Claw Marks, 2010. Pen, acrylic ink on paper, mounted on board; 8 5/7 x 10 3/5 in. Collection of Katsura Yamaguchi. © Manabu Ikeda, courtesy Mizuma Art Gallery. Photo by Kei Miyajima.

You’ve mentioned that both anime/manga styles and more traditional Japanese art techniques influence your paintings. Can you tell me a bit more about this stylistic union?

The influence that it has is a more general nuance. My generation has grown up in anime and manga culture, whether they have become artists or schoolteachers. Some collected manga books, others got absorbed in playing at being their heroes, and I was excited to draw the characters, because I was good at drawing. In any way, whatsoever, everyone is influenced by them. Whether anime or art, I have never felt a strong influence from some specific work on my pictures themselves. 
In my case, I occasionally apply a scene from manga that has remained in my memory or patterns from art I have seen, into my artworks by only its visuals.

You've spoken about the difference between painting in Japan and painting in North America. Can you tell me about how that difference affects your art?

In Japan where everything is small and narrow, my image of “grand nature” was totally different from the truly “grand nature” which I saw in North America: the overwhelming vastness of space, and the wildness. After I moved to North America, it has became an important issue for me to capture not only the detailed, but also the grand nature of space in my artworks.

Your works often feel like living, breathing places. Can you tell me the stories taking place in one or two of your recent works?

I made Foretoken in 2008, and at the time I first imagined a “snow and ice world,” and finally it became a picture of big waves. Within it I draw the Japanese islands that were dented in the Tohoku region and the scene of a big ship washed ashore.
 Three years after that, the earthquake happened, like something the content of the title had terribly predicted. And one more small piece, Gate, was created in 2010, but when during this current exhibition I visited New York’s Ground Zero (memorial to 9/11) for the first time, its construction seemed to resemble that artwork—I was really surprised. It greatly resembles “memorial zero” in Ground Zero. The composition of artwork, the planes I drew, and so on, have absolutely no relation with Ground Zero. But in spite of this, they have much in common, which felt a little eerie to me.

Manabu Ikeda, (b. 1973), Meltdown, 2013. Acrylic ink on paper, mounted on board; 48 x 48 in. Chazen Museum of Art, University of Wisconsin-Madison, Colonel Rex W. & Maxine Schuster Radsch Endowment Fund purchase, 2013.24

Manabu Ikeda, (b. 1973), Meltdown detail, 2013. Acrylic ink on paper, mounted on board; 48 x 48 in. Chazen Museum of Art, University of Wisconsin-Madison, Colonel Rex W. & Maxine Schuster Radsch Endowment Fund purchase, 2013.24

Manabu Ikeda, (b. 1973), Staircase of Waves, 2010. Pen, acrylic ink on paper, mounted on board; 8 5/7 x 10 3/5 in. Collection of David Solo. © Manabu Ikeda, courtesy Mizuma Art Gallery.

Find more of Ikeda's work on his website, which is exclusively in Japanese, here.

Related:

Watch A Cerebral Animation Illustrated With Ink, Coffee, And Whiteout

We Spoke To The Illustrator Behind These Incredible Sci-Fi Architecture Mashups

An Artist Visualizes The Terrifying, Dystopian Metropolises Of Tomorrow

Underpaid Chinese Artists Commissioned To Recreate Stock Photos Of "Artists" As Paintings

27 Dec 16:44

Cyanogen Inc. macht dicht, CyanogenMod wird zu "Lineage"

mkalus shared this story from heise online News.

Blaue Androiden

Die Firma Cyanogen Inc. stellt alle Dienste ein. Der Sourcecode des nichtkommerziellen CyanogenMod bleibt erhalten. Das Team hinter CyanogenMod macht unter dem neuen Namen Lineage weiter. Das soll mehr als ein bloßer Markenwechsel sein.

27 Dec 16:43

The 11 Most Mesmerizing GIFs of 2016

by Beckett Mufson for The Creators Project

Zolloc

Nothing calms the nerves like a perfectly looping GIF, except maybe a shot of good whiskey. You shouldn't drink 11 shots of whiskey in five minutes, but you can definitely get lost in these 11 GIFs. Hell, take 10 minutes. We read the entire internet, and these babies are the most satisfying, hypnotic short animations produced over the last 360 days. When respite is needed, bury your head in your smartphone and relax with salsa dancing aliens, celestial snugglers, Op Art butts, and universal thoughts animated by our favorite GIF-makers. Remember, 2017 is just a few days away.

Lonac

Traceloops

Konczakowski

James R. Eads x The Glitch

Sam Cannon
 

 

A video posted by Sam Cannon (@samcannon) on


Karan Singh

Adam Pizurny

Eran Mendel

Francisca Borzea

Kidmograph
 

 

A video posted by Gustavo  (@kidmograph) on


Zolloc

For more loops and other artwork you can't look away from, check out The Creators Project's Instagram feed.

Related:

Don't Watch These GIFs If You're Afraid of Brain-Eating Parasites

Vortexes We Like Better Than the Polar Vortex | GIF Six-Pack

These Hypnotic Animations Deform Geometry

27 Dec 16:43

Anish Kapoor Got His Hands on the "Pinkest Pink" Paint | Last Week in Art

by Nathaniel Ainley for The Creators Project
 

A photo posted by Anish Kapoor (@dirty_corner) on


A lot went down last week in the weird and wild world of Art. Some things were more scandalous than others, some were just plain wacky—but all of them are worth knowing about. Without further ado:  

+ Anish Kapoor responded to his ban from buying the world’s pinkest paint. Stuart Semple, the creator of the pigment (and the ban), told The Creators Project, "It's obviously very disapointing that Anish has illegally got his hands on the world's Pinkest paint. If anyone knows who is behind sharing it with him it would be good if they could come forward—Anish is still very much at large, not just with the blackest black but now the stolen pinkest pink. Luckily he's failed to get his hands on the world's most glittery glitter so we would urge purchasers to refrain from sharing any with him or his associates." [Instagram]

+ 17 paintings valued at about $17.7 million were returned to Italy from the Ukraine after being stolen from the Castelvecchio Museum in Verona last year. [Associated Press]

+ Renowned Danish furniture designer Jens Risom passed away at 100 this month. [The New York Times]

Via

+ Adam West is hosting a Batman-inspired art exhibit in Idaho. [Idaho Mountain Express]

+ Illustrious New York art dealer Nancy Wiener was charged with possession of stolen goods and conspiracy to traffic East Asian antiquities by Manhattan’s district attorney. [The Wall Street Journal]

+ Pope Francis appointed art historian Barbara Jatta as the first female director of the Vatican Museums. [The Guardian]

+ A group of LGBTQ Art activists were attacked by Trump supporters as they were leaving the closing party of the ‘Decolonize This Place’ artist residency in TriBeCa. [Hyperallergic]

Via

+ A 22-year-old Turkish gunman shot and killed Russia’s ambassador to Turkey at an Ankara art exhibit on Monday. [The New York Times]

+ The National Museum of African American History and Culture launched their web-based ticket system on Monday morning and sold out 880 free same-day passes in four minutes. [The Washington Post]

+ Israel’s Culture Minister Miri Regev says she wants to cut off funding to an arts university in Jerusalem after a poster of Prime Minister Benjamin Netanyahu in a noose went viral. [The Independent]

+ A mother in Australia has launched a line of dolls devoid of excessive make up called Tree Change Dolls. [UFunk]

Via

+ Felicity Jones, star of the new Star Wars film, Rogue One, is getting a photographic portrait in the National Portrait Gallery in London. [The Guardian]

+ Diana Widmaier Picasso, granddaughter of Pablo Picasso, revealed a family secret in a book entitled 100 Secrets of the Art World, about how the famed artist believed human shit was great for painting. [The Art Newspaper]

+ Greenwich Village’s Da Silvano, a famed eatery and artist hangout, has closed after 41 years of business. [The New York Post]

+ The inaugural Honolulu biennial announced the full list of artist participating this year. [Art News]

Via

+ The Brooklyn Museum is selling bikes made by Ai Weiwei for $27,500 a pop. [Robb Report]

+ A soapstone seal previously used by 18th century Chinese Emperor Qianlong sold for almost $22 million at an auction in Paris. [The Art Newspaper]

+ The Democratic Party of Serbia denounced a proposal to erect a monument to Andy Warhol in the capital city of Belgrade. [B92]

+ Images of the artworks going up in New York City’s second avenue subway station are now circulating on the internet. [Art F City]

Did we miss any pressing art world stories? Let us know in the comments below!

Related:

Sylvester Stallone REJECTED Donald Trump's Job Offer |Last Week in Art

Scientists Discovered a Dinosaur Tail Covered In Feathers | Last Week in Art

Studio Ghibli Is Getting Its Own TV Show: Last Week In Art

27 Dec 16:43

Mobike to Become Moving IoT: Q&A with Joe Xia, founder and CTO of Mobike

by mjkim

Bike-sharing has been spreading like wildfire as different companies and backers enter the field. TechNode has already taken a look at the bikes from the users’ perspective. However, this is only one side of the story: these companies differentiate themselves not just by user expereince, but also in business model.

Technode interviewed Joe Xia, founder and CTO of Mobike, to gain insight into the theory behind the bikes.

Mobike claims to be part of the sharing economy along with companies like Airbnb and Uber. However, you don’t actually faciliatate people sharing what they own, manufacturing your own bikes instead. How do you respond when people say you’re more like a B2C rental service?

Mobike is indeed part of the sharing economy. First, I think we need to to rethink the concept of sharing economy. If you say only the format of person giving one’s asset to another person fits the concept of sharing economy, it is too narrow.

In my opinion, any format that promotes sharing a single asset among more than one person is sharing economy. This model places more weight on ‘usership (right to use)’ of more people than one individual’s ownership of an asset. Overall, this decreases resource waste and increases efficiency of using resources.

Although Mobike’s bikes are manufactured in our own factory, every single bike is shared among so many different people, being used whenever and wherever they want. With the Mobike platform, people do not have to waste money buying their own bike.

1ocrqhs7k14rjvnhsf_waia

Mobike’s bikes lined up on the streets (Source: Mobike)

But isn’t the hotel industry structured in the same way?

They are totally different. The key to a sharing economy is to expand the right to use for multiple individuals by removing ownership of one resource. On the other hand, hotels have the right to own property at a high price and no one room is shared by several people. You can not prevent it from being wasted when not in use.

 

%eb%aa%a8%eb%b0%94%ec%9d%b4%ed%81%ac-2-2

Mobike’s bikes are equipped with smart lock (Source: Mobike)

What would be the appropriate way to define Mobike? Is it a hardware company that produces bikes, or is it a software company or a platform company that focuses on mobile apps?

Mobike is, in a word, a technology company. Technology is at the heart of the company, covering hardware, software, and platforms.

edf

Mobike’s bikes are orange. Ofo’s bikes are yellow. (Source: Baidu)

This September, Chinese ride-hailing giant Didi Chuxing (“Didi”) announced that it has invested “tens of millions” of U.S. dollars into Ofo, the main competitor of Mobike. Some say this deal represents part of a “multi-layered partnership” in the urban mobility realm. What do you think?

Mobike believes that investment is something more than just financial support; it means a strategic alliance with the investor. In that sense, Didi was not the best investor for Mobike, since Mobike has a competely different business model from Didi.

Didi is a driver-to-person, that is, a person-to-person model. Passengers use the Didi app to call taxi drivers or individual drivers. In other words, Didi connects one individual, the car-owner, to another individual, the passenger.

Besides bike-car difference, how is Mobike different? 

Mobike is not a person-to-person link, but a model that connects a bike to a number of different individuals, therefore, person-to-thing. In other words, it is an Internet of Things (IoT) business that connects all the people to a single object.

%eb%aa%a8%eb%b0%94%ec%9d%b4%ed%81%ac-2-5

Screenshot of the Mobike App (Source: ecmoban)

 

What do you think is Mobike’s strength as IoT platform? 

First is that in the IoT ecosystem of Mobike, the “thing” is mobile. In the home IoT, the “thing” that connects everything is immobile. This, in fact, creates a significant difference in how much data is generated from this connection. Compared to bikes that move around all day and are used by a number of different people, home IoT devices accumulate a relatively small amount of data only intermittently.

Second is that the connection is with multiple individuals. Let’s compare with car IoT. While in Mobike’s platform, a single bike is shared by many people, car IoT is connecting one individual with a single car, which means data is much more limited than Mobike.

It seems that Mobike’s bikes are not just bikes as mere transportation tools. 

Yes. That is the reason why Mobike largely invests in the technology of the bike itself. It is  the central axis for the Mobike’s pursuit of the person-to-thing model.

26 Dec 05:25

Fahrrad-Auto von Agnelli - das E-Bike 2CV Paris - SPIEGEL ONLINE

mkalus shared this story from SPIEGEL ONLINE - Schlagzeilen.

Design-Fahrrad 2CV Paris: Hybrid aus Italien: Halb Ente, halb Fahrrad 25.12.2016

Der Italiener Luca Agnelli vereinte das Beste aus zwei Welten. Aus einem alten...

Agnelli Milano Bici

Der Italiener Luca Agnelli vereinte das Beste aus zwei Welten. Aus einem alten Fahrrad und der Front eines Citroën 2CV baute er das dreirädrige Modell "2CV Paris."

26 Dec 05:22

Twitter Favorites: [bmann] Attempting to get back on RSS train. Went into @NewsBlur & nuked subscriptions. Automatically got email with backup OPML “just in case”

Boris Mann @bmann
Attempting to get back on RSS train. Went into @NewsBlur & nuked subscriptions. Automatically got email with backup OPML “just in case”
26 Dec 05:22

Twitter Favorites: [dtrifuno] @Pinboard I am convinced that Bowie was an alien who spent his life protecting Earth and 2016 was pretty much the result of us losing him.

Darko Trifunovski @dtrifuno
@Pinboard I am convinced that Bowie was an alien who spent his life protecting Earth and 2016 was pretty much the result of us losing him.
26 Dec 05:22

Twitter Favorites: [AnakanaSchofiel] People who constantly tell you to tidy up may not be reading any books. Do not listen to the tidy up police.

Anakana Schofield @AnakanaSchofiel
People who constantly tell you to tidy up may not be reading any books. Do not listen to the tidy up police.
26 Dec 05:22

Twitter Favorites: [ruk] The Google keyboard appears to use crowdsourced data for its predictive typing. This is going to kill the English language.

Peter Rukavina @ruk
The Google keyboard appears to use crowdsourced data for its predictive typing. This is going to kill the English language.
26 Dec 05:22

Twitter Favorites: [edenthecat] today is a good day to check in on one of the people you've been meaning to say hello to but haven't! holidays can be isolating and sad.

ron in saskatoon @edenthecat
today is a good day to check in on one of the people you've been meaning to say hello to but haven't! holidays can be isolating and sad.
26 Dec 05:22

Twitter Favorites: [YolandaEnoch] @Pinboard the holidays let them do tech support more efficiently, since all their family is in one place!

Yolanda Enoch @YolandaEnoch
@Pinboard the holidays let them do tech support more efficiently, since all their family is in one place!
26 Dec 04:30

What would you like for Christmas, little boy?

by Volker Weber

26 Dec 04:30

mele kalikimaka

by Emily Chang

mele kalikimaka

Photo Caption: mele kalikimaka

25 Dec 21:24

NewsBlur Blurblog: 10 Questions to Capture the Year in Your Journal

sillygwailo shared this story from Day One.

Click to create an entry in Day One:
New Year’s Questions

There’s always a certain degree of anticipation—an excitement in the air—for the turn of the calendar at the end of the year. It’s impossible to look at January 1st and not think about the chance for a fresh start.

By the same token, December 31st offers a tremendous opportunity to reflect. Undertaking a level of introspection—reflecting on the prior year’s accomplishments, failures, surprises, and expectations and how they are currently affecting you—is tremendously powerful. No matter who you are, it’s hard to know where you’re going if you don’t know where you’ve come from.

There’s no better way to undergo this year-end personal review than by recording it in a journal.

Year-end journaling is a gigantic work-in-progress. I began keeping a journal in 2011 and have kept fairly solid records of my life experiences ever since. But in the grand scheme of things, it takes far longer than five years to look back on your recordings and find appreciation in your own growth. Some people may appreciate self reflections mere months later, but I’ve found that a lifelong learning process is easier to witness in lengthier segments.

A good way to start is a half-hour session in the last few weeks of December. Sit down, brew a cup of coffee, open Day One, and just write. If you can just sit down, you’ve already overcome the most difficult part of this process.

What should you write about? What questions should you ask yourself? Here is a list of 10 questions to contemplate and answer at the end of the year.

(Remember: It doesn’t matter how detailed your answer or how specific your thoughts. The most important part is opening yourself up and writing a letter to your older, wiser, smarter self. Just get started.)


1. What was your favorite single day/event of the year?

Close your eyes and think about all that’s happened in the last 12 months. What’s the first thing that pops into your head that puts a smile on your face? Whatever the event, start off this introspection with a dose of positivity. It’s a great way to get the creative juices flowing.

2. What was the best thing you built/created?

More often than not, building and creating is a lengthy process. It starts with an idea and grows from there. But finishing a project is the most rewarding part. It takes guts to complete what you started, and the reward is usually worth the process.

We’re all builders in some way. What did you create this year?

3. What was the most impactful decision you made for you and your family’s future?

This might be a more difficult question to answer. It could also be worded as “Did I/we do something that will have a lasting effect on our family’s lives?” Things like moving to a new neighbourhood, going on a family vacation and experiencing a new culture, or investing in your or your child’s education might be potential answers.

By answering this question, you can bridge the prior year’s events with future year’s experiences. And, down the road, this answer will be interesting to look at to measure the impact of past decisions.

4. What was your best financial achievement?

Although success and achievement are often measured in non-monetary terms, it’s helpful to look back at the last year and reflect on your financial decisions as well. Did you buy your first home? Did you take the plunge and enter retirement? Did you pay off a loan hanging over your head? Or did you reach your savings goal and go on a vacation in the middle of winter?

We all have different financials goals, success, and struggles. Reflecting on them is fundamental to fulfilling future goals.

5. Did you achieve any lifelong goals?

Crossing items off your bucket list is incredibly rewarding. Perhaps you bought your dream vehicle, or drummed up the nerve to skydive out the back of an airplane. Maybe you visited a new country or met your favorite athlete. Or maybe you graduated from an education program.

This question is particularly fun. Bucket lists can feel endless, but checking off an item or two each year usually means you’re not just existing but living.

6. What was the hardest lesson you learned over the past year?

Making mistakes is easy. Admitting them and learning from them is incredibly hard. Which is why reflecting on your mistakes a few months later can often help in the overall learning process.

Experts say the best way to learn something is to teach it to someone else. So, if you’ve learned a hard lesson this year, perhaps consider helping someone else overcome what you struggled with.

7. Did you develop any new hobbies or passions? Are there any new hobbies or passions you want to develop in the New Year?

The daily grind can take its toll, so having hobbies is a perfectly healthy way to turn your mind off. Some people collect stamps or coins. Others shoot photographs. Others like to go skiing, snowboarding, or surfing. Still others like to craft, scrapbook, or play the piano.

If you don’t have any specific hobbies, perhaps you want to jump into one for the coming year. Write down what you’d like to do in the new year.

8. What was the most humbling experience of the past year?

This can be related to question #6 above, but it can also be taken a step further. Sometimes the worst happens and it serves to remind you of your humanity. Maybe you lost your job, or you got into a fight with someone you care about, or maybe you lost a loved one. These are hard conversations to have, but clarifying your thoughts on these events over time can have a lasting impact on how well you know yourself.

Perhaps more importantly, what did you learn from this humbling experience?

9. What is the one thing you are most grateful for from this past year?

This is my favorite question on this list. It’s difficult to show your gratefulness to others when life flies by at top speed, so these quieter moments of reflection offer a chance to recognize the gifts around you. I’m particularly grateful for my wife, for a fulfilling career, for hobbies that let my mind be creative, and for the opportunity to learn from friends.

Your list will surely be unique to you and your life. Take the time to make it. The people and gifts around us deserve proper reflection at the end of the year.

10. What are your personal goals for the coming year? Family goals? Religious goals? Health goals? Financial or career goals?

Finally, if you’re tired of reflecting on the year that was, then it’s time to dream about the year that will be. Of all the goals on this list, this might be the easiest to measure on an annual basis. Do you want to check another item off your bucket list? Do you want to attend your child’s high school graduation? Do you want to start a family? Perhaps get married?

No dream is too big or too small. Set one goal. Five goals. Ten goals. Make some that are easily achievable, others that are harder, and still others that may seem impossible today.


This isn’t meant to be an exhaustive list of year-end journal questions. Rather, we’re hoping this gets your introspective juices flowing.

There’s a lot of value in returning to these questions midway through the year. See your progress on current year goals. See if decisions from the prior year had a lasting impact on you or your family. Take time to appreciate personal achievements a second (or third) time.

At the conclusion of this year, we hope these questions give you a chance to reflect upon and appreciate the past, and look forward to the new year ahead.


Click to create an entry in Day One:
New Year’s Questions

About the Author

Josh GinterJosh Ginter is a freelance writer, amateur photographer, and studying accountant. He writes about photography, travel, and other cool things at The Newsprint

25 Dec 21:24

The Conservative party is scraping the bottom of the barrel

by Chris Corrigan
The Conservative Party of Canada has started heating up its leadership campaign and I have a passing interest in it.  Two of the candidates – the two most odious – are known to me personally.  Kellie Leitch is the MP in my parent’s riding in Ontario and she was very helpful in helping my dad and I to get some written comments before the commons committee looking at the omnibus bill C-30 that Harper passed in 2012 when my own MP wouldn’t do it.  Since then she has supported asbestos exports (against her oath as an MD), a Barbarian Practices Act and a currently racist dog whistle campaign on “Canadian values.”  Chris Alexander, who was her partner in crime on the Barbarian practices bill and the tip line campaign promise was an elementary school mate of mine.  We grew up a half block from each other, and he came from a red Tory family, with his dad as a supporter of Joe Clark in the 1976 leadership of the PCs, and in retirement he has done some interesting leadership work on diversity.  In 1984 I watched Brian Mulroney’s election vctory at their house.  Chris was always the smartest kid in any room I was ever in with him, but he took a hard turn to the right and threw his lot in with Harper.  What he has in smarts he desperately lacks in political graces.  He’s become rude and inelegant.  And his stock has fallen mightily.  He was also a sore loser when his constituents kicked him out of the commons last year. It’s too bad. At one point, when he our ambasador to Afghanistan, I imagined that he might make a good leader of the Conservative party and given his roots, might even pull it back towards a progressive conservative agenda. He’s a disappointment of the highest order.
So I’m kind of personally invested in this strange campaign, which brought me to reading up on Kevin O’Leary this evening.
It’s interesting to read Kevin O’Leary’s Wikipedia biography. What stands out for me is how he basically has experience as a software developer, a celebrity and a finance guy. But look a bit deeper and you see that his software career included creating a product and companies that eventually created a massive catastrophe for Mattel, who bought his company, made him a multi millionaire and imediately went into a tail spin. He walked away golden while a massive company and the enterprise he built swiftly crumbled, wiping $3 billion of shareholder value of the books of Mattel.  he parlayed that fortune into an investing career.
 
His investment strategies are heavily tilted to the oil and gas sector, which makes his recent pronouncements against carbon taxes to be self-interested at best. If he runs for office, it wil be interesting to see how he handles the conflict of interest issues that will come up as a candidate and later an MP, should he make it that far.
 
On the experience side I’m struck by how little experience he has with economics or governance, having never studied or served in those capacities. He certainly comes across as a financial whiz as a pundit, but he offers his takes on taxes, Canadian dollar valuation and enterprise from a business angle, not an economics angle. Remember that the Tories chastised Trudeau for being inexperienced. O’Leary is well known as a celebrity and a talker, but I don’t see much in the way of public service on his resume. He doesn’t even seem to be into philanthropy at all.
 
Lastly it is curious on his official website that he talks about his father’s ethnic Irish ancestry, but only mentions his mother’s family’s merchant background and not that they are also Lebanese. I actually think that’s an interesting aspect of his background and it seems a shame he doesn’t talk more about it. Perhaps he does in his books. 
 
He’s an interesting character once you dive in. I find him rakish and irritating, short tempered and egotistical, all qualities that seem to have a place on Bay Street, but are grating on Wellington Street. I really think this crop of Conservative leardership candidates is weak sauce, and I fear that the party will go the Trump route and pick him because of his brashness. This, however is not a time for a celebrity self-promoter to be in power as prime minister of Canada, but the Conservative party seems to have a bare cupboard at the moment.
The world is in a weird place right now and a guy like O’Leary might appeal to Canadians desperate to have their own Trump.  Some of this crowd would probably elect Don Cherry if he ran, or resurrect Rob Ford if they could, the man who was John the Baptist to Trump’s Christ.  O’Leary is nothing more than a huckster, full of his father’s Irish charm and his own inflated sense of self-importance.  Good god, public governance is in desperate times.
25 Dec 21:23

A Christmas Tale - director Arnaud DesplechinThe Vuillard family...



A Christmas Tale - director Arnaud Desplechin

The Vuillard family gathers: Junon (Catherine Deneuve) and Abel, a daughter Elizabeth and her son Paul, Henri and a girlfriend, Ivan, his wife Sylvia and their young sons, and cousin Simon. Six years before, Elizabeth paid Henri’s debts and demanded he never see her again or visit their parents’ home. Paul, at 16, has mental problems and faces a clinical exam. Junon learns she needs a bone marrow transplant if she’s to live beyond a few months: thus the détente bringing all together. Two family members have compatible marrow, but the spats, fights, cruel words, drunken toasts, and somewhat civilized bad behavior threaten all; plus Junon may simply refuse treatment. Do we know ourselves? Written by

25 Dec 21:22

"We need to swap the Romantic view for a tragic (and at points comedic) awareness that every human..."

We need to swap the Romantic view for a tragic (and at points comedic) awareness that every human will frustrate, anger, annoy, madden and disappoint us — and we will (without any malice) do the same to them. There can be no end to our sense of emptiness and incompleteness. But none of this is unusual or grounds for divorce. Choosing whom to commit ourselves to is merely a case of identifying which particular variety of suffering we would most like to sacrifice ourselves for.

This philosophy of pessimism offers a solution to a lot of distress and agitation around marriage. It might sound odd, but pessimism relieves the excessive imaginative pressure that our romantic culture places upon marriage. The failure of one particular partner to save us from our grief and melancholy is not an argument against that person and no sign that a union deserves to fail or be upgraded.

The person who is best suited to us is not the person who shares our every taste (he or she doesn’t exist), but the person who can negotiate differences in taste intelligently — the person who is good at disagreement. Rather than some notional idea of perfect complementarity, it is the capacity to tolerate differences with generosity that is the true marker of the “not overly wrong” person. Compatibility is an achievement of love; it must not be its precondition.



-

Alain de Botton, Why You Will Marry the Wrong Person

Compatibility is an achievement of love; it must not be its precondition.

25 Dec 21:22

2016 week 51 in review

by D'Arcy Norman

Work

It was a quiet week, but maybe that gave burnout a chance to catch up to me. I don’t know how to explain it – I’ve worked much harder before, but there’s something about my current role that seems to keep me constantly close to the edge of burning out. I need to figure this out. I’m not going to speculate publicly, but there are some things I’m going to tweak in the next few weeks, and throughout the coming year. This stuff is too important to just keep trying to brute-force my way through it, hoping things will magically change. It doesn’t work that way.

Read

Other

I took a day off and went to Sunshine Village with a friend on Tuesday. It was easily the best ski day of my life. An almost-empty ski hill (compared to what I’m used to), on so much fresh snow. And it snowed all day. Amazing. And, we had the added experience of being near the top of Lookout Mountain in complete whiteout conditions. I need to get in better shape before heading out again, though. Ouch.

25 Dec 21:22

5 Laws That Could Send Santa To Federal Prison

by Tyler Durden
mkalus shared this story from Zero Hedge.

Submitted by David Rosenthal via The Foundation for Economic Education,

While most people know Jolly Old Saint Nick as a friendly figure, he too is not immune from the perils of administrative overreach and overcriminalization.

To get you in the Christmas spirit, here is a list of some of the potential crimes and violations of federal law Saint Nick as he prepares to take flight for 2016.

1. The Reindeer Act

Many have tried finding Santa’s workshop—without success—but children have long mailed letters to the Santa Claus House located at 101 St. Nicholas Drive in North Pole, Alaska. This office location is the first source of trouble for Father Christmas. Under the Reindeer Act, signed into law by President Franklin D. Roosevelt in 1937, only Alaska Natives are allowed to own reindeer in Alaska.

While Santa has been operating out of the North Pole for many years, only Eskimos, Indians, and Aleuts inhabiting Alaska at the time the United States purchased the land from Russia are considered natives under the act, and Saint Nicholas is from the Greek village Patara in modern-day Turkey. Luckily for Santa, he might be able to avoid the $5,000 fine for violating this provision of the Code of Federal Regulations, but only if he applies for and is granted a special use permit to possess reindeers as a non-native.

2. The Lacey Act

Even if Santa gets around the Reindeer Act, he may face civil and criminal penalties under the Lacey Act if his purchase, sale, possession, or use of reindeer—or any other flora or fauna— violates any state or federal law or the law of any foreign nation, no matter what language or code that foreign law is written in.

Just as some unwitting Americans have been convicted of offenses such as the
“importation of Caribbean spiny lobsters from Honduras” in violation of Honduran packaging laws, Santa could be committing a crime each time he crosses borders to deliver flora or fauna.

3. Flying Without a License

Despite Santa’s many years of experience, there is no Mr. Claus listed in the Federal Aviation Administration’s pilot certificates database. If Santa is piloting his sleigh without an airman’s certificate, he is in violation of 49 U.S.C. § 46317.

Any pilot who operates an aircraft without a proper license is guilty of a federal crime punishable by three years in prison (the sleigh would almost certainly be deemed an aircraft under 49 U.S.C. § 40102(a)(6)). And that is only for Santa’s role as a pilot. If his sleigh is not deemed airworthy, Santa will be in violation of 14 C.F.R. § 91.7 and subject to additional civil penalties by the FAA.

If Santa’s sleigh is approved, he then must post “within” the “aircraft” a copy of the registration, airworthiness certificate, and other official documents, to be displayed “at the cabin or cockpit entrance so that it is legible to passengers or crew,” per 14 C.F.R. § 91.203(b); the sleigh’s baggage compartment must be installed subject to Subsection C with a copy of FAA Form 337 authorizing such installation maintained on board the sleigh; and all fuel venting and exhaust emissions must meet additional requirements.

Hopefully Santa has a good compliance team.

4. False Statements

Any white lie that falls within the jurisdiction of the U.S. government could be a federal crime. As Heritage scholars have written elsewhere, there is one general federal statute for false statements that “should be broad enough to reach any fib or whopper that the federal government could have a good reason to prosecute.”

But there are dozens more specific criminal statutes that punish false statements regarding such minutiae as fluid milk products. If Santa parks his sleigh on federal land and encounters a park ranger while coming down the chimney, he’d better not tell a fib about what he’s up to or he could end up in big trouble. (He would also be violating another federal law if he parks his sleigh in a way that inconveniences another person on federal land, but I digress.)

Supreme Court Justice Ruth Bader Ginsburg once observed that, under federal false statement statutes, “the prospect remains that an overzealous prosecutor or investigator—aware that a person has committed some suspicious acts, but unable to make a criminal case—will create a crime by surprising the suspect, asking about those acts, and receiving a false denial.”

Here, once Santa gets off the ground, his real legal trouble is only just beginning. A government agent need only ask Santa if he committed burglary, trespass, or larceny, or ask him, “Are you really Santa Claus?” In that case, Santa really would need a Miracle on 34th Street to stay out of the slammer for lying.

5. IRS Tax Gift

Even if Santa evades capture during his Christmas Eve flight, he then must deal with Uncle Sam upon his return to the North Pole. Under IRS gift tax rules, the giver of gifts above a certain threshold is taxed at a rate up to 40 percent of the value of the gift. While individuals are allowed to make gifts up to $14,000 per recipient without encountering any tax consequences—most toy trucks and dolls would probably fit under this exemption—gifts above the limit must be reported on IRS Form 709.

As such, each time Santa drops off a shiny new BMW for mom or dad, he will be on the hook for an even bigger tax bill on April 15. Willful failure to file a gift tax return can land Santa in prison for up to one year under 26 U.S.C. § 7203. Let no good deed go unpunished.

The List Goes On

While those are just a few examples of how Santa may be held criminally and civilly liable for violating U.S. law, there are several other ways in which he operates in legal gray areas.

For instance, how does Santa compensate all of his elves who are working around the clock to finish making toys before the big day? If they are not receiving proper overtime pay in a safe work environment, Santa will be in violation of numerous provisions of the Fair Labor Standards Act. Finally, given the size of his operation, Santa must be complying with the Affordable Care Act’s employer mandate.

If Santa cannot even stay in line with every single government rule and regulation, how is the average American supposed to keep up? Attorney Harvey Silverglate argues that the average American unwittingly commits three felonies a day due to vague laws and governmental overreach.

The American people—and Mr. Claus—deserve better. Heritage scholars have identified a comprehensive strategy to combat the problem of overcriminalization, which threatens liberty by using the criminal law and penalties to attempt to solve every problem in society and compel compliance with regulatory schemes.

Merry Christmas to all, and to all a good night.

25 Dec 21:22

"Success is getting what you want; happiness is wanting what you get."

“Success is getting what you want; happiness is wanting what you get.”

- Ingrid Bergman
25 Dec 21:09

Devastated employees and struggling Canadian content: Behind the scenes of Shomi’s shutdown

mkalus shared this story from Comments on: Devastated employees and struggling Canadian content: Behind the scenes of Shomi’s shutdown.

“Hey Shomis,” said Shomi general manager David Asch. That jingle marked the start of every team meeting at the jointly-owned Rogers-Shaw streaming service, but former Shomi employee Cassandra James, noted something different in his voice that afternoon.

“It was almost like he told us that our pet had died,” she remembered. She strolls into our meeting with her hands in the front pocket of her hoodie. After she reaches across the table to shake my hand, she recalls the day she found out that Shomi was shutting down.

“I actually left. There’s this thing with my anxiety that I don’t like people witnessing my emotions,” said James. She left the room immediately after hearing the news and headed to the washroom to wipe away the tears and splash cold water on her face. Upon leaving, she noticed several colleagues lined up outside the bathroom for what she presumed to be the same reason.

If content rules, Netflix is King

At this point, Shomi had been operational for two years and was the first English-language streaming service to launch in Canada after Neftlix. The two services were extremely similar in almost every way, from functionality to price. Some would even say that with Shomi’s cable box availability and $0 price tag with Rogers as of 2015, Shomi was the better choice for millions of Canadians, though it still lacked the extensive library of Netflix.

When Shomi employees came into work on September 26th, they had no way of knowing it would mark her company’s final month in existence, however, they had plenty of clues. Funding to several departments at Shomi were cut this past August. Not slashed — cut. The 100-person team lost several large content agreements, and slowly but surely, Rogers stopped promoting Shomi to its customers.

How do you build products that people gravitate to? It’s hard when you don’t have the same funding [as Netflix].

As James and her colleagues received the news, two HR representatives from Rogers were standing next to Asch, at the front of the room. The faces of her coworkers changed from worried to shocked as they realized that not only would Shomi shut down at the end of November, but that everyone working on the platform would also be let go. After recently leaving another career, she was nervous she’d have to switch careers for the second time in just a few years.

It was at this moment that James turned to her direct supervisor for comfort, but stopped short. It was the first time she’d ever seen her boss cry.

They were told by their superiors that though they’d done everything they could, the fledgling video service just couldn’t compete with Netflix. James described the news as a punch in the stomach, but this also marks Canada’s latest knock out in our longstanding, yet one-sided, rivalry with the American entertainment machine.

Diana Rowe is a mother, a wife and a former employee in Shomi’s marketing department. She’s believes that Shomi’s fall has to do both with brand recognition and resources.

“I think Canadian brands have to figure it out. How do you build products that people gravitate to? It’s hard when you don’t have the same funding [as Netflix]. It’s almost a niche thing if you’re trying to support Canadian products,” said Rowe.

When it comes to culture, Canada is the baby of the family

In many ways, Canada is still coming of age in the digital video streaming era. Unlike our trailblazing southern neighbour or our distant English cousins, Canada’s formative years have seen unprecedented access to culture and content from around the globe. This often pits our underdeveloped content industry directly against the empirical cultural legacies of the world’s entertainment giants.

“There is an advantage to the Brits and the Americans because they have such an established system,” said Brenda Leadlay, the executive director of the B.C. Alliance for Arts and Culture. She goes on to agree that while Shomi came with her personal Rogers subscription in 2015, she’d subscribed to Netflix for years before that.

When Netflix came to Canada in 2010, no other service in the country compared, though the platform’s launch was somewhat rocky at first. Most on-demand services offered by Canadian carriers at the time were pay-per-watch and any attempts by carriers to introduce different payment models for content services had been shut down by the Canadian Radio Telecommunications Commission.

In contrast, Netflix gave Canadians a vast catalog of content to consume at their leisure, for a low flat monthly fee. One pay-per-view movie purchase from Rogers at approximately $7 would match an entire month’s worth of Netflix access.

MobileSyrup.com

<a href="http://MobileSyrup.com" rel="nofollow">MobileSyrup.com</a>Shomi's closure announcement.

Canada’s strict net neutrality laws prompted the CRTC to chastise services like Videotron for promoting their own content through the use of data caps — discussions which prompted hearings about differential pricing and zero rating in Canada’s wireless future.

Having dedicated her life to the arts, Leadlay believes that awareness of Canadian content and services should be prioritized over the organic consumer market. She compares it to the colour-blind casting movement taking place in the performing arts world. If Canadian services can’t catch up to the strength of American movements, putting rules in place is the only way to ensure their use.

While Canadian regulators have been debating this, Netflix has penetrated over 5.2 million out of approximately 13 million total Canadian households, and likely added over one million Canadian customers in 2016 alone.

Shomi’s death left many questioning whether the digital revolution would simply bring about a new brand of struggling Canadian entertainers in the form of digital content producers. One of the newly unemployed was James who had finally discovered her passion in digital content.

A new phase of struggling Canadian entertainment

Over 100 former “Shomis” were left with nothing except a vague promise that Rogers would try to hire as many people back as they could.

Rather than take their word for it, the team launched “hireshomi.com” with the hope of helping everyone find a new job as fast as possible. The former colleagues get together often, and refer to themselves as “Shomis” to this day.

As the weeks towards the shut-down progressed, the layoffs came in four waves. The first, which consisted of the 10 to 15-person marketing team, was the hardest, said James. She teared up while explaining that walking through rows of empty desks upon leaving the office that night made it real for her.

The dev-ops were part of the second wave, and James was part of the third. While she was given her end-date in advance, many of her colleagues received their papers on the same day. However, like her colleagues, James believes that with just a few more years, Shomi could have been “neck in neck with Netflix,” at least in Canada.

I have to wonder if they are too used to receiving rents from subscribers every month in a protected ecosystem

While the ‘Shomis’ were devastated upon simultaneously losing their jobs and their brand, millions of Canadians didn’t feel the loss as deeply as they did.

By the time Shomi and the Bell equivalent CraveTV entered the Canadian streaming space in 2014, anyone interested in a streaming service had already purchased a subscription with an American giant that had once again beat Canada to the punch.

Advertisement

A report stemming from the CBC revealed that while Netflix is well on its way to achieving 50 per cent household penetration in Canada, Shomi had just under 900,000 subscribers — it’s also unclear how many of those subscribers were actually paying a subscription fee — before announcing its decision to shut down. Bell’s streaming service CraveTV recently hit one million subscribers.

Rowe goes on to say that she and her team struggled with their churn rate — the amount of customers that eventually left Shomi for another streaming platform.

She also says that acquiring licenses for content on streaming platforms is difficult when one service is more influential than the other. Content is licensed to platforms on either a regional or exclusive basis.

Canada caught between a cultural deficit and a financial risk

By the time Shomi arrived on the scene, Netflix had already obtained Canadian licenses for the most sought after content and was also powerful enough to insist on exclusive contracts from providers. While Shomi employees were thrilled to obtain the exclusive regional license for Modern Family, losing Scandal to Netflix’s exclusive contract with creator Shonda Rhimes hit them hard.

Rowe and James both spoke of a plan to one day follow in Netflix’s footsteps by launching original content on Shomi. CraveTV has already put this plan into action. “Original content was in the game plan,” said Rowe.

As someone who was moved from another department at Rogers to work with Shomi, and was later let go, Rowe often wonders if the government could have done more to protect the Canadian service, and whether it had a responsibility to do so.

The CRTC thinks they do, and recently criticized Rogers and Shaw for shutting down the service after just two years.

“Far be it for me to criticize the decisions taken by seasoned business people, but I can’t help but be surprised when major players throw in the towel on a platform that is the future of content — just two years after it launched,”said CRTC chairman Jean-Pierre Blais during a recent speech at the Canadian Chapter of the International Institute of Communications.

“I have to wonder if they are too used to receiving rents from subscribers every month in a protected ecosystem, rather than rolling up their sleeves in order to build a business without regulatory intervention and protection.”

After shuttering the service, Shaw released a financial report that wrote Shomi off as a $182 million dollar operation that yielded only $46 million in revenue over 2016. It’s important to keep in mind that Shaw’s stake in Shomi was just 50 per cent, making it reasonable to assume that Rogers and Shaw together spent over $364 million on the streaming service in 2016 alone, while generating just $92 million in returns.

Rogers and Shaw were asked to comment on Shomi as part of the reporting for this piece but did not immediately reply. Rogers did however begin offering a credit for Netflix immediately after sending out notice that Shomi would be shutting down.

In the meantime, customers can receive Netflix free with Rogers for the next six months and Amazon Prime Video just made its full Canadian launch.

“Shomis” felt the loss on behalf of the whole country, but for most Canadians life went on

While Canadians reevaluate their video streaming options, James adjusts to her new work life at Rogers. While Shomi and Rogers were technically part of the same company, the difference between them couldn’t be wider.

“For example, I just opened up a ticket with I.T. They won’t open that ticket until next week. If I opened up that ticket with Shomi it would be looked at the same day,” she explains.

Her commute to work is no longer a one-hour bus ride to the Shomi offices, but rather a one-hour car trip to the Rogers office in North York. However, the biggest difference is that James no longer feels like someone always has her back.

“It’s kind of like an old Polish grandmother,” she said of Rogers. “They have their one way of thinking and it’s really hard to change that way of thinking. Going to Shomi it was like going to work for your best friend every day. There was nothing against you, there was no belittling you, no micromanaging, nothing like that. It was a different atmosphere altogether,”

Currently, James knows only one person on her team and is still uneasy. While she’s technically been a Rogers employee for the last three years, she’s not as sure of herself within the company.

“At Shomi I always had a friend to talk to. Here, I don’t know if they want to be my friend,” said James.

James never doubted her faith in Shomi’s potential however, saying that she thought it was “a saving grace for Canada.” Though, she’s begun to doubt Canada’s own sense of identity.

“Since Shomi shut down, I honestly have no clue where Canadian content is going.”

With the wave of American movies, television, music and now digital media, constantly crashing into Canadian homes, many have questioned whether Canada will forever remain a door mat on which Hollywood can wipe its boots.

The names of former Shomi employees interviewed in this story have been changed to protect their privacy.

MobileSyrup is a Canadian-focused tech site dedicated to providing the latest news & reviews on smartphones, tablets, wearables, IoT, VR, gaming and automotive.

25 Dec 21:08

Race, Fame and Ability: untangling media coverage of NFL QBs

by Ethan

Some research from our lab, the Center for Civic Media, because it’s fun and something I’m glad we produced.


In the US, NFL football is more than a sport – it’s a stage on which broader national dramas play out. In the past years, the NFL has brought to national attention conversations about domestic violence, about cheating and fairness and about the ethics of loving a sport that is likely killing its players. With Colin Kapernick’s decision not to stand for the singing of the national anthem during a pre-season football game, starting a wave of similar protests by athletes, a national debate about endemic racism in the US has now become a debate about race, protest, politics and NFL football.

Some years ago, journalist and activist, the late Dori Maynard posed a question to the Media Cloud team: Does sports media use different language to talk about black and white athletes? The question, Dori told us, came from basketball player Isaiah Thomas, who had observed that journalists often described black athletes as physically talented but talked about the intelligence of white athletes. While both descriptions are laudatory, they focus on different aspects of a player’s talents, and enforce long-standing racial stereotypes about intellect and physicality. Could Media Cloud, Dori wondered, put some numbers to these anecdotes?

This isn’t a new research question. Scholars have analyzed the language play-by-play announcers use and have seen the patterns in which white players are praised for intelligence and black players for physical attributes. (See also Rainville and McCormick, 1977 and Rada 1996) Media Cloud gives us the chance to analyze a different corpus, sports stories written after the game, and to examine this possible phenomenon on a different scale. We focused our study on the attention paid to and language used to discuss NFL quarterbacks, the most highly paid and most discussed players on the field.

So do we talk about white quarterbacks as intelligent and black quarterbacks as athletic? Well, like almost everything involving media and race, it’s complicated.

First, we talk a great deal about football in the US media. We analyzed tens of thousands of  stories from 478 publications (including US sports websites like NFL.com as well as national and regional sources) over 4 months of NFL regular season coverage in 2015.Despite the prominence of stories like , the vast majority of writing about football discusses this week’s results, next week’s matchup and teams’ strategies for success. As a result, the table of word frequencies when we talk about quarterbacks is heavy on two kinds of words: words that describe gameplay, and words that describe injuries.

We’ve classified each of the 53 quarterbacks who played in NFL games last season as white, black or hispanic (using data from the besttickets unofficial NFL player census, acknowledging that these categories are socially constructed, complex and overlapping.) We then examined what words are associated with coverage of white QBs and QBs of color. In general, white QBs were slightly more associated with action words – ran, threw, leapt – and non-white QBs with words about their health and bodies, their off-field lives and descriptive words, like “dominant” or “judgement”. (Our handcoding of the top 250 words associated with QBs, and synonyms for those words, is here.)

We further examined what words were disproportionately associated with white and non-white QBs. For instance, the words “Heisman” and “trophy” were more than three times as likely to appear in stories about black QBs than about white QBs, likely because Heisman winning black QBs Marcus Mariota and Jameis Winston played more last year than white Heisman winner Johnny Manziel. Some of those terms do suggest a focus on the physicality of black QBs:

Word used more with black QBs Usage note
“Mobile” 2.48x
“Threat” 2.46x (aka: “dual threat” to run or pass)
“Legs” 2.03x
“Runner” 2.00x
“Scrambling” 1.97x
“Rushing” 1.92x
“Sliding” 1.87x
“Speed” 1.84x
“Balance” 1.84x (may refer to a “balanced offense” as well as to the physical characteristic)

Words disproportionately associated with white quarterbacks tend to characterize specific scandals and controversies. In most cases, these words describe only one or two quarterbacks, whereas the words disproportionately associated with black QBs often describe multiple players:

Word used more with white QBs Note
“Deflated” only associated with Tom Brady
“Charter” only associated with Ryan Mallett missing a charter flight
“Court”
“Hormone”
“HGH”
“Jazeera” An Al Jazeera story about possible use of human growth hormone in the NFL

Words associated with both white and black quarterbacks, but disproportionately with white QBs also include “domestic” (ie., domestic violence) and partying.

Before concluding that US media is somehow biased against white QBs and their scandals, it’s worth keeping in mind that these terms disproportionately associated with white QBs are highly idiosyncratic – they’re more the portrait of a single player’s struggles than the way a whole group of players are characterized. Moving down in the frequency table to words that appear 1.5x to 5x more with white QBs than black QBs, we find some evidence to support the “white brains, black bodies” hypothesis, but less than we expected.

Word used more with white QBs Usage Note
“Slipped” 4.3x
“Slow” 4.2x
“Prepared” 2.3x
“Practice” 2.1x
“Caller” 1.9x (“signal caller”)
“Steady” 1.7x

If there’s no racial smoking gun in looking at word frequencies, it may be because, as John Caravalho put it, “No broadcaster or sportswriter this side of Rush Limbaugh is so self-destructive as to blatantly muse on the suitability of a black quarterback.” Reporters may be increasingly sensitive to issues of word choice. But the amount of attention paid to white versus black QBs tells a somewhat different story.

We analyzed how much media attention each of the 53 quarterbacks in our study received. To adjust for the fact that some quarterbacks in our set played very few minutes, we calculated words per minute played, a statistic that ranged from 25.5 words/minute for Titans backup Zack Mettenberger, to 471.4 words/minute for the Cowboys Tony Romo, who suffered a shoulder injury and missed most of the season, to the great dismay of the Dallas press. While Romo is the largest outlier in the set, five other quarterbacks – all white – received unusually high words per minute scores: Brandon Weeden, Johnny Manziel, Landry Jones, Peyton Manning and Tom Brady. The first three – Weeden, Manziel and Jones – played very few games – Jones was a substitute in a single game, while Weeden and Manziel started fewer than 3 games in a 16 game season – skewing these counts. Manning and Brady are “name-brand” quarterbacks, who received additional attention in 2015, Brady for the ongoing “Deflategate” saga and Manning for winning the Super Bowl and retiring.

Comparing a quarterback’s passer rating to his words of coverage suggests that “name brand” quarterbacks are at a distinct advantage in terms of media attention. Six quarterbacks – five white, one black – appear as outliers in this chart. (Romo, who we code as “Hispanic”, didn’t play enough minutes in 2015-16 to have a QB rating.) Peyton Manning, Aaron Rodgers and Tom Brady are all elite quarterbacks who are also recognizable public figures, endorsing products and commanding media attention. (All receive more than $6m in endorsements per year, and rank #1, #4 and #5 in the list of QBs ranked by endorsement money in 2015.) Manziel’s disproportionate attention springs from notoriety – he was benched after videos surfaced of him partying during a bye week – while Andrew Luck had an injury-plagued season that was both poor and widely discussed. The only black quarterback who is an outlier in this set is Marcus Mariota, who outperformed expectations for the Titans, and generated widespread hand-wringing in Tennessee when he was injured late in the season. Notably, the year’s best-rated quarterback – the Seattle Seahawks’ Russell Wilson – is black, and received significantly less attention than worse-rated “brand name” quarterbacks, though average attention for his rating as predicted by our model. Like Manning, Rodgers and Brady, Wilson makes more than $6m a year in endorsements, but his financial success doesn’t lead to disproportionate coverage. Nor does it lead to overcoverage of Drew Brees and Eli Manning, white QBs who were #2 and #3 on the endorsement list in 2015.

Given the messy relationship between performance and attention, we asked whether a naive hypothesis – that sportswriting coverage tracked actual performance – might help answer Dori and Isiah’s question. If black quarterbacks tend to be described as “athletic”, might it be in part because their athleticism is more impressive than that of white quarterbacks?

We looked at two statistics to try to calculate “athleticism”: the 40 yard dash and rushing yards gained by the quarterback. White quarterbacks averaged a little over 4.8 seconds on the 40 yard dash, while black quarterbacks averaged a little below 4.6 seconds. In the NFL, that .25 second gap is an eternity – black quarterbacks, on average, run nearly as fast as receivers, the fastest players on the field, while white quarterbacks are closer to linebackers. That speed apparently matters, as black quarterbacks averaged a little over 200 rushing yards in a season, while white quarterbacks generally had fewer than 50.

This finding about differences in athletic ability by race is obviously heavily loaded, given the long history of racist speech that portrays blacks as fundamentally physically different than whites.  We note that the system that results in the presence of more athletic black quarterbacks than white quarterbacks in the NFL is a highly complex one that is deeply embedded in the racial mores of our society.  This piece on how modern NFL quarterbacks are made finds that the top 15 quarterback prospects in the 2016 draft overwhelmingly: started playing quarterback by age 9, came from stable families in homes worth at least the median home value, had outside coaching starting in high school, and participated in year round formal 7v7 programs.  This kind of intense, adult driven athletic experience is much more common in suburban communities than urban communities.  For one example, his piece on the “Hidden Demographics of Youth Sports” lists the five states with the lowest rate of high school sports participation, and four of those five are among the states with the most black households.  All of this is to say that this data on the athletic advantage of black over white quarterbacks may or may not say anything about inherent athleticism of black people but almost certainly says something about the deeply racially infused cultural systems that produce modern professional athletes.

Given all of the above, there’s an argument that black quarterbacks are genuinely more athletic – at least in terms of foot speed – than white quarterbacks, and the differences we see in language about quarterbacks may correlate to their performance. That may run counter to suspicions that led Dori to ask her question. But we did find a way in which there’s an apparent racial disparity in coverage: sheer attention.

Only eight quarterbacks broke the 40,000 word barrier in our set, two black, one hispanic, five white. Set the bar at 50,000 and we’re down to four white QBs and Tony Romo. At the highest levels of attention, four “name-brand” quarterbacks (Rodgers, Brady, Manning, Romo) and one screw-up (Manziel) dominate discussion of football in 2015-6. Elite black QBs – Russell Wilson, Marcus Mariotta, Cam Newton – received more attention than mediocre quarterbacks, but less than name brand, endorsement laden white QBs, despite in Wilson’s case, significantly superior performance.

Is there a racial bias in sportswriting about the NFL? Probably.That bias may be related to which NFL players gain endorsement contracts and widespread celebrity, and which ones fall short of expectations to reach that elite level. It’s difficult to entangle causality, though – all but one of these “name brand” QBs are white, and we may pay attention to them because of their celebrity, which correlates only partially to their superior athletic performance, and may correlate more closely to their race.

We will be updating our study at the close of the 2016-7 NFL season, and are looking forward to seeing whether Kapernick’s protest challenged the attention patterns we saw in the previous season.

This post was written by Ethan Zuckerman in collaboration with Allan Ko, Rahul Bhargava, and Hal Roberts. Allan Ko produced the graphics and conducted the quantitative research.

25 Dec 21:07

Week 97 complete: Alone on Christmas Eve, but not lonely

by tyfn

Week 97 complete: Alone on Christmas Eve, but not Lonely

I don’t get lonely spending the Christmas holidays alone, I enjoy the quiet time and always cool things to do. This morning I wandered around Stanley Park, happy to be surrounded by nature, while reflecting on the positives of living in such a beautiful city.

Merry Christmas, Happy Hanukkah, Joyous Festivas, Season Greetings to all!!!

To recap: On Sunday, December 18th, I completed Cycle 25 Week 1. I have Multiple Myeloma and anemia, a rare blood cancer. It is incurable, but treatable. From February to November 2013, I received Velcade chemo through weekly in-hospital injections as an outpatient. Since February 9th 2015, I have been on Pomalyst and dexamethasone chemo treatment (Pom/dex).

Weekly chemo-inspired self-portraits can be viewed in my flickr album.

Riding to sunsetMay 2014: Riding to Sunset

The post Week 97 complete: Alone on Christmas Eve, but not lonely appeared first on Fade to Play.

25 Dec 21:06

A Visual Artist Animated His Childhood Love for Skateboarding

by Diana Shi for The Creators Project

All GIFs courtesy the artist

With a pared-down aesthetic and an appreciation for witnessing the brush strokes, animator Freddy Arenas carves out a hovel of personal creation on his social media account, featuring skateboarding tricks and summer bike rides. A student of visual communications, Arenas tended to his artistic muscle in the form of animation experiments in both 2D and 3D. He eventually parlayed his skills into a career as an art director and animator.

What stands out most from his work is a sleek style that forgoes an excess of flourishes, never muddling the artist's visual language. Arenas boasts a star-studded rolodex, counting Kaplan, Inc., Netflix, and Google News as clients for illustrations and stop-motion animation. In his growing portfolio, the motion-savvy artist brings both original human characters and disembodied graphics to the table. Arenas artist treats his Instagram as his own corner for experimental expression, where he can explore some of the latest themes rolling around his head.

In recent posts, Arenas hones in on his childhood passion for skateboard tricks, and his warm-weather love for biking down New York’s alleyways. The animator’s Instagram serves as an everyday microcosm of his mind’s playful aesthetic: low pressure, but high-end results. Of the artistic ideals behind his Instagram, he tells The Creators Project: “I've always try to do personal experiments on the side. At first, I was using them as a way to try out new animation and illustrations styles, but at some point they just turned into the kind of stuff I like doing and that I'm not always able to do for clients.”

Arenas has an appreciation for social media platforms, and often harnesses the internet’s short attention span to make pieces that reflect the fly-by-night nature of his audience. He shares, “The one thing interesting about sharing the experiments on Instagram is the sense of immediacy. It keeps me wanting to make content constantly and at the same time it feels ephemeral which takes the pressure off, so is easy to try things out without been too precious about.”


 

 

A video posted by Freddy Arenas (@fred.arenas) on

 

 

A video posted by Freddy Arenas (@fred.arenas) on


See more animations from Freddy Arena, on his website, here, and follow his experiments on Instagram, here.

Related:

Bittersweet Animation Tells the Tale of Leonard Cohen’s “Two Went to Sleep”

Why It’s Better To Animate a Film Alone, Even If It Takes 4 Years

A Slice-of-Life Stop-Motion Set During an Argentine Dictatorship

25 Dec 21:06

Twitter Favorites: [ArchReview] Criticism in crisis: https://t.co/zK0Si9xMtG ‘There’s no such thing as bad architecture; only good architecture and… https://t.co/WeJBGXlIrq

Architectural Review @ArchReview
Criticism in crisis: architectural-review.com/10015758.artic… ‘There’s no such thing as bad architecture; only good architecture and… twitter.com/i/web/status/8…
25 Dec 21:06

Recommended on Medium: Books Of The Year And How To Read Them

Yes, I do consider myself a hero.

“Phenomenologal!” — Alex Balk, The Awl

I read fifty-eight books this year. If it sounds like I’m bragging then I have finally achieved my goal of getting my point across, because it was a very conscious effort on my part to do all that reading and I want the whole goddamn world to know about it. Because oh my God, it was work. Not that the books weren’t good — with very few exceptions, I loved everything I read — but the labor required to read a (ugh) longform piece of writing here in 2016 is so much more herculean than it was even ten years ago, given the many distractions we have these days and how truncated our attention spans are now. Would you like to hear my secrets? Well too bad, it’s my website, I’m going to share them anyway.

  1. Read printed books. Kindles and Nooks or ewhatevers are great, they’re very portable, you don’t have to worry about losing your page, etc. They are also connected to the greatest idiot-making poison-dispensing waste of time ever, which is the Internet. Don’t give yourself the chance to just click over “for a few seconds” and see what’s going on. You don’t need to check your mail. NOTHING GOOD IS HAPPENING ON TWITTER and you’re lying to yourself if you try to argue otherwise. If you read the Internet on the phone, put your phone in another room. Don’t look at it until you’ve finished 25 pages, or whatever amount you’ve given yourself as a minimum. Keep a pad of sticky notes and a pen with you if you think you’re going to need to write something down to look up later but do not give yourself a chance to go look it up until you are done reading, because you will never come back.
  2. Always be reading. Have a book ready for when you finish your current one, and as soon as you are done with the one you are reading at the present moment, start another one. Don’t give yourself an opportunity to “take a few days off to catch up on the magazines,” because you will never come back. You won’t even catch up on the magazines either, you will just read the Internet and get dumber and sadder. The Internet wants you to be book-illiterate. Don’t let it. Also, once you start the next book make sure there’s another one on deck.
  3. Find the half an hour a day that you are doing your dumbest, least necessary thing and use that time to read a book instead. I am almost 100% certain that you are using that half hour to do dumb shit on the Internet, but maybe you’re a big Bravo fan. Whatever it is, cut it out. Read the book instead. You’ll feel better about yourself and less bad about whatever it was you used to be doing, especially if it was watching “Vanderpump Rules” or watching people argue on Facebook.
  4. Keep a list of what you’ve read. This might not be all the way necessary and may only appeal to the part of the man-brain that loves lists, but there is something about the feeling of accomplishment you get in seeing the number of books you’ve completed grow larger that keeps you at it, and if you don’t maintain that feeling of accomplishment you will take time away from reading books and never come back.

Another important part of keeping a list is it will let you remember which books you’ve read over the last year, a thing which gets harder and harder to do as you age. Anyway, of the 58 books I read (that’s a lot of books, right? You’re correct to be in awe of me) a number of them were from previous years in which I was less literate (it turns out everyone was right about how good that Viv Albertine memoir was back in 2014), but there were at least five books that were published this year (or thereabouts) that were excellent and I will share them here in case you are looking for something to get you started.

Edna O’Brien’s The Little Red Chairs: I already told you about this one, here’s what I had to say.

Novel Enjoyed

Claire-Louise Bennet’s Pond: Same deal.

Here’s A Novel You Might Enjoy

Ruth Scurr’s John Aubrey, My Own Life: I guess I talked about books more than I thought this year.

Here’s The Hot New 17th Century Biography For Fall

Erika Robb Larkins’ The Spectacular Favela: Violence in Modern Brazil: Okay, this is sort of a cheat since it came out in 2015 but I am going to count it anyway since I’m the person making the rules and also it’s a university press book and they really need all the help they can get. This one gets a little academic in parts, and God knows ethnography has all sorts of opportunities for accusations of problematization — if there’s something particularly egregious about the volume in question please let me know, I am always willing to learn — but its lack of sentimentality and sheer on-the-ground reportage more than make up for the parts you spend yelling “Go back to grad school!”

The Spectacular Favela

Sarah Bakewell’s At the Existentialist Café: Picture it: Jean-Paul Sartre, Simone de Beauvoir and Raymond Aron have apricot cocktails at some bar in Paris. Aron “opens their eyes to a radical new philosophical method known as phenomenology. Pointing to his drink, he says, ‘You see — with phenomenology you can make philosophy out of this cocktail!’” If this anecdote sounds familiar to you it is probably because you have read any review of At the Existentialist Café that was printed this year. They all mention it, which may have something to do with the fact that it is related right at the beginning of the book and in the accompanying press materials. In any event, this was the most delightful thing I read in 2016, because it made extremely complicated philosophy comprehensible to an idiot like me. Think of how easy it will be for you, who, except for the fact that are you still reading my post at this point, are demonstrably smarter. Beyond turning the complex, possibly nonsensical, work of Heidegger into something that does not make you fall asleep, Bakewell keeps the narrative moving along and also juggles any number of characters with ease. There is a lot of addressing the reader in this book in a way that usually makes me itch but somehow works in this case, and it is maybe the knowledge that you are in the hands of someone who has a deep affinity for the material and wants to share it with you that makes the whole thing so appealing. Anyway, if this is the sort of thing that sways you, the New York Times also named this one of its best books of the year and they read even more than 58 books. 58 is still pretty impressive though.

At The Existentialist Cafe

Tell you what, order these five titles now and get yourself set for 2017. With the world set to end at some indeterminate point it will be good to have a couple a books by your side as you wait for the radiation poisoning to do its work. Happy reading!


Books Of The Year And How To Read Them was originally published in The Awl on Medium, where people are continuing the conversation by highlighting and responding to this story.

25 Dec 21:05

Moving to Surface Pro 4

by Volker Weber

PowerPoint Mobile

I like this machine a lot. It will change a few workflows that are currently firmly in Apple territory. One of these is presentations. For the last ten years I have been using Keynote which only runs on iOS and macOS. I have developed my own style which is very clean, mostly uses photos and very few words and now I am practicing this style on PowerPoint.

This turns out to be a bigger struggle than anticipated. Apparently I cannot add a personal template to PowerPoint Mobile and would have to live with the awful designs Microsoft provides. Or I would have to always start from an existing presentation and pull a "Save as". Which is a dangerous workflow. Duplicating a file and then renaming it before opening in PowerPoint should be safer.

I am an O365 subscriber, so technically I could be using Office 2016. I briefly installed it, opened Outlook 2016 and then ran as fast as I could. It is as bogged down with old features as Notes and still does not know how to do a proper archive in Gmail. It is stunning how little Microsoft knows what Microsoft knows. Outlook on iOS is perfect, Outlook on Android is somewhat broken, the Mail client in Windows 10 isn't too bad but does not know about aliases, the full Outlook client is hell.

Word Mobile

Word Mobile works well for me. PowerPoint Mobile would work very well if it had personal templates, which it will eventually have to add. With their new "on any client" strategy, Microsoft is hitting the right notes for me. With a terabyte of storage in OneDrive as backup, life is incredibly easy.

25 Dec 21:04

north shore in all its glory

by Emily Chang

north shore in all its glory

Photo Caption: north shore in all its glory

Photo taken at: North Shore Of Oahu

Instagram filter used: Normal

View in Instagram ⇒

25 Dec 20:36

Ruby 2.4 Released: Faster Hashes, Unified Integers and Better Rounding

by Jonan Scheffler

The Ruby maintainers continued their annual tradition by gifting us a new Ruby version to celebrate the holiday: Ruby 2.4 is now available and you can try it out on Heroku.

Ruby 2.4 brings some impressive new features and performance improvements to the table, here are a few of the big ones:

Binding#irb

Have you ever used p or puts to get the value of a variable in your code? If you’ve been writing Ruby the odds are pretty good that you have. The alternative REPL Pry (http://pryrepl.org/) broke many of us of this habit, but installing a gem to get a REPL during runtime isn’t always an option, or at least not a convenient one.

Enter binding.irb, a new native runtime invocation for the IRB REPL that ships with Ruby. Now you can simply add binding.irb to your code to open an IRB session and have a look around:

# ruby-2.4.0
class SuperConfusing
  def what_is_even_happening_right_now
    @x = @xy[:y] ** @x

    binding.irb
    # open a REPL here to examine @x, @xy,
    # and possibly your life choices
  end
end

One Integer to Rule Them All

Ruby previously used 3 classes to handle integers: the abstract super class Integer, the Fixnum class for small integers and the Bignum class for large integers. You can see this behavior yourself in Ruby 2.3:

# ruby-2.3.3
irb> 1.class
# => Fixnum
irb> (2**100).class
# => Bignum
irb> Fixnum.superclass
# => Integer
irb> Bignum.superclass
# => Integer

Ruby 2.4 unifies the Fixnum and Bignum classes into a single concrete class Integer:

# ruby-2.4.0
irb> 1.class
# => Integer
irb> (2**100).class
# => Integer

Why Did We Ever Have Two Classes of Integer?

To improve performance Ruby stores small numbers in a single native machine word whenever possible, either 32 or 64 bits in length depending on your processor. A 64-bit processor has a 64-bit word length; the 64 in this case describes the size of the registers on the processor.

The registers allow the processor to handle simple arithmetic and logical comparisons, for numbers up to the word size, by itself; which is much faster than manipulating values stored in RAM.

On my laptop it's more than twice as fast for me to add 1 to a Fixnum a million times than it is to do the same with a Bignum:

# ruby-2.3.3
require "benchmark"

fixnum = 2**40
bignum = 2**80

n = 1_000_000

Benchmark.bm do |x|
  x.report("Adding #{fixnum.class}:") { n.times { fixnum + 1 } }
  x.report("Adding #{bignum.class}:") { n.times { bignum + 1 } }
end

# =>
#                     user     system      total        real
# Adding Fixnum:  0.190000   0.010000   0.200000 (  0.189790)
# Adding Bignum:  0.460000   0.000000   0.460000 (  0.471123)

When a number is too big to fit in a native machine word Ruby will store that number differently, automatically converting it to a Bignum behind the scenes.

How Big Is Too Big?

Well, that depends. It depends on the processor you’re using, as we’ve discussed, but it also depends on the operating system and the Ruby implementation you’re using.

Wait It Depends on My Operating System?

Yes, different operating systems use different C data type models.

When processors first started shipping with 64-bit registers it became necessary to augment the existing data types in the C language, to accommodate larger register sizes and take advantage of performance increases.

Unfortunately, The C language doesn't provide a mechanism for adding new fundamental data types. These augmentations had to be accomplished via alternative data models like LP64, ILP64 and LLP64.

LL-What Now?

LP64, IL64 and LLP64 are some of the data models used in the C language. This is not an exhaustive list of the available C data models but these are the most common.

The first few characters in each of these acronyms describe the data types they affect. For example, the "L" and "P" in the LP64 data model stand for long and pointer, because LP64 uses 64-bits for those data types.

These are the sizes of the relevant data types for these common data models:

|       | int | long | long long | pointer |
|-------|-----|------|-----------|---------|
| LP64  | 32  | 64   | NA        | 64      |
| ILP64 | 64  | 64   | NA        | 64      |
| LLP64 | 32  | 32   | 64        | 64      |

Almost all UNIX and Linux implementations use LP64, including OS X. Windows uses LLP64, which includes a new long long type, just like long but longer.

So the maximum size of a Fixnum depends on your processor and your operating system, in part. It also depends on your Ruby implementation.

Fixnum Size by Ruby Implementation

| Fixnum Range         | MIN             | MAX              |
|----------------------|-----------------|------------------|
| 32-bit CRuby (ILP32) | -2**30          | 2**30 - 1        |
| 64-bit CRuby (LLP64) | -2**30          | 2**30 - 1        |
| 64-bit CRuby (LP64)  | -2**62          | 2**62 - 1        |
| JRuby                | -2**63          | 2**63 - 1        |

The range of Fixnum can vary quite a bit between Ruby implementations.

In JRuby for example a Fixnum is any number between -263 and 263-1. CRuby will either have Fixnum values between -230 and 230-1 or -262 and 262-1, depending on the underlying C data model.

Your Numbers Are Wrong, You're Not Using All the Bits

You're right, even though we have 64 bits available we're only using 62 of them in CRuby and 63 in JRuby. Both of these implementations use two's complement integers, binary values that use one of the bits to store the sign of the number. So that accounts for one of our missing bits, how about that other one?

In addition to the sign bit, CRuby uses one of the bits as a FIXNUM_FLAG, to tell the interpreter whether or not a given word holds a Fixnum or a reference to a larger number. The sign bit and the flag bit are at opposite ends of the 64-bit word, and the 62 bits left in the middle are the space we have to store a number.

In JRuby we have 63 bits to store our Fixnum, because JRuby stores both Fixnum and Bignum as 64-bit signed values; they don't need a FIXNUM_FLAG.

Why Are They Changing It Now?

The Ruby team feels that the difference between a Fixnum and a Bignum is ultimately an implementation detail, and not something that needs to be exposed as part of the language.

Using the Fixnum and Bignum classes directly in your code can lead to inconsistent behavior, because the range of those values depends on so many things. They don't want to encourage you to depend on the ranges of these different Integer types, because it makes your code less portable.

Unification also significantly simplifies Ruby for beginners. When you're teaching your friends Ruby you longer need to explain the finer points of 64-bit processor architecture.

Rounding Changes

In Ruby Float#round has always rounded floating point numbers up for decimal values greater than or equal to .5, and down for anything less, much as you learned to expect in your arithmetic classes.

# ruby-2.3.3
irb> (2.4).round
# => 2
irb> (2.5).round
# => 3

During the development of Ruby 2.4 there was a proposal to change this default rounding behavior to instead round to the nearest even number, a strategy known as half to even rounding, or Gaussian rounding (among many other names).

# ruby-2.4.0-preview3
irb> (2.4).round
# => 2
irb> (2.5).round
# => 2
irb> (3.5).round
# => 4

The half to even strategy would only have changed rounding behavior for tie-breaking; numbers that are exactly halfway (.5) would have been rounded down for even numbers, and up for odd numbers.

Why Would Anyone Do That?

The Gaussian rounding strategy is commonly used in statistical analysis and financial transactions, as the resulting values less significantly alter the average magnitude for large sample sets.

As an example let's generate a large set of random values that all end in .5:

# ruby-2.3.3
irb> halves = Array.new(1000) { rand(1..1000) + 0.5 }
# => [578.5...120.5] # 1000 random numbers between 1.5 and 1000.5

Now we'll calculate the average after forcing our sum to be a float, to ensure we don't end up doing integer division:

# ruby-2.3.3
irb> average = halves.inject(:+).to_f / halves.size
# => 510.675

The actual average of all of our numbers is 510.675, so the ideal rounding strategy should give us a rounded average be as close to that number as possible.

Let's see how close we get using the existing rounding strategy:

# ruby-2.3.3
irb> round_up_average = halves.map(&:round).inject(:+).to_f / halves.size
# => 511.175
irb> (average - round_up_average).abs
# => 0.5

We're off the average by 0.5 when we consistently round ties up, which makes intuitive sense. So let's see if we can get closer with Gaussian rounding:

# ruby-2.3.3
irb> rounded_halves = halves.map { |n| n.to_i.even? ? n.floor : n.ceil }
# => [578...120]
irb> gaussian_average = rounded_halves.inject(:+).to_f / halves.size
# => 510.664
irb> (average - gaussian_average).abs
# => 0.011000000000024102

It would appear we have a winner. Rounding ties to the nearest even number brings us more than 97% closer to our actual average. For larger sample sets we can expect the average from Gaussian rounding to be almost exactly the actual average.

This is why Gaussian rounding is the recommended default rounding strategy in the IEEE Standard for Floating-Point Arithmetic (IEEE 754).

So Ruby Decided to Change It Because of IEEE 754?

Not exactly, it actually came to light because Gaussian rounding is already the default strategy for the Kernel#sprintf method, and an astute user filed a bug on Ruby: "Rounding modes inconsistency between round versus sprintf".

Here we can clearly see the difference in behavior between Kernel#sprintf and Float#round:

# ruby 2.3.3
irb(main):001:0> sprintf('%1.0f', 12.5)
# => "12"
irb(main):002:0> (12.5).round
# => 13

The inconsistency in this behavior prompted the proposed change, which actually made it into one of the Ruby 2.4 preview versions, ruby-2.4.0-preview3:

# ruby 2.4.0-preview3
irb(main):006:0> sprintf('%1.0f', 12.5)
# => "12"
irb(main):007:0> 12.5.round
# => 12

In ruby-2.4.0-preview3 rounding with either Kernel#sprintf or Float#round will give the same result.

Ultimately Matz decided this fix should not alter the default behavior of Float#round when another user reported a bug in Rails: "Breaking change in how #round works".

The Ruby team decided to compromise and add a new keyword argument to Float#round to allow us to set alternative rounding strategies ourselves:

# ruby 2.4.0-rc1
irb(main):001:0> (2.5).round
# => 3
irb(main):008:0> (2.5).round(half: :down)
# => 2
irb(main):009:0> (2.5).round(half: :even)
# => 2

The keyword argument :half can take either :down or :even and the default behavior is still to round up, just as it was before.

Why preview Versions Are Not for Production

Interestingly before the default rounding behavior was changed briefly for 2.4.0-preview3 there was an unusual Kernel#sprintf bug in 2.4.0-preview2:

# ruby 2.4.0-preview2
irb> numbers = (1..20).map { |n| n + 0.5 }
# => => [1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5]
irb> numbers.map { |n| sprintf('%1.0f', n) }
# => ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "12", "14", "14", "16", "16", "18", "18", "20", "20"]

In this example Kernel#sprintf appears to be rounding numbers less than 12 up as though it was using the Float#round method's default behavior, which was still in place at this point.

The preview releases before and after 2.4.0-preview2, both 2.4.0-preview1 and 2.4.0-preview3, show the expected sprintf behavior, consistent with ruby-2.3.3:

# ruby 2.4.0-preview1
irb> numbers.map { |n| sprintf('%1.0f', n) }
# => ["2", "2", "4", "4", "6", "6", "8", "8", "10", "10", "12", "12", "14", "14", "16", "16", "18", "18", "20", "20"]

# ruby 2.4.0-preview3
irb> numbers.map { |n| sprintf('%1.0f', n) }
# => ["2", "2", "4", "4", "6", "6", "8", "8", "10", "10", "12", "12", "14", "14", "16", "16", "18", "18", "20", "20"]

I discovered this by accident while researching this article and started digging through the 2.4.0-preview2 changes to see if I could identify the cause. I found this commit from Nobu:

commit 295f60b94d5ff6551fab7c55e18d1ffa6a4cf7e3
Author: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date:   Sun Jul 10 05:27:27 2016 +0000

    util.c: round nearly middle value

    * util.c (ruby_dtoa): [EXPERIMENTAL] adjust the case that the
      Float value is close to the exact but unrepresentable middle
      value of two values in the given precision, as r55604.

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Kernel#sprintf Accuracy in Ruby 2.4

This was an early effort by Nobu to handle cases where floating point numbers rounded inconsistently with Kernel#sprintf in ruby-2.3.3 (and before):

# ruby-2.3.3
irb> numbers = (0..9).map { |n| "5.0#{n}5".to_f }
# => [5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095]
irb> numbers.map { |n| sprintf("%.2f", n) }
# => ["5.00", "5.01", "5.03", "5.04", "5.04", "5.05", "5.07", "5.08", "5.08", "5.09"]

In the example above notice that 5.035 and 5.045 both round to 5.04. No matter what strategy Kernel#sprintf is using this is clearly unexpected. The cause turns out to be the unseen precision beyond our representations.

Not to worry though, the final version of Nobu's fixes resolves this issue, and it will be available in Ruby 2.4.

Kernel#sprintf will now consistently apply half to even rounding:

# ruby-2.4.0-rc1
irb> numbers = (0..9).map { |n| "5.0#{n}5".to_f }
# => [5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095]
irb> numbers.map { |n| sprintf("%.2f", n) }
# => ["5.00", "5.02", "5.02", "5.04", "5.04", "5.06", "5.06", "5.08", "5.08", "5.10"]

Better Hashes

Ruby 2.4 introduces some significant changes to the hash table backing Ruby's Hash object. These changes were prompted by Vladimir Makarov when he submitted a patch to Ruby's hash table earlier this year.

If you have a couple of hours to spare that issue thread is an entertaining read, but on the off-chance you're one of those busy developers I'll go through the major points here. First we need to cover some Ruby Hash basics.

If you're already an expert on Ruby hash internals feel free to skip ahead and read about the specific hash changes in Ruby 2.4.

How Ruby Implements Hash

Let's imagine for a moment that we have a severe case of "not invented here" syndrome, and we've decided to make our own Hash implementation in Ruby using arrays. I'm relatively certain we're about to do some groundbreaking computer science here so we'll call our new hash TurboHash, as it's certain to be faster than the original:

# turbo_hash.rb
class TurboHash
  attr_reader :table

  def initialize
    @table = []
  end
end

We'll use the @table array to store our table entries. We gave ourselves a reader to access it so it's easy to peek inside our hash.

We're definitely going to need methods to set and retrieve elements from our revolutionary hash so let's get those in there:

# turbo_hash.rb
class TurboHash
  # ...

  def [](key)
    # remember our entries look like this:
    # [key, value]

    find(key).last
  end

  def find(key)
    # Enumerable#find here will return the first entry that makes
    # our block return true, otherwise it returns nil.

    @table.find do |entry|
      key == entry.first
    end
  end

  def []=(key, value)
    entry = find(key)

    if entry
      # If we already stored it just change the value
      entry[1] = value
    else
      # otherwise add a new entry
      @table << [key, value]
    end
  end
end

Excellent, we can set and retrieve keys. It's time to setup some benchmarking and admire our creation:

require "benchmark"

legacy = Hash.new
turbo  = TurboHash.new

n = 10_000

def set_and_find(target)
  target = rand

  target[key] = rand
  target[key]
end

Benchmark.bm do |x|
  x.report("Hash: ") { n.times { set_and_find(legacy) } }
  x.report("TurboHash: ") { n.times { set_and_find(turbo) } }
end

#                  user     system      total        real
# Hash:        0.010000   0.000000   0.010000 (  0.009026)
# TurboHash:  45.450000   0.070000  45.520000 ( 45.573937)

Well that could have gone better, our implementation is about 5000 times slower than Ruby's Hash. This is obviously not the way Hash is actually implemented.

In order to find an element in @table our implementation traverses the entire array on each iteration; towards the end we're checking nearly 10k entries one at a time.

So let's come up with something better. The iteration is killing us, if we can find a way to index instead of iterating we'll be way ahead.

If we knew our keys were always going to be integers we could just store the values at their indexes inside of @table and look them up by their indexes later.

The issue of course is that our keys can be anything, we're not building some cheap knock-off hash that can only take integers.

We need a way to turn our keys into numbers in a consistent way, so "some_key" will give us the same number every time, and we can regenerate that number to find it again later.

It turns out that the Object#hash is perfect for this purpose:

irb> "some_key".hash
# => 3031662902694417109
irb> "some_other_key".hash
# => -3752665667844152731

irb> "some_key".hash
# => 3031662902694417109

The Object#hash will return unique(ish) integers for any object in Ruby, and you'll get the same number back every time you run it again with an object that's "equal" to the previous object.

For example, every time you create a string in Ruby you'll get a unique object:

irb> a = "some_key"
# => "some_key"
irb> a.object_id
# => 70202008509060

irb> b = "some_key"
# => "some_key"
irb> b.object_id
# => 70202008471340

These are clearly distinct objects, but they will have the same Object#hash return value because a == b:

irb> a.hash
# => 3031662902694417109
irb> b.hash
# => 3031662902694417109

These hash return values are huge and sometimes negative, so we're going to use the remainder after dividing by some small number as our index instead:

irb> a.hash % 11
# => 8

We can use this new number as the index in @table where we store the entry. When we want to look up an item later we can simply repeat the operation to know exactly where to find it.

This raises another issue however, our new indexes are much less unique than they were originally; they range between 0 and 10. If we store more than 11 items we are certain to have collisions, overwriting existing entries.

Rather than storing the entries directly in the table we'll put them inside arrays called "bins". Each bin will end up having multiple entries, but traversing the bins will still be faster than traversing the entire table.

Armed with our new indexing system we can now make some improvements to our TurboHash.

Our @table will hold a collection of bins and we'll store our entries in the bin that corresponds to key.hash % 11:

# turbo_hash.rb
class TurboHash
  NUM_BINS = 11

  attr_reader :table

  def initialize
    # We know our indexes will always be between 0 and 10
    # so we need an array of 11 bins.
    @table = Array.new(NUM_BINS) { [] }
  end

  def [](key)
    find(key).last
  end

  def find(key)
    # now we're searching inside the bins instead of the whole table
    bin_for(key).find do |entry|
      key == entry.first
    end
  end

  def bin_for(key)
    # since hash will always return the same thing we know right where to look
    @table[index_of(key)]
  end

  def index_of(key)
    # a pseudorandom number between 0 and 10
    key.hash % NUM_BINS
  end

  def []=(key, value)
    entry = find(key)

    if entry
      entry[1] = value
    else
      # store new entries in the bins
      bin_for(key) << [key, value]
    end
  end
end

Let's benchmark our new and improved implementation:

                 user     system      total        real
Hash:        0.010000   0.000000   0.010000 (  0.012918)
TurboHash:   3.800000   0.010000   3.810000 (  3.810126)

So that's pretty good I guess, using bins decreased the time for TurboHash by more than 90%. Those sneaky Ruby maintainers are still crushing us though, let's see what else we can do.

It occurs to me that our benchmark is creating 10_000 entries but we only have 11 bins. Each time we iterate through a bin we're actually going over a pretty large array now.

Let's check out the sizes on those bins after the benchmark finishes:

Bin:  Relative Size:          Length:
----------------------------------------
0     +++++++++++++++++++     (904)
1     ++++++++++++++++++++    (928)
2     +++++++++++++++++++     (909)
3     ++++++++++++++++++++    (915)
4     +++++++++++++++++++     (881)
5     +++++++++++++++++++     (886)
6     +++++++++++++++++++     (876)
7     ++++++++++++++++++++    (918)
8     +++++++++++++++++++     (886)
9     ++++++++++++++++++++    (952)
10    ++++++++++++++++++++    (945)

That's a nice even distribution of entries but those bins are huge. How much faster is TurboHash if we increase the number of bins to 19?

                 user     system      total        real
Hash:        0.020000   0.000000   0.020000 (  0.021516)
TurboHash:   2.870000   0.070000   2.940000 (  3.007853)

Bin:  Relative Size:          Length:
----------------------------------------
0     ++++++++++++++++++++++  (548)
1     +++++++++++++++++++++   (522)
2     ++++++++++++++++++++++  (547)
3     +++++++++++++++++++++   (534)
4     ++++++++++++++++++++    (501)
5     +++++++++++++++++++++   (528)
6     ++++++++++++++++++++    (497)
7     +++++++++++++++++++++   (543)
8     +++++++++++++++++++     (493)
9     ++++++++++++++++++++    (500)
10    +++++++++++++++++++++   (526)
11    ++++++++++++++++++++++  (545)
12    +++++++++++++++++++++   (529)
13    ++++++++++++++++++++    (514)
14    ++++++++++++++++++++++  (545)
15    ++++++++++++++++++++++  (548)
16    +++++++++++++++++++++   (543)
17    ++++++++++++++++++++    (495)
18    +++++++++++++++++++++   (542)

We gained another 25%! That's pretty good, I bet it gets even better if we keep making the bins smaller. This is a process called rehashing, and it's a pretty important part of a good hashing strategy.

Let's cheat and peek inside st.c to see how Ruby handles increasing the table size to accommodate more bins:

/* https://github.com/ruby/ruby/blob/ruby_2_3/st.c#L38 */

#define ST_DEFAULT_MAX_DENSITY 5
#define ST_DEFAULT_INIT_TABLE_SIZE 16

Ruby's hash table starts with 16 bins. How do they get away with 16 bins? Weren't we using prime numbers to reduce collisions?

We were, but using prime numbers for hash table size is really just a defense against bad hashing functions. Ruby has a much better hashing function today than it once did, so the Ruby maintainers stopped using prime numbers in Ruby 2.2.0.

What's This Other Default Max Density Number?

The ST_DEFAULT_MAX_DENSITY defines the average maximum number of entries Ruby will allow in each bin before rehashing: choosing the next largest power of two and recreating the hash table with the new, larger size.

You can see the conditional that checks for this in the add_direct function from st.c:

/* https://github.com/ruby/ruby/blob/ruby_2_3/st.c#L463 */

if (table->num_entries > ST_DEFAULT_MAX_DENSITY * table->num_bins) {...}

Ruby's hash table tracks the number of entries as they're added using the num_entries value on table. This way Ruby doesn't need to count the entries to decide if it's time to rehash, it just checks to see if the number of entries is more than 5 times the number of bins.

Let's implement some of the improvements we stole from Ruby to see if we can speed up TurboHash:

class TurboHash
  STARTING_BINS = 16

  attr_accessor :table

  def initialize
    @max_density = 5
    @entry_count = 0
    @bin_count   = STARTING_BINS
    @table       = Array.new(@bin_count) { [] }
  end

  def grow
    # use bit shifting to get the next power of two and reset the table size
    @bin_count = @bin_count << 1

    # create a new table with a much larger number of bins
    new_table = Array.new(@bin_count) { [] }

    # copy each of the existing entries into the new table at their new location,
    # as returned by index_of(key)
    @table.flatten(1).each do |entry|
      new_table[index_of(entry.first)] << entry
    end

    # Finally we overwrite the existing table with our new, larger table
    @table = new_table
  end

  def full?
    # our bins are full when the number of entries surpasses 5 times the number of bins
    @entry_count > @max_density * @bin_count
  end

  def [](key)
    find(key).last
  end

  def find(key)
    bin_for(key).find do |entry|
      key == entry.first
    end
  end

  def bin_for(key)
    @table[index_of(key)]
  end

  def index_of(key)
    # use @bin_count because it now changes each time we resize the table
    key.hash % @bin_count
  end

  def []=(key, value)
    entry = find(key)

    if entry
      entry[1] = value
    else
      # grow the table whenever we run out of space
      grow if full?

      bin_for(key) << [key, value]
      @entry_count += 1
    end
  end
end

So what's the verdict?

                  user     system      total        real
Hash:        0.010000   0.000000   0.010000 (  0.012012)
TurboHash:   0.130000   0.010000   0.140000 (  0.133795)

We lose. Even though our TurboHash is now 95% faster than our last version, Ruby still beats us by an order of magnitude.

All things considered, I think TurboHash fared pretty well. I'm sure there are some ways we could further improve this implementation but it's time to move on.

At long last we have enough background to explain what exactly is about to nearly double the speed of Ruby hashes.

What Actually Changed

Speed! Ruby 2.4 hashes are significantly faster. The changes introduced by Vladimir Makarov were designed to take advantage of modern processor caching improvements by focusing on data locality.

This implementation speeds up the Ruby hash table benchmarks in average by more 40% on Intel Haswell CPU.

https://github.com/ruby/ruby/blob/trunk/st.c#L93

Oh Good! What?

Processors like the Intel Haswell series use several levels of caching to speed up operations that reference the same region of memory.

When the processor reads a value from memory it doesn't just take the value it needs; it grabs a large piece of memory nearby, operating on the assumption that it is likely going to be asked for some of that data in the near future.

The exact algorithms processors use to determine which bits of memory should get loaded into each cache are somewhat difficult to discover. Manufacturers consider these strategies to be trade secrets.

What is clear is that accessing any of the levels of caching is significantly faster than going all the way out to pokey old RAM to get information.

How Much Faster?

Real numbers here are almost meaningless to discuss because they depend on so many factors within a given system, but generally speaking we can say that L1 cache hits (the fastest level of caching) could speed up memory access by two orders of magnitude or more.

An L1 cache hit can complete in half a nanosecond. For reference consider that a photon can only travel half a foot in that amount of time. Fetching from main memory will generally take at least 100 nanoseconds.

Got It, Fast... Therefore Data Locality?

Exactly. If we can ensure that the data Ruby accesses frequently is stored close together in main memory, we significantly increase our chances of winning a coveted spot in one of the caching levels.

One of the ways to accomplish this is to decrease the overall size of the entries themselves. The smaller the entries are, the more likely they are to end up in the same caching level.

In our TurboHash implementation above our entries were stored as simple arrays, but in ruby-2.3.3 table entries were actually stored in a linked list. Each of the entries contained a next pointer that pointed to the next entry in the list. If we can find a way to get by without that pointer and make the entries smaller we will take better advantage of the processor's built-in caching.

The new approach in ruby.2.4.0-rc1 actually goes even further than just removing the next pointer, it removes the entries themselves. Instead we store the entries in a separate array, the "entries array", and we record the indexes for those entries in the bins array, referenced by their keys.

This approach is known as "open addressing".

Open Addressing

Ruby has historically used "closed addressing" in its hash table, also known as "open hashing". The new alternative approach proposed by Vladimir Makarov uses "open addressing", also known as "closed hashing". I get that naming things is hard, but this can really get pretty confusing. For the rest of this discussion, I will only use open addressing to refer to the new implementation, and closed addressing to refer to the former.

The reason open addressing is considered open is that it frees us from the hash table. The table entries themselves are not stored directly in the bins anymore, as with a closed addressing hash table, but rather in a separate entries array, ordered by insertion.

Open addressing uses the bins array to map keys to their index in the entries array.

Let's set a value in an example hash that uses open addressing:

# ruby-2.4.0-rc1
irb> my_hash["some_key"] = "some_value"

When we set "some_key" in an open addressing hash table Ruby will use the hash of the key to determine where our new key-index reference should live in the bins array:

irb> "some_key".hash
# => -3336246172874487271

Ruby first appends the new entry to the entries array, noting the index where it was stored. Ruby then uses the hash above to determine where in the bins array to store the key, referencing that index.

Remember that the entry itself is not stored in the bins array, the key only references the index of the entry in the entries array.

Determining the Bin

The lower bits of the key's hash itself are used to determine where it goes in the bins array.

Because we're not using all of the available information from the key's hash this process is "lossy", and it increases the chances of a later hash collision when we go to find a bin for our key.

However, the cost of potential collisions is offset by the fact that choosing a bin this way is significantly faster.

In the past, Ruby has used prime numbers to determine the size of the bins array. This approach gave some additional assurance that a hashing algorithm which didn't return evenly distributed hashes would not cause a single bin to become unbalanced in size.

The bin size was used to mod the computed hash, and because the bin size was prime, it decreased the risk of hash collisions as it was unlikely to be a common factor of both computed hashes.

Since version 2.2.0 Ruby has used bin array sizes that correspond to powers of two (16, 32, 64, 128, etc.). When we know the bin size is going to be a factor of two we're able to use the lower two bits to calculate a bin index, so we find out where to store our entry reference much more quickly.

What's Wrong with Prime Modulo Mapping?

Dividing big numbers by primes is slow. Dividing a 64-bit number (a hash) by a prime can take more than 100 CPU cycles for each iteration, which is even slower than accessing main memory.

Even though the new approach may produce more hash collisions, it will ultimately improve performance, because collisions will probe the available bins linearly.

Linear Probing

The open addressing strategy in Ruby 2.4 uses a "full cycle linear congruential generator".

This is just a function that generates pseudorandom numbers based on a seed, much like Ruby's Rand#rand method.

Given the same seed the Rand#rand method will generate the same sequence of numbers, even if we create a new instance:

irb> r = Random.new(7)
# => #<Random:0x007fee63030d50>
irb> r.rand(1..100)
# => 48
irb> r.rand(1..100)
# => 69
irb> r.rand(1..100)
# => 26

irb> r = Random.new(7)
# => #<Random:0x007fee630ca928>
irb> r.rand(1..100)
# => 48
irb> r.rand(1..100)
# => 69
irb> r.rand(1..100)
# => 26

# Note that these values will be distinct for separate Ruby processes.
# If you run this same code on your machine you can expect to get different numbers.

Similarly a linear congruential generator will generate the same numbers in sequence if we give it the same starting values.

Linear Congruential Generator (LCG)

This is the algorithm for a linear congruential generator:

Xn+1 = (a * Xn + c ) % m

For carefully chosen values of a, c, m and initial seed X0 the values of the sequence X will be pseudorandom.

Here are the rules for choosing these values:

  • m must be greater than 0 (m > 0)
  • a must be greater than 0 and less than m (0 < a < m)
  • c must be greater than or equal to 0 and less than m (0 <= c < m)
  • X0 must be greater than or equal to 0 and less than m (0 <= X0 < m)

Implemented in Ruby the LCG algorithm looks like this:

irb> a, x_n, c, m = [5, 7, 3, 16]
# => [5, 7, 3, 16]

irb> x_n = (a * x_n + c) % m
# => 6
irb> x_n = (a * x_n + c) % m
# => 1
irb> x_n = (a * x_n + c) % m
# => 8

For the values chosen above that sequence will always return 6, 1 and 8, in that order. Because I've chosen the initial values with some additional constraints, the sequence will also choose every available number before it comes back around to 6.

An LCG that returns each number before returning any number twice is known as a "full cycle" LCG.

Full Cycle Linear Congruential Generator

For a given seed we describe an LCG as full cycle when it will traverse every available state before returning to the seed state.

So if we have an LCG that is capable of generating 16 pseudorandom numbers, it's a full cycle LCG if it will generate a sequence including each of those numbers before duplicating any of them.

irb> (1..16).map { x_n = (a * x_n + c) % m }.sort
# => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

These are the additional rules we must use when choosing our starting values to make an LCG full cycle:

  • c can't be 0 (c != 0)
  • m and c are relatively prime (the only positive integer that divides both of them is 1)
  • (a - 1) is divisible by all prime factors of m
  • (a - 1) is divisible by 4 if m is divisible by 4

The first requirement makes our LCG into a "mixed congruential generator". Any LCG with a non-zero value for c is described as a mixed congruential generator, because it mixes multiplication and addition.

If c is 0 we call the generator a "multiplicative" congruential generator (MCG), because it only uses multiplication. An MCG is also known as a Lehmer Random Number Generator (LRNG).

The last 3 requirements in the list up above make a mixed cycle congruential generator into a full cycle LCG. Those 3 rules by themselves are called the Hull-Dobell Theorem.

Hull-Dobell Theorem

The Hull-Dobell Theorem describes a mixed congruential generator with a full period (one that generates all values before repeating).

In Ruby 2.4 Vladimir has implemented an LCG that satisfies the Hull-Dobell Theorem, so Ruby will traverse the entire collection of bins without duplication.

Remember that the new hash table implementation uses the lower bits of a key's hash to find a bin for our key-index reference, a reference that maps the entry's key to its index in the entries table.

If the first attempt to find a bin for a key results in a hash collision, future attempts will use a different means of calculating the hash.

The unused bits from the original hash are used with the collision bin index to generate a new secondary hash, which is then used to find the next bin.

When the first attempt results in a collision the bin searching function becomes a full cycle LCG, guaranteeing that we will eventually find a home for our reference in the bins array.

Since this open addressing approach allows us to store the much smaller references to entries in the bins array, rather than the entirety of the entries themselves, we significantly decrease the memory required to store the bins array.

The new smaller bins array then increases our chances of taking advantage of the processor caching levels, by keeping this frequently accessed data structure close together in memory. Vladimir improved the data locality of the Ruby hash table.

So Ruby is Faster and Vladimir Is Smart?

Yup! We now have significantly faster hashes in Ruby thanks to Vladimir and a whole host of other Ruby contributors. Please make sure you make a point of thanking the Ruby maintainers the next time you see one of them at a conference.

Contributing to open source can be a grueling and thankless job. Most of the time contributors only hear from users when something is broken, and maintainers can sometimes forget that so many people are appreciating their hard work every day.

Want to Make a Contribution Yourself?

The best way to express your gratitude for Ruby is to make a contribution.

There are all sorts of ways to get started contributing to Ruby, if you're interested in contributing to Ruby itself check out the Ruby Core community page.

Another great way to contribute is by testing preview versions as they’re released, and reporting potential bugs on the Ruby issues tracker. Watch the Recent News page (RSS feed) to find out when new preview versions are available.

If you don't have the time to contribute to Ruby directly consider making a donation to Ruby development:

Is that everything new in Ruby 2.4?

Not even close. There are many more interesting updates to be found in the Ruby 2.4 ChangeLog.

Here are a few of my favorites that I didn't have time to cover:

Thank you so much for reading, I hope you have a wonderful holiday.

":heart:" Jonan