library building

Celebrate International Sculpture Day! (April 24)

View of sculptor Marshall Fredericks, standing on scaffolding, posing with the model for the Spirit of Detroit. The bronze sculpture was commissioned in 1955, and dedicated at the City-County Building in 1958.

  • Courtesy of the Burton Historical Collection, Detroit Public Library

The books in the Graves family library are not just invaluable to Percival because of their content, but because of their appearance, as well. Each book of the million is lovingly bound in silk and leather, bright patterns swirling across the shelves, each book carefully preserved. Some of these books have no counterpart elsewhere in the world. He guards his library like a dragon might his hoard, and to him, they are just as valuable. The only one allowed within the library without Percival standing guard is Credence.

View of the Sage Library in Bay City, Michigan. Printed on front: “Sage Library, West Bay City, Michigan.” Printed on back: “Pub. by H.G.Z. & Co.” Handwritten on back: “I thought I would answer your card.” Card is postmarked April 6, 1907.

  • Courtesy of the Burton Historical Collection, Detroit Public Library
International Playboy || Jeon Jungkook

Originally posted by tiredkook


Word Count: 3k

Genre: Angst/Fluff


Jeon Jungkook was someone nobody really understood. Everybody wanted to be with him, and nobody knew why. There wasn’t like there was anything good that came out of it. All of his old relationships were the exact same, it’s been that way since high school when you first met him. He would date the girl for a few weeks, and then break up with her. That was it.

Girls were attracted to the bad boy vibe he gave off. There was something about him that every girl wanted to tame, but none could. It didn’t matter how many hearts he broke, or what the girls said about him because in the end they would all have dated him again if they had the chance. And that was what made you so different.

After being his friend for three years, not once had you dated him or been in a romantic relationship with him.

Everyone was jealous of you, because you were the only girl he actively hung out with that he wasn’t dating at the time. Jungkook and you had become friends in high school and ended up going to the same college, and here you two were. You would watch him date several girls, and every time you would get jealous.

Sure, they thought that you being his friend was unfair. They thought that it wasn’t fair that you got to hang out with him all the time, apparently Jeon Jungkook was an object that was meant to be shared between everyone, and you weren’t allowed to even think about being close to him.

You didn’t like that idea. You didn’t like the whole bad boy vibe, you didn’t like the fact that he went around and broke the hearts of innocent girls, you didn’t like that he looked at everyone else that way except you. It was like there was something about you that just wasn’t appealing to him.

It hurt to know that, but you never said anything. You would never have traded being Jungkook’s friend for anything. Just being able to hang out with him and talk to him was good enough for you. It was torturous, but it was worth it. Jungkook had become someone he wasn’t, and you were the only one who got to see the real Jungkook.

When it was just the two of you hanging out in your dorm at night, he would tell you about his fears, his insecurities, his problems. The two of you would lay in bed and just talk for hours, nothing romantic or sexual about it. You would sometimes fall asleep and he would drape a blanket over you before making a bed on the floor and falling asleep. It was things like that that made you fall for your best friend.

Jungkook was someone nobody understood, except you.

Keep reading

View at an angle of Main Library, Detroit Public Library during construction, facing northwest. Structural frame of building with partially completed facade. Scaffolding on side of building; trees in foreground. Printed on front: “No. 40. Taken April-5-18. Detroit Public Library bldg., looking northwest. Cass Gilbert, architect. Geo. A. Fuller Co., builders.” Stamped on back: “Charles R. Messinger, commercial photographer, 1646 Woodward Ave., Detroit, Mich., Market 6298.”

  • Courtesy of the Burton Historical Collection, Detroit Public Library

As they were building that library in that school’s gym, they built a rehearsal space for us. It was really an empty room taped out with the same dimensions of the library. And they had the tables all there. And he [John Hughes] had us sitting at the same table. All of us. And I was like, “I don’t want to sit with them.” And he was like, “What do you mean?” And I go, “I do not want to sit with them, you know?” And he goes, “Where do you want to sit?” And I knew from the script that I come in after [Anthony] Michael [Hall], so I go, “Wherever he sits, that’s the seat I want.” And he smiled and he looked at Michael, and he went, “Is that okay with you?” Michael went, “Fine.” And [Hughes] just went, “Okay.” And then Ally [Sheedy] said, “I don’t want to sit with them.” And he went, “Where do you want to sit?” And she goes, “Way in the back.” He says, “Fine.” And Emilio says, “Well, I’ll sit with Molly.” And we were like, “Yeah, of course you will.” And the rehearsal had already begun.”  — Judd Nelson for A.V. Club (2016)

Armchair Activism for February - build up your local library in three easy steps

There is something you can do right now to build up and nourish your community long-term. You can do it from any computer - or in person if you’re feeling adventurous. There is no cost to you.

It’s easy to do and I’ll walk you through it right now.

  1. Go to your library’s website.
  2. Look for a link called “request an acquisition”, “suggest a book for our collection” or “suggest a purchase”. (see below for examples)
  3. Review the process, then start picking out books to add to your local library.

You’ll want to check the library catalog first and see if they have a book before requesting. If you don’t have a title in mind, here are some great suggestions:

  • We Should All Be Feminists by Chimamanda Ngozi Adichie (ISBN 978-1101911761)
  • Bad Feminist by Roxane Gay (ISBN 978-0062282712)
  • Freedom is a Constant Struggle: Ferguson, Palestine and the Foundations of a Movement by Angela Davis (ISBN 978-1608465644)

If they’re able to buy it and when they inform you it’s come in, check it out! The library tracks what does and doesn’t circulate, and you’ll add shelf life to the purchase.

In case you’re worried, I personally asked a bunch of librarians and:

  • They love it when you make suggestions
  • You won’t get penalized for asking for things or for too many things.

Do it today. Do it before February is over. Consider doing it every month. I’ll remind you. It’s a way to support your library - a radical resource - and your community.

For many of us this is a no-risk action. They will likely ask for contact and residence information from you. If you do not have all of the legal documentation required to officially reside where you currently live, please consider whether giving your personal information is safe before pursuing this idea.

Tumblr Themes & React and Redux: Part 1 - Setup and the Initial State

As a platform that prides itself on being a home for artists and creatives alike, it only makes sense that we allow our users to fully customize their Tumblrs to fully express themselves. Here at Tumblr, the world is your oyster not only in terms of looks but also in how you create your theme. I wanted to demonstrate how you too can develop a theme using Redux and React. Since there are plenty of docs and tutorials on how to use those libraries themselves, I will briefly describe how I got the libraries to work with the Tumblr theme engine, and share some handy tips that made developing more efficient and more enjoyable.

If you follow the ever changing landscape of JavaScript, then you’ve at least heard of these two libraries. Prior to building the Post-It-Forward theme, I only knew of them by name but never got the chance to actually use them. Developers couldn’t get enough of how React made it easy to create and reuse components. Many also praise how elegantly React manages and renders views, especially when paired with Redux for state management. All of this sounded great. I wanted to turn this project into a learning experience. I thought, “why not?” and gave it a shot.

An Extremely Brief Introduction to Tumblr Themes

The way themes work on Tumblr is that we have a theme engine that provides special types of operators. These operators insert dynamic data, such as your Tumblr’s title or description, or are blocks that serve as conditionals for rendering a block of HTML, like the “Next Page” link.

My HTML started off a little something like this:

<!DOCTYPE html>
    <head>
    <title>{Title}</title>
        <style></style>
    </head>
    <body>
        <div id="post-it-forward-root"></div>
    </body>
</html>

As you can see, {Title} is a variable that will return the title of the Tumblr. The point of entry for this theme is the <div> element with the #post-it-forward-root ID. In your index.js file you’ll reference this DOM element in your ReactDom.render() method. If you want to learn more about the theme engine, head over to our Theme Docs

Creating the Initial State

To get things started, we need to create an initial state. How do we introduce this initial state if we have to rely on the theme engine to give us all our data? How do we get the data from HTML land to JS land? Well, here’s one way of doing it:

<script type="text/javascript">
    (function(root) {
        var ensureString = function(str) {
            return !str ? '' : str;
        };

        var basicVariables = {
            title: ensureString({JSTitle}),
            name: ensureString({JSName}),
                        description: ensureString({JSDescription}),
                        metaDescription: ensureString({JSMetaDescription}),
                        blogUrl: ensureString({JSBlogURL}),
                        rss: ensureString({JSRSS}),
            favicon: ensureString({JSFavicon}),
            customCss: ensureString({JSCustomCSS}),
            isPermalinkPage: !!ensureString(/*{block:PermalinkPage}*/true/*{/block:PermalinkPage}*/),
            isIndexPage: !!ensureString(/*{block:IndexPage}*/true/*{/block:IndexPage}*/),
            /*{block:PostTitle}*/
            postTitle: ensureString({JSPostTitle}),
            /*{/block:PostTitle}*/
            /*{block:PostSummary}*/
            postSummary: ensureString({JSPostSummary}),
            /*{/block:PostSummary}*/
            portraitUrl16: ensureString({JSPortraitURL-16}),
            portraitUrl24: ensureString({JSPortraitURL-24}),
            portraitUrl30: ensureString({JSPortraitURL-30}),
            portraitUrl40: ensureString({JSPortraitURL-40}),
            portraitUrl48: ensureString({JSPortraitURL-48}),
            portraitUrl64: ensureString({JSPortraitURL-64}),
            portraitUrl96: ensureString({JSPortraitURL-96}),
            portraitUrl128: ensureString({JSPortraitURL-128}),
            copyrightYears: ensureString({JSCopyrightYears}),
            isSearchPage: !!ensureString(/*{block:SearchPage}*/true/*{/block:SearchPage}*/),
            searchQuery: ensureString({JSSearchQuery}),
            safeSearchQuery: ensureString({JSURLSafeSearchQuery}),
            searchPlaceHolder: ensureString('{lang:Search Blog}'),
            noSearchResults: !!ensureString(/*{block:NoSearchResults}*/true/*{/block:NoSearchResults}*/),
        };

        root.tumblrData = {
            basicVariables: basicVariables,
            };
    })(this);
</script>

This creates a tumblrData attribute on the browser’s window object.

Sometimes the theme engine returns nothing for a particular variable if it’s not available. For example, if I made a post that does not have a title, the final root.tumblrData object will not have postTitle as a key. Sometimes the key will be available but the theme engine returned an empty value for it. For those cases, I created a helper method called ensureString() that turns those empty values into empty strings. Sometimes you might need a boolean value. In those cases, I’ll enter the conditional variables from the theme engine into the helper method to get the boolean value from it.

Once you’ve set up your initial state make sure that you place this script tag before the script tag that references the rest of your code that should be compiled and minified and uploaded through the asset uploader that the Tumblr text editor provides. This ensures that the tumblrData is accessible through the window object by the time the React app gets initiated.

tumblrData should look something like this:

const tumblrData = {
    basicVariables: {
        blogUrl: "https://mentalhealthquilt.tumblr.com/",
        copyrightYears: "2016–2017",
        customCss: "",
                description: "Mental Health Quilt",
        favicon: "https://68.media.tumblr.com/avatar_c402eedfb9d5_128.png",
        isIndexPage: true,
        isPermalinkPage: false,
        isSearchPage: false,
        metaDescription: "Mental Health Quilt",
        name: "mentalhealthquilt",
        noSearchResults: false,
        portraitUrl16: "https://68.media.tumblr.com/avatar_c402eedfb9d5_16.png",
        portraitUrl24: "https://68.media.tumblr.com/avatar_c402eedfb9d5_24.png",
        portraitUrl30: "https://68.media.tumblr.com/avatar_c402eedfb9d5_30.png",
        portraitUrl40: "https://68.media.tumblr.com/avatar_c402eedfb9d5_40.png",
        portraitUrl48: "https://68.media.tumblr.com/avatar_c402eedfb9d5_48.png",
        portraitUrl64: "https://68.media.tumblr.com/avatar_c402eedfb9d5_64.png",
        portraitUrl96: "https://68.media.tumblr.com/avatar_c402eedfb9d5_96.png",
        portraitUrl128: "https://68.media.tumblr.com/avatar_c402eedfb9d5_128.png",
        rss: "https://mentalhealthquilt.tumblr.com/rss",
        safeSearchQuery: "",
        searchPlaceHolder: "Search mentalhealthquilt",
        searchQuery: "",
        title: "Mental Health Quilt",
    },
}

Now we have the data that the theme engine gave us in a format that React and Redux can work with.

If you are new to these libraries, I highly recommend following the simple Todo App Tutorial that is on the Redux website. They do a wonderful job of explaining the process as you build the app.

Helpful Tips

Setting up a local server will make developing way faster than the current setup. If you’re using both the “webpack” and “webpack-dev-server” packages, in your package.json file under scripts you can place something like this in it:

In your package.json file

...
"scripts": {
    "local-server": "NODE_ENV=development webpack-dev-server --config path/to/webpack.config.js --port=3000 --inline --hot"
},
...

To run that script, in the terminal you will type this command:

> npm run local-server

In the Tumblr editor, be sure to replace your script tags referencing these external files like so:

<!DOCTYPE html>
        <head>
                <title>{Title}</title>
                <link rel="stylesheet" type="text/css" href="http://localhost:3000/path/to/prod/index.css">
        </head>
        <body>
                <div id="post-it-forward-root"></div>
                <script type="text/javascript">
                        // where the tumblrData gets created
                </script>
                <script src="http://localhost:3000/path/to/prod/index.js"></script>
        </body>
</html>

Once you run that script, it’ll enable live reload so that every time you save a .js_.css_.scss/etc. file, it’ll rebuild the assets and refresh your Tumblr blog for you. This is way faster than having to re-upload your assets every time you make a change, no matter how small. Just remember to return your script and style references to the uploaded assets when you’re done working. Localhost is only for development.

You could also add the Redux logger middleware to your project during development so that you can view how the state changes as you fire off different actions. For more information on how to set this up, the Redux Logger Github is a great resource.

Summary

Building a Tumblr theme using Redux and React is possible! Not only is there a workflow that makes development much faster, but it’s also a great way to flex your web development muscles. You can add more to the user experience of your Tumblr now that you have the world of JavaScript at your fingertips. Go forth and make some awesome themes!

Stay tuned for part 2 that will cover paginating.

- @0xmichelle

After fake Claudia vanishes from existence and the rumbling stops, Stiles runs over to where his dad and Lydia are and scoops both of them into a hug, stuttering out a “Oh my god I love you guys, that was so cool, that was so badass.”

When he makes to pull back, the Sheriff smothers him, and they descend into mumbling “I found you again/you found me again” into each other’s shoulders.

Then he turns to Lydia and pulls her close to him, placing a hand on her cheek then sliding it down to her neck, while her hand slides up his shoulder to around his neck.

“Did she hurt you?” he asks the same time Lydia says “Are you okay?”

There’s a pause, then they both chuckle because they just are so in tune with one another and they are both okay - because they have each other. Stiles doesn’t know who pulls who in, but they are hugging again, like in the locker room. Lydia nuzzles her face into his neck, and he feels her breath rush over his ear. “I love you.

His heart stutters in his chest. He pulls back, presses his forehead against hers, noses touching.

“I wanted to say it,” Lydia whispers into the space between their lips, the space which Stiles quickly closes in a chaste but lingering kiss.

“I love you too,” he tells her. “I love you, so much.”

The moment breaks when his phone buzzes. Stiles untangles himself from Lydia (partially, because her arms insist on being wrapped around him) and picks up the call.

Scott’s on the other side. He’s panting heavily, but he sounds relieved and happy when he says “We did it. We diverted the train.” Stiles learns that ‘we’ refers to Scott, Malia, Peter, and - what the heck? - Theo, and figures the rumbling was the - the borrow a lyric - midnight train going on and on and on and on.

Scott says he heard Liam howling from the hospital, and they agree to meet up there (and maybe he’ll punch Theo in the face, just because).

“Scott?” his dad asks once he’s hung up, and Stiles nods.

“We’re meeting at the hospital. Liam’s there.” His jeep is there to, he realises. He drove there but then he and Scott followed the tracks out

“Alright,” the Sheriff says. “Hospital. Then you’re going home to get showered. You smell.”


As they walk over to where Lydia’s car is parked on the back road behind the library building, it suddenly occurs to him that he’s with his dad, who is, well, his dad, and Lydia. Lydia, who loves him back. Lydia, his tether, who pulled him back into reality. Lydia, who is his…something. And somehow, it feels like a family. He looks down at where their hands are interlocked, and something warm and fuzzy stirs in his heart.

“Oh my god.”

Lydia stops in her tracks. Father and son turn to look at her.

“My mum - I haven’t called or seen her in two days…” her head snaps up and she looks at the Sheriff. “Did you - “

He shakes his head. “I didn’t see her when I was down there, but the place was huge. The only person I found was Stiles, thank god.”

The warm and fuzzy feeling gets warmer and fuzzier.

Until Lydia’s hand slips out of his. She’s pulling out her phone, hastily dialling for her mother, all the while mumbling “I can’t believe I forgot.”

The phone rings once…twice…three times, and then her mother picks up.

“Sweetheart?”

She visibly relaxes. A long sigh escapes her throat.

“Mom,” she says.

“Lydia?” her mother says again, and Lydia hears the rustling in the background that suggests she’s in bed. “Is everything alright?”

“Yeah,” Lydia breathes, smiling at the boy who’s watching her. “We found Stiles, mom.”

“Oh.” There is so much mixed into that one word. Surprise, relief, pride. “You did it, honey. Is he okay? Are you all okay?”

“Yeah, we’re all okay. He’s with me now.” And I’m not letting him get away from me again.

She can almost hear her mother smiling on the other end of the line. “That’s great, honey,” Natalie says. “Do you want to stay with him tonight?”

Stiles is smiling back at her now, having picked up on her relief. Something swells in Lydia’s chest when she replies with “Yes, I think I will.”

Her mother wouldn’t have expected anything else.

“Okay then, call me if you need anything okay?”

“Okay. Goodnight, mom.”

“Night, honey.”

She stares at the phone for a while after ending the call, then she looks up.

“She’s okay,” she tells the Sheriff and his son. And when Stiles’ hand finds her again, Lydia thinks, we’re okay.

Charles Nathanial Agree (April 18, 1897 – March 10, 1982) 

American architect in Detroit, Michigan.

“Building Progress,” March-April (no year), the publication of the Charles N. Agree, Inc. architectural firm. Cover displays the drawing of a ancient ruin and an inset of the same building refurbished. The building has a sign that reads “Court House.” Publication interior promotes hiring architects.

  • Courtesy of the Burton Historical Collection, Detroit Public Library