Shared posts

18 Aug 20:04

Help my son!

by Dan Jones

http://buttersafe.com/2016/08/18/rescue-my-son/

18 Aug 14:07

Nokia confirms at least three upcoming Android devices, may be announced this year

by Dima Aryeh

Nokia is a brand that’s nearly universally loved for its last phones, and we wish the company would make a big comeback and once again release amazing devices. Nokia’s Microsoft partnership really didn’t help the company succeed, but thankfully, we may see an unlikely but possible resurgence soon.

Nokia executive Mike Wang stated that there will be at least three Android devices coming soon, and two of them will be flagships.

These two and one / two more Nokia Android smartphones are planned for unveil towards end of the year 2016, but depending upon testing and development launch date may move to Q1 2017 too.

The two flagships are rumored to have 5.2 and 5.5-inch QHD OLED displays, Snapdragon 820 processors, 22.6MP graphene cameras, metal construction, water and dust resistance, and Android 7.0 Nougat. One or two other devices will be unveiled at the same time, though they’re likely lower-end.

This is definitely exciting news, as I know a lot of people want to see more of Nokia, especially in the Android world. The devices should be announced later this year, so we don’t have long to wait. How many of you are excited?

17 Aug 20:51

Learn Python, Lisp, Haskell, Erlang, Clojure, and more with the Joy of Coding Bundle

Dan Jones

Cool

For programmers who love what they do, diving into a new language is an exciting and rewarding challenge. Whether you’re looking to add some new skills to your resume or just searching for fun weekend projects, the Joy of Coding bundle is full of possibility!

Pay $1 or more for Automate the Boring Stuff with Python, The Linux Command Line, Learn You a Haskell for Great Good!, Learn You Some Erlang for Great Good!, and The Book of F#.

Pay $8 or more and you’ll also receive Eloquent JavaScript, 2nd Edition; The Principles of Object-Oriented JavaScript; Land of Lisp; Realm of Racket; If Hemingway Wrote JavaScript; and Write Great Code, Volume 1.

Pay $15 or more to receive all of that plus Python Playground, Think Like a Programmer, The Art of R Programming, Clojure for the Brave and True, and Write Great Code, Volume 2.

17 Aug 20:51

The trick to marrying anyone is loop-holes ImageFacebook...





The trick to marrying anyone is loop-holes

Image

Facebook  Twitter

17 Aug 16:50

Sense of Right Alliance

by Dan Jones

http://news.dose.com/style/24986/16-Hilarious-Examples-Of-Off-Brands-Gone-Wrong

I’m not sure which is better: Shrek, or a blue Lightning McQueen.

17 Aug 12:44

Pokemon GO Gets Too Real

by Dan Jones
16 Aug 12:27

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

 

Eveychu and World's okayest Cosplayer look wonderful as Lorraine Baines and George McFly from Back to the Future! What a fun and original cosplay! Here's what she had to say about it...

"This whole cosplay came about because I?m visiting Universal Studios and Disney World later this year and I wanted to wear bounds everyday. The Disney part was easy but I was struggling for non-Harry Potter ideas for Universal. Then it hit me like a ton of bricks. BACK TO THE FUTURE! I dress pin-up/1950s in my everyday life so Lorraines prom dress was like a no-brainer. It was also fun to do because I haven?t really seen that many people do it before. After making the dress, I managed to rope in a friends boyfriend to be my destiny/George Mcfly. We decided to make the shoot look as much like awkward prom photos as possible and I think we succeeded. Especially with the hover hand one."

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

Lorraine Baines & George McFly from Back to the Future Cosplay

Cosplayers: Eveychu & World's okayest Cosplayer

Photographer: NichelleMedia Photography

Follow us on:
 

August 15 2016
15 Aug 21:08

“Empire Strikes Back” trailer with “Rogue One” music

by Dan Jones

This is pretty epic

15 Aug 21:08

Generate Your Own Fantasy Maps With This Cool Interactive

An example map from the generator

These are some notes on how I generate the maps for my Twitter bot @unchartedatlas, which is based on a generator I originally produced during NaNoGenMo 2015. There's JavaScript code for the generator on Github here, and the original messy Python generator code can be seen here.

You may also be interested in this companion piece, which describes the placename generation.

Inspiration

I wanted to make maps that look like something you'd find at the back of one of the cheap paperback fantasy novels of my youth. I always had a fascination with these imagined worlds, which were often much more interesting than whatever luke-warm sub-Tolkien tale they were attached to.

At the same time, I wanted to play with terrain generation with a physical basis. There are loads of articles on the internet which describe terrain generation, and they almost all use some variation on a fractal noise approach, either directly (by adding layers of noise functions), or indirectly (e.g. through midpoint displacement). These methods produce lots of fine detail, but the large-scale structure always looks a bit off. Features are attached in random ways, with no thought to the processes which form landscapes. I wanted to try something a little bit different.

There are a few different stages to the generator. First we build up a height-map of the terrain, and do things like routing water flow over the surface. Then we can render the 'physical' portion of the map. Finally we can place cities and 'regions' on the map, and place their labels.

Grids

To represent the heightmap, first we need a grid of points. Although it can be simpler to work on a regular square grid, I much prefer to work on an irregular set of points for something like this. With a regular grid, it's very easy to run into weird artifacts, and you often have to do a lot of postprocessing to hide the effects of the grid. If you use an irregular grid, then there are a few things which are more complicated, but the structure of the grid helps to give the map a rough, organic feel, and you never have to worry about nasty linear artifacts in the finished product.

The approach I use is the same as in this article, which is one of the better references out there on how to do non-fractal terrain generation. I won't go into too much detail here because that article explains it very clearly, with lots of diagrams.

I start by selecting points at random within the map. These points tend to be a bit clumpy and uneven, so I use Lloyd relaxation to improve the point set. For speed, I only use one iteration of this process, but you can repeat it as many times as you like. There are rapidly diminishing returns after a few iterations though.

All of the calculations are actually carried out on the 'dual points' of the original point set, which correspond to the corners of the Voronoi polygons. This has the advantage that the number of neighbours per node is fixed at three, which helps in some parts of the code.

Note: this shows 256 (28) points, to make viewing easier, but the real generator uses 16,384 (214) points. I have a programmer's superstitions about always using powers of 2, which are more pleasing to the spirit of the machine.

Rough outlines

One of the difficulties of creating landscapes in a realistic way is that real landscapes aren't created all at once. Instead, they evolve from earlier landscapes, which in turn evolved from even earlier landscapes, and so on back for billions of years. There's no good way to simulate this process in a reasonable amount of time, so we need to cheat slightly.

Rather than an infinite regress of older landscapes, I start with a simple 'proto-landscape', built with geometric primitives. This lets me control the broad outlines of the terrain, while leaving the details for the more physical processes to fill in later.

Some useful primitives which we can add together:

  • Constant slope - if you want to pretend this is physically motivated, think of it as tectonic uplift on one side of the map
  • Cone shapes - these can be islands or mountains, or if inverted, lakes or seas
  • Rounded blobs - these make better hills, and can be scattered all around to make a noisy surface

We also have a few operations which are handy:

  • Normalize - rescale the heights to lie in the range 0-1
  • Round - normalize, then take the square root of the height value, to round off the tops of hills
  • Relax - replace each height value with the average of its neighbours, to smooth the surface
  • Set sea level - translate the heightmap up or down so that a particular quantile is at zero

The particular sequence of primitives and operations used can be varied to produce different kinds of landscape, such as coastlines, islands and mountain ranges.

Note: the black line indicates the zero contour, which we treat as 'sea level'. Also, this map uses 4,096 (212) points, for speed.

Erosion

The results of this process can be a little bit on the blobby side, which means they rarely look good on their own. We want to scuff them up a bit, so they look more like real landscapes. We do this by applying an erosion operation.

In most of the world, by far the largest influence on the shape of landforms is fluvial (water-based) erosion. Water flows downhill, carrying sediment along with it, carving out valleys and river basins. This is a massively complex phenomenon, and modelling it correctly is a very active research area, but we can get a long way by sketching a simple version of the process.

We need to start by tracing the routes that water would take over the grid. For each grid point, we say that water flows to its lowest neighbour, and so on down until we reach the edge of the map. This gives a map of water flow.

There's an obvious problem when we reach gridpoints which are lower than all of their neighbours. Do we route the water back uphill? This will probably lead to cycles in the water system, which are trouble. Instead, we want to fill in these gaps (often called sinks or depressions), so that the water always runs downhill all the way to the edge.

It's easy to see how to fill in a single gridpoint, but as the depression gets bigger, and possibly links up with other depressions, the number of possible cases multiplies enormously. Luckily, there's an algorithm for filling depressions, called the Planchon-Darboux algorithm.

Aside: the Planchon-Darboux algorithm

The algorithm works by finding the lowest surface with the following two properties:

  • The surface is everywhere at least as high as the input surface
  • Every non-edge point has a neighbour which is lower than it

To calculate this, we start with an infinitely high surface everywhere except on the edge, where we use the original heights. Then, on each iteration, we find points which have a neighbour which is lower than them, and set their height to their original height, or the height of their lowest neighbour (plus a small amount), whichever is higher. We halt when we can go a full iteration without changing any point.

There are various ways of speeding up this algorithm, mostly by tweaking the order in which points are visited. For more details, and a proof of correctness, you can read the original paper.

With the water routing calculated, we can work out how much water is flowing through each point. I assume that rainfall is constant across the whole map, and iterate through the points in descending order, passing the rainfall, plus the accumulated water flux, from each point to its 'downhill point'. This gives a map of water flux, which usually converges into a nice branching river structure, with lots of small streams feeding a larger central channel.

To calculate erosion, I combine the water flux with the slope at each point, as calculated based on the triangle of its neighbours. The exact formula I use is the product of the slope with the square root of the water flux. This isn't necessarily very physical, but it does give nice-looking results. I also add a small term which is proportional to the slope squared. This prevents deep gorges from forming, which might be physically realistic, but don't look good in the graphical style I've chosen.

I find it's very important to cap the erosion rate, otherwise strange things can happen. A little goes a very long way with this. Also, erosion always lowers the surface, so it usually helps to drop the sea level afterwards to match.

A final tweak to the heightmap is to smooth out the coastlines slightly. The erosion tends to produce quite rough terrain, which becomes tiny islands when cut off by sea level. A few of these can look good, but too many just looks messy. I repeatedly apply a filter where points which are below sea level, but a majority of whose neighbours are above sea level, get pulled up, and vice versa for points which are above sea level and have undersea neighbours. A couple of repeats of this produces a much cleaner coastline.

Rendering terrain

Now comes the question of drawing the map (at least the physical portion). The easy part is the coastline - we've been doing this already. It's just a matter of drawing line segments where the heightmap crosses zero. There's not a lot extra to do about this.

The next component is the rivers. We don't want to display the entire drainage network, because that would cover the whole map. Instead, we only show the drainage from points with above a certain threshold of water flux. By connecting these points to their downstream neighbours, we can trace out the river paths.

One problem with this approach is that the rivers tend to zigzag from grid point to grid point, rather than following a smooth path. To solve this, I relax the points in the middle of the path towards their upstream and downstream neighbours (keeping the top and bottom fixed, so that intersections work properly). This smooths things out beautifully.

The final part of this is the shading on the sides of hills, which helps indicate the topography. It is a central principle of cartography that we tend to interpret maps as though viewing the terrain from the bottom of the map, looking towards the top. So we want to draw strokes which go up and right if the terrain slopes upwards from left to right, and down and right if the terrain slopes downwards. Similarly, the strokes on the 'near' side of hills should be longer than those on the 'far' side.

For each grid point, I calculate the slope, and ignore the point if it is less than a random threshold. For points which pass this test, I draw a short stroke with slope proportional to the horizontal component of the heightmap slope, with a small modifier for the vertical component. If the stroke would be too steep, I split it into several shorter strokes, at the maximum slope, drawn at random around the point.

Cities, borders

Now that we have the 'physical' portion of the map sorted, we can move to looking at the 'political'. We want to place cities and towns on the map in feasible-looking locations. At the same time, we want the cities to be spread out enough that we can put labels on them without worrying too much about overlap.

To place a city, I generate a score for each point, which is a combination of three things:

  • Water flux - we want cities to be preferentially located on rivers, so high water flux gets a bonus
  • Distance from other cities - we want cities to be spread out, so penalize locations which are too close to an existing city
  • Distance from the edge of the map - the other two criteria alone tend to push cities to the map edge, which isn't ideal, so penalize locations too close to the edge

Every time I add a city, I choose the point with the highest score, then recalculate the scores for all points. I make a distinction between cities, which have a 'region' associated with them, and towns, which don't. The cities are placed first, but otherwise there's no distinction in the code.

The next step is to mark out the regions. We want the borders between regions to seem fairly reasonable, following natural borders like rivers and mountain ranges. The way I approach this is to expand regions outwards from each city, so that each region consists of the points which are 'closest' to its city, according to a particular distance measure. This distance measure is calculated by adding up the cost of the route, based on these criteria:

  • Horizontal distance
  • Slope - uphill is much cheaper than downhill, so regions expand until they hit the top of ridges, then stop
  • Water flux - crossing a river is expensive
  • Shorelines - there is a large penalty for going from land to water (or vice versa), and a smaller penalty for travelling by water

Finally, the borders are drawn, using the same smoothing technique as the rivers.

Placing labels

At this point we can start naming things, using the process described in these notes. I generate names for cities, towns and regions, using a consistent language for the whole map.

The very last part of the process is to place the labels, avoiding overlaps, obscured cities, labels going off the edge of the map, etc. This sounds easy, but it really really isn't. Ideally, some sort of intelligent layout algorithm would place all the labels, rearranging as necessary. Instead, I have a few hundred lines of spaghetti code which seems to get the right answer most of the time, but which is packed full of magic numbers.

In rough outline, what happens is this: the labels are placed in the order 1. cities, 2. towns, 3. regions. For cities and towns, there are four possible slots for the label, above, below, and to each side of the marker. Each label is placed, attempting to avoid the following overlaps (in rough order of importance):

  • City markers
  • Other city labels
  • The map edge
  • Borders
  • Coastlines
  • Rivers

Obviously it's not usually possible to avoid all of these, so the least bad solution is chosen.

For regions, there's a bit more freedom in where to place the label, but the labels are also bigger, and the map is more cluttered at this point. The scoring system rates positions based on proximity to the center of the region, as well as being over land, and penalties for all the overlaps mentioned before.

I wanted to make a nice interactive example for this, but trying to separate out the label placement code made me feel physically unwell. Sorry about that.

So that's the algorithm, at least in rough outline. The actual code running on the bot has a few other little bits and pieces, which honestly don't do much, but removing them is more trouble than it's worth when the code is working as it stands. The JavaScript code behind this page is available on GitHub, and if you're really really brave you can look at the original Python code which was written while I was figuring all this out.

There's obviously lots that could be done to improve this. Erosion is just one process, and the next obvious thing to add would be fluvial deposition, which would allow for flood plains, river deltas, etc to form. If you wanted more realistic mountains, then glacial processes would be worth looking at. Volcanic stuff could also be fun.

On the graphical side, it could be fun to try to sketch more interesting textures on the map, such as forests or fields. Or you could fill the oceans with sea monsters and lost ships. If you're really brave, you could even look at labelling more features, like mountain ranges and rivers.

As always, if you do any of these things, or make anything else interesting with this code or these ideas, please get in touch and let me know.

15 Aug 19:50

Horses

This car has 240% of a horse's decision-making ability and produces only 30% as much poop.
15 Aug 15:12

Futurama screencap search engine

by Jason Kottke

Shut Up And Take My Money

Morbotron is a screencap search engine for Futurama. The cap above is perhaps the most popular use case. It also does animated GIFs. See also Frinkiac, the Simpsons screencap search engine.

Tags: Futurama   search   TV
13 Aug 23:34

The Princess Bride & Gremlins Playing Cards

The Princess Bride & Gremlins Playing Cards

 

Play AS YOU WIIIISH with these The Princess Bride Playing Cards, but be sure to never feed these Gremlins Playing Cards after midnight, lol...

The Princess Bride & Gremlins Playing cards

The Princess Bride & Gremlins Playing cards

The Princess Bride & Gremlins Playing cards

The Princess Bride & Gremlins Playing cards

The Princess Bride Playing Cards available here!

Gremlins Playing Cards available here!


Follow us on:
 

August 13 2016
13 Aug 23:33

Great Detective Pikachu

by Steve Napierski
Great Detective Pikachu *koffing*



See more: Great Detective Pikachu
13 Aug 23:33

EL Wire Earbuds

by Erin Carstens
Dan Jones

Cool

Not only will cars be able to see you, they'll be able to see your beats. BriteFit's earbuds use electroluminescent lighting to glow in the dark and, if you want, flash along to the rhythm of your music. Sweet. First it's Darth Vader condoms and now it's EL wire sports phones. Being safe has never been so synonymous with being cool.

The glowing earbuds have a wraparound cable to secure them in your ears during runs and other physical activity. They also have a built-in microphone for hands-free phone calls. Choose from solid glow and dance-to-the-beat modes.

12 Aug 22:19

I Am Somebody

by Dan Jones

Jesse Jackson on Sesame Street

12 Aug 22:19

Pokemon GO Safety Tips

Pokemon GO Safety Tips

 

Artist EJ Fiestan illustrated these helpful Pok?mon GO safety reminders for Rappler Gaming League! The road to being the very best is a tough one, for sure. But you don?t have to compromise your (and other people?s) safety on your way. Keep in mind these safety tips before you catch that Pikachu...

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Pokemon GO Safety Tips

Artist: EJ Fiestan for Rappler Gaming League

Follow us on:
 

August 12 2016
12 Aug 21:18

Great Alchemist

by Dan Jones

http://buttersafe.com/2016/08/11/verbal-alchemy/

12 Aug 21:18

Guess I won’t be doing any shark fishing any time soon

by Dan Jones
12 Aug 21:17

Just here for the Dratini

by Dan Jones

http://introvertdoodles.com/comic/gotta-catch-em-all/

Totally legit

12 Aug 21:17

Trump tells evangelical voters he has to win the election to get into heaven.

by Dan Jones

So, you’re telling me that he’s running for president because he thinks it’ll get him into heaven?

12 Aug 20:31

Superzoom

Dan Jones

Got it yet, Andrew?

*click* Let him know he's got a stain on his shirt, though.
12 Aug 17:10

A and B smell the flowers. image / twitter / facebook /...









A and B smell the flowers.

image / twitter / facebook / patreon

12 Aug 13:05

Having a Ball

Having a Ball

I call that signature move the GekiGengar Punch!!

See more: Having a Ball
11 Aug 22:41

The Terrifying Truth About “Sesame Street”

by Dan Jones
11 Aug 22:41

Bug in my Soup

by Dan Jones

http://www.duelinganalogs.com/comic/waiter/

11 Aug 22:40

Florida Man banned from ordering pizza

by Dan Jones

You might find my suicide note the next day, had this happened to me.

When I imagine a world without pizza delivery– wait, stop. I don’t want to go there. I don’t even want to think about where a Florida man is right now, living a pizzaless existence after a judge banned him from ordering pies from any of his local pizzerias.

He allegedly used five different phone numbers to make [harassing] calls, as well as fake names, or, in some cases, he’d just refuse to give a name at all. Businesses in the area say they lost at least 67 in food as a result. That’s why, as a condition of his bail, the judge has ordered him to refrain from calling for any more pizza.

11 Aug 03:22

Yorg, the Destroyer of Leftovers

by Dan Jones

http://theunderfold.com/2016/08/10/leftovers/

10 Aug 21:37

“UHM, ACTUALLY,” ImageFacebook  Twitter

Dan Jones

That's an extra 47 nanoseconds each day!









“UHM, ACTUALLY,” 

Image

Facebook  Twitter

10 Aug 21:37

More Clu Fu HERE 



More Clu Fu HERE 

10 Aug 19:02

Are We Saying Goodbye To The Barbershop As We Once Knew It?

Dan Jones

I only get my hair cut at a barber shop.
Since moving to Houston, I still haven't found one that I like.

Nationwide, barbershops are on the decline.

With their red, white and blue striped poles, dark Naugahyde chairs and straight razor shaves, barbershops hold a special place in American culture.

But numbers show that barbershops are dwindling. According to census data, from 1992 to 2012 we saw a 23 percent decrease in barbershops in the United States (with a slight uptick in 2013).

As a sociologist, I find barbershops fascinating because they’ve also traditionally been places where men spend time with other men, forming close relationships with one another in the absence of women. Many patrons will even stop by daily to simply chat with their barbers, discuss the news or play chess. A real community is created in these places, and community is important to health and well-being.

So how should we interpret the decline of the barbershop? Is it yet another sign that, according to Robert Putnam in “Bowling Alone,” our community ties are crumbling? Or should we really be looking at just what sort of men are no longer getting haircuts at a barbershop – and what sort of men still go there?

Men with a professional bent

At the same time barbershops are closing, men’s salons are popping up across the country. They cater to men, providing them with high-end services that include hot towel facials and hand-detailing (a euphemism for a manicure). They’re more expensive than the average barbershop or chain store, have sleek contemporary decor and aren’t exactly conducive to hanging out and socializing.

In my book on these men’s salons, “Styling Masculinity,” hairstylists described the barbershop as a vanishing place. They explained that men are seeking out a pampered grooming experience that the barbershop – with its dusty TV, linoleum floor and stack of auto magazines – doesn’t offer.

The young licensed barbers working in these salons also seemed disenchanted with the old school barbershop. They saw these newer men’s salons as a “resurgence” of “a men-only place” that provides more “care” to clients than the “dirty little barbershop.” And those barbershops that are sticking around, one barber told me, are “trying to be a little more upscale” by repainting and adding flat screen TVs.

When I asked clients of one men’s salon, The Executive, if they’d ever get their hair cut at a barbershop, they explained that they didn’t fit the demographic. Barbershops, they said, are for old men with little hair to worry about or young boys who don’t have anyone to impress. As professional white-collar men, they generally saw themselves as having outgrown the barbershop.

A salon, on the other hand, with its focus on detailed haircuts and other services – manicures, pedicures, hair coloring and body waxing – help these men to obtain what they consider to be a “professional” appearance.

As a salon client named Gill explained:

“Professional men…they know that if they look successful, that will create connotations to their clients or customers or others that they work with – that they are smart, that they know what they’re doing.”

Barbershops still important – for some

But the salon patrons I interviewed were generally white, well-to-do men. They offered only one point of view for what a barbershop is, what it can offer and who can go there. For example, in my earlier research on a small women’s salon, one male client told me the barbershop is a place for the mechanic, or “grease-monkey,” who doesn’t care how he looks, and for “machismo” men who prefer a pile of Playboy magazines rather than the finery of a salon.

These attitudes about the barbershop as a place of yore, as a fading institution offering outdated fads, are both classist and racist.

With all the nostalgia for the barbershop in American culture, there’s surprisingly little academic writing about it. But it’s telling that research considering the importance of the barbershop in men’s lives generally tends to focus on black barbershops. The corner barbershop is alive and well in black communities, and it serves a key role in the lives of black men.

In her book “Barbershops, Bibles, and BET,” political scientist and TV host Melissa Harris-Perry wrote about how everyday barbershop talk is an important place for black political thought. Scholars have also shown that the black barbershop can strengthen community ties and improve the economy in black neighborhoods, while acting as a place to socialize young black boys.

African-American men gather at Lenny’s House of Naturals, a barber shop in Baltimore, Maryland. Eric Thayer/Reuters

Paying a premium for nostalgia

So instead of asking if the barbershop is vanishing, we should really be asking: Where are they disappearing, what is replacing them and what are the social relations underpinning the emergence of the new men’s salon?

For example, in some white gentrifying neighborhoods, the barbershop is actually making a comeback. In his article, “What the Barbershop Renaissance Says about Men,” journalist Thomas Page McBee writes that these new barbershops primarily act as places where men can channel a form of masculinity that supposedly existed unfettered in the “good old days.” Sensory pleasures are central to the experience: The smell of talcum powder, the cool burn of aftershave and the site of shaving mugs help men to grapple with what it means to be a man at a time when traditional definitions of masculinity are in flux.

But these new, repackaged barbershops come at a cost, charging much more than the usual US$12 for a haircut – a price point that will exclude a huge swath of male consumers.

And so, in a place that engages tensions between ideas of nostalgic masculinity and a new sort of progressive man, we may very well see opportunities for social equality fall by the wayside. The hipster phenomenon, after all, is a largely white one that appropriates symbols of white working-class masculinity (think white tank tops with tattoos or the plaid shirts of lumbersexuals) without really giving up class privilege.

What can the men’s salon mean?

When we return to neighborhoods where barbershops are actually disappearing – replaced by high-end men’s salons like those featured in my book – it’s important to put these shifts into context.

They’re not signs of a disintegrating bygone culture of manhood. Rather, they signify a transformation of white, well-to-do masculinity. In the past, the barbershop was a place for these men. Today, while the old model may thrive in black or up-and-coming neighborhoods, white professional men are seeking a pampered experience elsewhere.

And they’re creating intimate relationships in these new men’s salons. But instead of immersing themselves in single-sex communities of men, they’re often building one-on-one confidential relationships with women hair stylists. Stylists often explained this intimacy as part of their jobs. For white men with financial means, though, the men’s salon becomes an important place where they can purchase the sense of connection they may otherwise be missing in their lives.