text:
Craig M. Booth Jekyll 2017-01-16T04:33:31+00:00 http://www.craigmbooth.com/ Craig Booth http://www.craigmbooth.com/ firstname.lastname@example.com http://www.craigmbooth.com/blog/nfl-height-weight-data 2015-12-22T00:00:00+00:00 2015-12-22T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Back in 2013, I made a series of charts about the height and weights of NFL players. They're available on this website for anybody who is interested. Since then I have gotten the occasional request for access to the raw data behind those charts.

Since I cycled through laptops a couple of times in the interim I didn't really have easy access to the data, but kept on meaning to go and dig it up from my backups. Today I got another request for the data from somebody working on a science fair project, which was just the kick I needed to actually go and track it down. Unfortunately the historical data wasn't especially easy to get, but for a snapshot in time, here is a CSV file containing the player information I have on the players from 2013 NFL rosters

Here is the data. The file looks like this:

number,full_name,position,height_in_inches,weight_in_lbs,date_of_birth,team 23,"Alford, Robert",CB,70,186,11/1/1988,ATL 95,"Babineaux, Jonathan",DT,74,300,10/12/1981,ATL 72,"Baker, Sam",T,77,301,5/30/1985,ATL 59,"Bartu, Joplo",OLB,74,230,10/3/1990,ATL 71,"Biermann, Kroy",OLB,75,255,9/12/1985,ATL 63,"Blalock, Justin",G,76,326,12/20/1983,ATL 5,"Bosher, Matt",P,72,208,10/18/1987,ATL 3,"Bryant, Matt",K,69,203,5/29/1975,ATL 51,"Chaney, Jamar",LB,72,242,10/11/1986,ATL + 1,000 more lines

For clarity, the exact meanings of each of the columns are as follows:

number: The player's shirt number

full_name: The player's full name, in the form Last, First

position: The 1/2 letter abbreviation for the players position

height_in_inches: The player's heigh in inches

weight_in_lbs: The player's weight in pounds

date_of_birth: The player's date of birth in the form MM/DD/YYYY

team: The three letter abbreviation for the team the player was on at the end of the 2013 season.

NFL Height and Weight Data Release was originally published by Craig Booth at Craig M. Booth on December 22, 2015.
 http://www.craigmbooth.com/blog/introducing-statsninja 2015-12-15T00:00:00+00:00 2015-12-15T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Over the past year, together with my friend Shingo, I created a baseball statistics website, statsninja, which I am exceptionally proud of.

The idea behind statsninja was that users would be able to track what games they saw, and then see all the baseball statistics, only for those games. For example, wouldn't you like to know if there is a certain mid-level player who just does exceptionally well when you happen to be watching, or maybe games where you're in the crowd are just windier and longer than others that your team plays. The more Shingo and I spoke about this project, the more we got excited about it and Statsninja turned into a read labor of love, with Shingo and myself building out an entire social network in which you could follow and support your friends, a rudimentary trophy system where you earned trophies by seeing certain things (e.g. games in the cold, blowouts), a competition system where you could compare how teams did when you watched them vs. how they did when your friends watched them.

Working on statsninja was one of the most incredibly rewarding things I've ever done. Unfortunately, as is the way with these things, the ongoing effort required to collect and parse data from live (and sometimes unreliable) MLB feeds was a real drag, and although the site is the most exciting thing in the world, we just found the concept hard to explain to others in a way that got them excited about it. I'm putting this blog post up here with some screenshots so that people can see what the site was really all about

The Statsninja Overview

Statsninja makes watching sports better by providing a unique window into your own personal experience. Here's how it works, in three easy steps:

Tag your games: To get started, all you need to do is tag some baseball games with some activity that you did. For example, maybe you could tag games you watched in the stadium, or games you watched in your favorite bar, or games during which you wore your favorite jersey, or games where you stood on your head during the seventh inning stretch. You have the power to create your own activity to customize your story.

Get Your Personal Story: Statsninja takes care of crunching all the numbers and shows you only the interesting things about your own experience. Ever had the sneaking suspicion that your favorite team scores more runs when you're there? Or that a little-known outfielder is absolutely crusing it at the plate? Want to know whose player jersey you should be buying? We make it incredibly easy to find out!

Track and share your experience: Relive history by looking through those old games where you witnessed something incredible. Share these experiences and compete with your friends. Compare yourself to your friends; imagine finding out that when you both attend a game their winning percentage shoots through the roof, or that their favorite player only plays well when you're there to see

Screenshots

Introducing statsninja.io was originally published by Craig Booth at Craig M. Booth on December 15, 2015.
 http://www.craigmbooth.com/blog/selinux-for-mortals 2015-11-05T00:00:00+00:00 2015-11-05T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
I've found myself for the first time in a situation where I've very suddenly needed to understand a couple of things about SELinux. I ended up watching the talk I've linked above, SELinux for Mere Mortals, given by Thomas Cameron back in 2012. I took notes throughout and am throwing them up here so that I can't lose them again.

What is SELinux

SELinux is an example of a Mandatory Access Control (MAC) system. This is as opposed to the traditional Linux access control system, which is a Discretionary Access Control system (DAC). In a DAC there is nothing to prevent a user from chmod a+rwx -R * everything they own. In a MAC, if there is a policy in place then even if you change the DAC then access will be stopped.

Policies

In RHEL there are generally two SELinux policies:

"targeted" – If there is a policy for a process it is managed by SELinux, everything else can run fine. There are 100's of policies predefined for different processes

"mls" – Can be very complex, can apply policies to all processes.

For the purposes of this document we will consider only the targeted policy. You can tell what your system should be running by looking in /etc/selinux/config, you can also check via /usr/sbin/sestatus. This will tell you what policy should be loaded, and whether SELinux is running in permissive (log things only), or enforcing mode (block inappropriate access).

There are a couple of concepts that we need: Labeling and type enforcement

Labeling

Files, processes, ports, etc. are all labeled with an SELinux context. For files and directories this is stored as extended attributes on the file system. For other things, the kernel adds that information when the service comes up. The labels are in the following format:

user:role:type:level (optional)

For the targeted policy, user, role and level are unimportant. We worry only about type. For the mls policy, all of these could be used.

As an example, consider the Apache web server. If you look at the Apache executable's SELinux context, you see the type is httpd_exec_t. You see this with ls -Z. Similarly, the config directory is labeled httpd_config_t, the log file dir is httpd_log_t, the init script is httpd_initrc_exec_t, the ports the web server is running on are labeled with httpd_port_t. The _t should be read as type.

Labeling is simply a logical way of grouping things together. When the web server runs, its process is labeled httpd_t, which you can see with ps -Z

Type Enforcement

Continuing with the Apache example, it probably makes sense for a process running in the httpd_t context to interact with a file with the httpd_config_t label, but not for a process in that context to interact with files int he shadow_t context (e.g. the file /etc/shadow).

Type enforcement is simply saying "a process running with this type can access a file labeled as that type"

Working With SELinux

The semanage command can manage some aspects of SELinux without requiring recompilation of policy sources.

Interacting With Labels

The -Z argument is accepted by many commands (ls, id, ps, netstat, etc). On the file system I can create labels with -Z passed to cp and mkdir. There are also some tools for interacting directly with contexts, which will be covered later (chcon, restorecon, semanage)

In general a file inherits the context of its parent directory (unless a policy defines a rule like "if an application in foo_t creates a file in a directory labeled bar_t, transition it so the label is created with baz_t"). RPMs can also set contexts as part of the installation.

SELinux Errors

An error means that something is wrong. Turning off SELinux in response to this is like turning up the radio loud in a car with a noisy engine.

It may mean that labeling is wrong

It may mean that the policy needs to be tweaked

There could be a bug in a policy

You have been hacked

SELinux Booleans

Booleans are on/off switches for SELinux. From simple stuff like "do we allow the FTP server access to home directories" to really arcane and esoteric settings. There are a ton of these Booleans that are predefined.

To see all the Booleans

getsebool -a

To see a Boolean

setsebool [-P] <name> 0/1

The -P makes it permanent. Note that to help debug this, install setroubleshoot and setroubleshoot-server (then restart auditd), they will make life about a million times easier when troubleshooting policies.

To see what Booleans are set, check out /etc/selinux/targeted/modules/active, there is a file called "booleans.local" with any custom changes made on the system. Note that the file in this directory is NOT configuration, it is reporting. Changing the contents of this file will not affect anything, it will just be overwritten at some point.

Restorecon

Restorecon returns contexts to whatever they should have inherited from their parent directories.

restorecon -vR /target/dir/

This function uses information from /etc/selinux/targeted/contexts/files/file_contexts to determine what a file or directory's context should be. This file has entries for pretty much everything in the file system, but don't change it because your changes will be overwritten.

Enabling SELinux

To enable SELinux, edit /etc/selinux/config and set SELINUX=permissive. Do not set enforcing because it will likely hang at boot time. Then, create a file in the root of the file system called .autorelabel, reboot and the system will relabel the file system. This could take quite a while.

Real World Examples

Apache In User Homedirs

A user wants to host a website from inside their homedir. You go into Apache's httpd.conf and allow this, but you're getting disallowed errors, even after changing permissions on the homedir.

Check the usual suspects (/var/log/httpd/*) and everything is 403ing. Not too helpful, we knew that. Take a look at /var/log/messages and

setroubleshoot: SELinux is preventing /usr/bin/httpd from getattr access on the directory /home/fred. For complete selinux messages, run [a command].

This command will tell you the issues that happened, and frequently give you suggestions to fix them.

Apache In Other Directories

A user asks you to copy files from their homedir to /var/www/html. You do so, but then get permission denied on them. Follow the same procedure as before. SELinux will complain about the same thing as before (homedirs). What is going on? A quick ls -Z will explain this. The file you copied has type user_home_t because we moved it, not copied it.

First we need to find out what type it should have, just do an ls -Z on a known good directory. You can then fix it with chcon to change the file type to httpd_sys_content_t.

chcon -t httpd_sys_content_t /var/www/html/index.html

Or, easier, if you know you want to make one thing look like another, just use ``reference

chcon --reference /var/www/html/ /var/www/html/index.html

General point: If you're getting permission denied in weird places, even when you have fixed permissions, you should check selinux in /var/log/messages.

If you just want to put everything in a directory into the context you'd expect it to have use restorecon

restorecon -vR /var/www/html

This will tell you exactly what it changed.

Creating a Web Directory Somewhere Nonstandard

I create the directory, update httpd.conf. Do the usual, check the permissions, all looks good, check /var/log/messages. It'll tell you to run a command, but this is messy because it thinks that the files should be in any one of hundreds of types. You need to figure out which one.

You can use semanage to update the contexts of all files in a directory (note that looking in /etc/selinux/targeted/contexts/files/file_contexts will give you the default contexts).

To give a directory the same contexts as another directory, use

semanage fcontext -a -e /var/www /target/dir/

This command just sets the defaults, we then need to run restorecon.

Creating Policy Modules For a New App

In the case that setting Booleans and modules is not enough, you need to create a policy. The best way to begin doing this is to set SELinux to permissive, then run the application through all its functionality and look through the log files for all of the errors.

setenforce 0

Then run sealert against the latest error message. In this case, the alert doesn't find any bools because this is a new application, so it may tell you to run audit2allow.

The way to do this is to grep whatever you're running into issues with (e.g. httpd) in /var/log/audit/audit.log

grep httpd /var/log/audit/audit.log | audit2allow -M namefornewpolicylocal

Then make the policy active following the instructions it gives you.

semodule -i namefornewpolicylocal.pp

In short: Grep your error out of audit.log, pipe it to audit2allow, send the policy to semodule.

SELinux For Mere Mortals was originally published by Craig Booth at Craig M. Booth on November 05, 2015.
 http://www.craigmbooth.com/blog/divvy-stories 2015-04-02T00:00:00+00:00 2015-04-02T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Divvy is Chicago's Bike sharing scheme. For the past two years, Divvy has run a visualization competition, where they open source data on all of the trips from the previous year and invite people to build cool visualizations about that data. The entrants from 2014 are here.

My friend Dan Platt and I decided to use the platform that we're developing at Narrative Science, Quill – an AI platform that turns data into stories written in the English language – and interpret the structured Divvy data in the form of stories.

In designing the app we decided to build out a simple experience where the user enters a single piece of information about something that they have a personal link to – a place – and the app tells them something about Divvy use in that place that they may not already know. We did this by calculating the most interesting Divvy related facts about each station, and then comparing the properties of that station to others.

The first stage of building this app was to use Google's GeoLocation API to translate any (Chicago) address input by a user into a latitude and longitude, and then look up the closest station.

Given the closest station, we take the dataset of 3 million Divvy rides from 2014 and combine it with data from other sources, including: weather data from Weather Underground, and Chicago neighborhood information from the City of Chicago's Open Data Portal. We then calculate over thirty different metrics that describe each station, including:

The fraction of trips taken in windy and/or hot weather

The fraction of round trips (trips that start and end at the same station)

The fraction of trips taken by subscribers

The net inflow of bikes (because Divvy vans rebalance bikes, some stations have many more trips arrive at them than leave)

The proportion of trips that end up in the same neighborhood as they started

The amount of Divvy activity in the area (measured by the number of stations within one mile)

The number of morning and evening commuters

And we extract a sampling of up to five of the most interesting metrics. We then feed this information into Quill, which has been configured to transform it into stories, where for each of the interesting metric it calls out stations that are most similar, and most different in various ways.

In order to make the app more dynamic, we designed the left-side of the page to show a map of nearby Divvy stations, and the user can click around in the map and request that Quill writes more stories, interactively.

I really think that our app showcases the Divvy data in a unique way, and by using the English language, we're able to communicate a lot of insight in a single page. You can try out the app here

We are finalists in the 2015 data challenge, in the Most Creative category. I'd love it if you voted for us here!

Divvy Stories was originally published by Craig Booth at Craig M. Booth on April 02, 2015.
 http://www.craigmbooth.com/blog/big-data-for-front-end-developers 2015-03-23T00:00:00+00:00 2015-03-23T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
One of the things I'm very happy that my employer, Narrative Science, has done is put me in contact with the Chicago tech community. Through them, I have taught an occasional session at the Startup Institute. The Startup Institute is a great program that takes people who are interested in getting jobs in tech startups and turns them into very, very able employees. I've been nothing but impressed by all of my interactions with the Startup Institute students.

In the past I have taught, as an Adjunct Instructor, a course on Big Data to the Startup Institute's cohort of back end engineers. This coming April, I'm going to take on a slightly different challenge and teach the same session to front end developers. This requires some refocusing of the material and I thought I'd write down a few of the ideas I've had around refactoring this backend-heavy material into something that is more widely applicable.

Goal of the Session: The Obligation to Dissent

Shortly after I first started working at a startup, I read the book How Google Works. A very readable summary of how Google operates as a company, how they are structured, and their culture.

One part of the book stood out to me, and changed how I approached my work was this:

For a meritocracy to work, it needs to engender a culture where there is an "obligation to dissent". If someone thinks there is something wrong with an idea, they must raise that concern. If they don't, and if the subpar idea wins the day, then they are culpable.

The word 'obligation' is important here. Personally I tend to avoid confrontation, and in my old line of work would need to be cajoled pretty heavily into participating in big group discussions, but I did take obligatory dissent on board, even though it was initially something that I had to force myself to do, heart pounding. I have to say that having this obligation has made me a much better engineer, and by not allowing myself to check out of meetings that aren't directly relevant to my own immediate interests has made me more well rounded.

The obligation to dissent is especially critical in a small startup where, say, five engineers may be responsible for the design and implementation of entire products. It is absolutely the responsibility of every engineer to understand, at least at a high level, the decisions that are being made. You can't be an expert on everything, but you should at least know enough to be able to critically analyze and discuss what your peers are saying.

It is this mindset that I want to bring to Big Data for Front End Engineers.

Overview: Everything is Tradeoffs

We only have two hours, so we're not going to take a deep dive into technologies, instead I'm aiming to do two things:

Survey the landscape of Big Data, and show the basic concepts and tradeoffs that need to be made. Do I need to be accurate? or fast? Do I need to be consistent? or accessible?

Understand how the rising volumes of data are going to affect everybody. Focus on what we will all need to do to keep running in the face of ever growing data requirements.

I think that every developer at a startup should be able to reason effectively about the problems posed by large volumes of data, and I hope to be able to communicate at least the outlines of a roadmap in this session. Here is what we are going to cover:

PART I: What Makes Something Big

"Big" doesn't only mean large data files. Data can be hard to handle in a number of ways:

Velocity: Data can come at you quickly. For example, if you had access to the Twitter firehose you would be dealing with approximately 6,000 Tweets every second. How do you write code that deals with this?

Variety: An increasing number of applications need to consolidate multiple streams of data. For example, a you may need to combine user click data with data inferred from videos that the users are watching, and unstructured text that the users are typing.

Volume: It is not uncommon for startups to deal with tera- or petabytes of data. How can you parse data that is too large for any single machine you own?

Veracity: Especially in the social realm, how do you deal with uncertainty? For example, Facebook's facial recognition software is good, but not perfect. How do continue to function in a world where you cannot trust individual data points?

PART II: Storing Data

How do you store and access data when it gets to be too large for a single computer?

Here we'll discuss the limitations and benefits of scaling horizontally (that is: by using multiple machines) and vertically (that is: by using a single, larger machine). We'll see that scaling vertically works – to a point – and when you're dealing with web-scale data you'll need to make some tradeoffs and choose only two of:

Ability to always give the most up-to-date values for any data

Ability to be accessible even if parts of the network are down

Ability to survive splits in the network

PART III: Doing Interesting Things with Data

We can't take a deep dive into specific technologies, so what I'm going to focus on instead is some thought experiments that hopefully illuminate how we think about dealing with high-velocity and high-volume data.

Dealing with Velocity

If you're in a situation where data is coming at you so fast that you can't possibly parse and analyze all of it, how do you manage to perform complex calculations?

In short, you need to start using statistical and approximate methods. As an example of this I'll describe an algorithm that illustrates this principle nicely. Imagine I asked you to do the following:

Watch Twitter's firehose of Tweets (around 6,000 every second) and select from there a completely random sample of 1,000 tweets, where every single Tweet from the firehose has an equal chance of ending up in the sample. Note that you have no idea how many total Tweets there will be, or how long the stream will run for.

Dealing With Volume

So you have a dataset that is 100s or 1000s of times too large for your laptop to handle, say all of the user click and mouse-movement data tracked on your startup's website for the past three months. How do you do useful calculations on that dataset?

We'll look at the basics and limitations of the MapReduce paradigm, which makes it possible to do seemingly difficult calculations on petabytes of data by writing only two simple functions. As an example, we'll see how Facebook could calculate how many shared friends every single person in the network has, even on a computer as small as a standard laptop.

Big Data for Front End Developers was originally published by Craig Booth at Craig M. Booth on March 23, 2015.
 http://www.craigmbooth.com/blog/docker-in-production 2015-03-11T00:00:00+00:00 2015-03-11T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Earlier this year, I attended the DevOps Days Chicago conference and one of the talks that stuck with me was by Bridget Kromhout, who stepped up at the start of the conference and gave a great talk, demystifying a bit of DevOps jargon for the rest of us (unicorns? pigs? goats in silos? cats? I don't even know).

Earlier this week, we were lucky enough to have Orbitz host a meetup, where Bridget would return and give us a warts and all discussion of what it was like to have been running Docker in production since version 0.something, back when the Docker website proudly sported a message telling you not to use Docker in production.

I took a lot of notes, but rather than rehashing the entire talk I thought it would be fun just to run through five interesting things I learned

The Distributed, Private Docker Registry

Rather than relying on a centralized Docker Registry, DramaFever (Bridget's company) have decentralized their Docker registries, which basically means that every machine, from production servers to developer laptops is running a Docker container that acts as a local Docker registry.

This stops a single registry instance from getting overloaded when a ton of machines spin up at the same time. A very neat idea, I think.

Micro Images

Docker images get big. When you build from the base Ubuntu image, you're looking at half a GB or upwards, before you even build your software on top of that.

Bridget pointed out that if you're optimizing for size and speed of deployment, there is a base Docker image named scratch, which is 0B in size. You can simply layer your code on top of scratch until it works.

That said, this is an optimization, and it will be much more work to get this functional. For example, want to grab logs from /var/logs? Well, you better remember to set up the file system first. If it turns out that deploy-speed is a pain point in your infrastructure, this is an option to speed things up, but it will require quite some work.

CloudWatch and Graphite

We saw a beautiful flowchart of how DramaFever does monitoring. On there was an arrow, pointing from Amazon's CloudWatch to Graphite. An audience member asked what that arrow was for, and we learned that it was because dumping data in Graphite would allow it to persist past the arbitrary AWS limit (two months?).

At DramaFever they run a cronjob on the Graphite server that pulls down CloudWatch metrics for the sole purpose of having them available for longer than Amazon gives them to you. A very pragmatic workaround to one of my little annoyances with CLoudWatch. Speaking of which…

Be Pragmatic

The title on this section is not something that was said, but rather something that was demonstrated very ably. Working in operations is pretty much as far away from an isolated sandbox as you can get. It is totally inevitable that there will be race conditions and mysterious bugs and network failures when dozens of complex systems are talking to one another.

In an ideal world we would all have the time to figure out the root cause of every single issue, take apart the code that is causing it and fix it. In the real world, we need things to work today. One example I liked was when talking a very specific intermittent bug, with a very recognizable error message (error getting container init rootfs), which was discovered to be due to the Red Hat file system, the solution was simply to install the naginator plugin for Jenkins. This plugin does nothing but repeat a build if a certain error message happens, stopping much heartache when this random race condition from outside of your control crashes a build.

Why Docker

One of the last questions asked at the talk was whether Docker was better than a well configured Chef and/or Ansible setup. The answer was yes, because you know what you are getting. If a Docker container is running and has a certain ID, you can be very certain that what's inside it is what you expect.

This is certainly not the case with Chef builds, and I can imagine that working in a world where you have this feeling of safety would make everything a lot easier.

Docker in Production: Reality, Not Hype was originally published by Craig Booth at Craig M. Booth on March 11, 2015.
 http://www.craigmbooth.com/blog/perfection-is-the-enemy 2015-03-09T00:00:00+00:00 2015-03-09T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
One part of my own psychology that I hate is that I have the tendency to sit on projects and ideas, working away at them until I think they're 'perfect', and as a result much of what I do never sees the light of day. This seeps into many areas of my life, not least of which would be the redesign of a website that I've been sitting on now for a couple of months

Winter. Time for the yearly complete rewrite of my homepage. Finally going to break my ties to Wordpress.
— Craig Booth (@craigmbooth) January 3, 2015

In an effort to force myself to finish the ground-up rebuild of this website, I decided that I'd make the new design live today. Sure, it has TODO messages and dead links, but on the whole it's working and I like how it looks, so here it goes.

I developed the previous version of this website when I was first learning CSS (and Wordpress forced me to pick up some PHP), but I have been largely unhappy with it for a while. The whole site looked very much like a generic portfolio site, and behind the scenes, the HTML was janky enough that I had to do a whole bunch of workarounds to get certain things to render correctly, so I decided to rebuild.

Since it's a ground-up rewrite, I also decided to revisit my decision to use Wordpress. Initially, Wordpress was the de-facto choice because it has a vast army of plugins and pre-built themes, and once it's installed, you can get by largely by using the frontend. However, there are a few reasons it's not right for me at the moment:

A big part of the reason I have this site is to have a playground for learning frontend development. Wordpress feels like an extra layer of abstraction over the code, it always felt like I was designing for Wordpress, not designing a website.

For a simple blog, Wordpress feels like overkill. Sure, it started out as a blogging platform, but has grown into an incredibly full-featured CMS. Again, I felt like this complexity just meant that I was learning Wordpress, not learning code.

PHP.

Wordpress seems to update every couple of weeks, and some updates are incompatible with some plugins, and I've manually edited some plugins and those updates cause them to break and then I'm sad and hacking on PHP code that I don't understand on a Tuesday night.

In the end I settled on one of the more lightweight, flat frameworks, Jekyll, somewhere where I can just write in Markdown, use a simple templating language and then type 'jekyll build' and have a static site drop out the other side. Outside of that I can just be involved with trying to write the best frontend code that I can.

For posterity's sake, here are some screencaptures of the old site, before they're lost to the depths of the Internet

Perfection is the Enemy was originally published by Craig Booth at Craig M. Booth on March 09, 2015.
 http://www.craigmbooth.com/data/data-visualization-projects 2014-04-12T00:00:00+00:00 2014-04-12T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Over the past couple of weeks I have put together a couple of (I think) really cool data visualization projects, but they're not yet linked from anywhere on this website. I'm fixing that right now. Check these out!

Map of Software

I used a web spider to crawl stack overflow for every tagged question. I then used this data to construct a huge graph showing how all of the different tags are related. In essence forming a topographical map of how all of computing is interrelated. I then put this map into a zoomable, Google maps style interface.

Link to the Map of Software

Interactive NFL Stats

I combined tables of NFL data with Google's chart API to produce a Gapminder style interactive visualization of how every team in the NFL has performed since the year 2000.

Link to the NFL Statalyzer

Data Visualization Projects was originally published by Craig Booth at Craig M. Booth on April 12, 2014.
 http://www.craigmbooth.com/blog/the-weights-of-16000-nfl-players 2014-03-14T00:00:00+00:00 2014-03-14T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
There have been a large number of news reports about concussions in the NFL, and how it's "today's monster players" laying down big hits on one another that lead to this danger. I decided to go into the numbers and take a look at this form myself. Here's a graph showing the median weight of NFL players over time. This data was comes from about 16,000 players collected from pro-football-reference.com

There are a bunch on interesting features in this graph:

The most striking thing is just the overall increase in weight since the mid-80s. This is some combination of nutrition, weightlifting and steroids, although in what combination I don't know

The wide receivers in particular are very interesting. Why did they go through a shrinking phase and then a growing phase? What was happening in the game that caused this?

Running backs are getting shorter, but also heavier, showing that the game is evolving towards these guys being short, strong and powerful

The weight of kickers drops until the 1980s then rebounds. This is probably because (from Wikipedia) The kicker initially was not a specialized role. Until the 1960s, the kicker almost always doubled at another position on the roster. Therefore the drop through the 1980s is the emergence of the specialized kicker, and the rise thereafter matches that seen in virtually every other position

It's amazing how small the variation is amongst some of the positions. Plus or minus 6 pounds at 230+ pounds. Represents an incredibly specialized role.

Of course, this is only a small fraction of the story and the following gallery contains both the heights and BMIs of these same players, along with the weights broken down by position to show the scatter. Enjoy!

For those interested in outliers, here are the heaviest quarterbacks to play in the NFL on a year-to-year basis:

1940 season : Bernie Masterson is 195 lbs

1941 season : Tommy Thompson is 192 lbs

1942 season : Russ Cotton is 196 lbs

1943 season : Tommy Thompson is 192 lbs

1944 season : Larry Weldon is 198 lbs

1945-1948 season : Paul Christman is 210 lbs

1949-1952 season : George Blanda is 215 lbs

1953 season : Bob Gambold is 215 lbs

1954-1959 season : George Blanda is 215 lbs

1960-1962 season : Bob Scrabis is 225 lbs

1963 season : Roman Gabriel is 220 lbs

1964 season : Sonny Gibbs is 230 lbs

1965-1966 season : Ron Smith is 220 lbs

1967-1968 season : Roman Gabriel is 220 lbs

1969 season : Bobby Douglass is 225 lbs

1970-1972 season : Frank Patrick is 225 lbs

1973-1976 season : Bobby Douglass is 225 lbs

1977 season : Mike Wells is 225 lbs

1978 season : Bobby Douglass is 225 lbs

1979-1980 season : Bill Troup is 220 lbs

1981-1982 season : Rich Campbell is 224 lbs

1983-1985 season : Todd Blackledge is 225 lbs

1986 season : Jack Trudeau is 227 lbs

1987-1990 season : Vinny Testaverde is 235 lbs

1991-1994 season : Scott Mitchell is 240 lbs

1995-1998 season : Kerry Collins is 248 lbs

1999-2005 season : Daunte Culpepper is 264 lbs

2006 season : Jared Lorenzen is 275 lbs

2007-2009 season : JaMarcus Russell is 265. lbs

2010 season : Kerry Collins is 248 lbs

2011-2013 season : Cam Newton is 260 lbs

And here are the lightest quarterbacks playing in the NFL on a year-to-year basis:

1940 season : Solly Sherman is 190 lbs

1941 season : Young Bussey is 184 lbs

1942 season : Charlie O'Rourke is 175 lbs

1943 season : Allie Sherman is 170 lbs

1944 season : Bill Glenn is 157 lbs

1945 season : Allie Sherman is 170 lbs

1946 season : Jimmy Tarrant is 160 lbs

1947 season : Jesse Freitas is 170 lbs

1948 season : Jim Camp is 162 lbs

1949 season : Jesse Freitas is 170 lbs

1950-1951 season : Bev Wallace is 180 lbs

1952-1963 season : Eddie LeBaron is 168 lbs

1964-1967 season : Cotton Davidson is 182 lbs

1968 season : Harry Theofiledes is 180 lbs

1969-1975 season : Bob Berry is 185 lbs

1976 season : Neal Jeffrey is 180 lbs

1977 season : Pat Haden is 182 lbs

1978-1979 season : Mark Miller is 176 lbs

1980-1981 season : Pat Haden is 182 lbs

1982-1985 season : Paul McDonald is 185 lbs

1986 season : Doug Flutie is 180 lbs

1987 season : Kevin Ingram is 178 lbs

1988-2005 season : Doug Flutie is 180 lbs

2006 season : Jeff Garcia is 195 lbs

2007-2009 season : Matt Moore is 192 lbs

2010-2013 season : Armanti Edwards is 191 lbs

This post was picked up in a few locations, including:

Deadspin

The Washington Post

The Weights of Over 16,000 NFL Players was originally published by Craig Booth at Craig M. Booth on March 14, 2014.
 http://www.craigmbooth.com/blog/the-relative-age-effect-in-pro-sports 2014-03-13T00:00:00+00:00 2014-03-13T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
I remember reading a Malcolm Gladwell book, Outliers, and learning about an idea that he popularized. Namely, that if you look at ice hockey teams, the majority of the players were born in January through March. The explanation for this is the so-called relative-age effect. Namely:

In Canada, the cutoff for joining a hockey team in a year is Jan. 1

This means that when they're allowed to join junior hockey, some kids have just turned six, while others are almost seven

The bigger kids tend to be better at hockey, so

These kids end up playing in the teams, getting more training, getting even better

This argument feels very compelling to me, but it always puzzled me that I have seen it discussed in a large number of places, but it is always in the context of hockey. Surely in the US, too, there is a cutoff date for school children to join teams, and surely the same things must hold true in football and basketball and baseball.

sports-reference.com has a database of the birth dates for all of the sportsmen they track, so built a little web spider to collate this data for tens of thousands of players. Here's what I found:

So, each chart shows the number of players born per month, and the red line shows the number of players you would expect if they were distributed evenly throughout the year (this line is not perfectly flat because different months have different numbers of days).

As expected, hockey shows a really strong preponderance for hockey players to be born in January. Baseball shows a similar trend, with most players being born just after the start of a school year, suggesting that they would be the oldest kids in a given cohort.

Unexpectedly, basketball shows absolutely no trend. The Chi squared value reveals that the distribution of ages is totally consistent with players being born with equal probability on any day of the week. My first speculative thought is that the reason for this is that, unlike football, hockey and baseball, basketball is a sport that can be played with very little equipment so it's possible that most early basketball training happens outside of structured teams, so kids of all ages mix together without arbitrary 'cutoff dates' keeping them apart.

Finally the NFL shows a weird trend, with fewer players than would be expected born in the spring (this is statistically significant). I have no idea why this happens, maybe there are some positions in football that are unaffected by young-age and kids are shunted into positions accordingly. If anybody has any ideas on this I'd love to hear them.

The Relative Age Effect in Pro-Sports was originally published by Craig Booth at Craig M. Booth on March 13, 2014.
 http://www.craigmbooth.com/blog/sundry-story-structures 2014-03-10T00:00:00+00:00 2014-03-10T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
Today I fell into a Wikipedia-hole. You know how it goes, two wrong clicks and suddenly you've spent six hours learning the biographical histories of characters from Super Mario. Thankfully, today was somewhat more productive than that, and I found myself reading about story structure and narrative study. After seeing waaaay too much about 'acts' and 'arcs' and 'tension' and 'cycles' I felt like it was time to widen my horizons from Wikipedia and googled 'story structure'. However, instead of hitting web search I accidentally clicked image search. The results were immediately kinda… enchanting.

As it happens, there are approximately as many ways of diagramming out story structure as there are stories to tell: From the cycles of Joesph Campbell's monomyth, through spastic looking Venn diagrams and arcs with sub (sub (sub (sub))) cycles, I was left knowing only that I know nothing.

Anyway, In the absence of any real understanding I made a collage to show what I'm talking about. Pictures of stories:

Sundry Story Structures was originally published by Craig Booth at Craig M. Booth on March 10, 2014.
 http://www.craigmbooth.com/blog/deadfish-in-fortran 2014-02-22T00:00:00+00:00 2014-02-22T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Yesterday I was idly browsing the esoteric programming languages wiki, and stumbled over the language Deadfish, so named because

Deadfish was originally going to be called fishheads as programming in this language is like eating raw fish heads. However, due to the limiting features of the language, programming in this language became like eating (and having to smell) dead, rotting fish heads, an experience not often generally considered pleasurable.

Deadfish is clearly a joke programming language. That is, a programming language

that [is] not of any interest except for potential humor value. Generally speaking, they [joke programming languages] are completely unusable for programming even in theory

Nevertheless, the wiki page for Deadfish contains implementations in 65 different languages including C, C#, C++, Chicken, Clever, COBOL, and Commodore 64 BASIC to name just the C's. For some reason, nobody has bothered to do it in FORTRAN 77, so I decided to fix that.

Deadfish is very simple and has only four commands. The state of the program begins at 0. The command 'i' increments the state by 1, the command 'd' decrements the state by 1, the command 'o' outputs the state to the screen and the command 's' squares the state.

c Deadfish interpreter in FORTRAN 77 PROGRAM DEADFISH CHARACTER*1 inp INTEGER state state = 0 DO WRITE(*,'(2A)', ADVANCE='no')">>" READ(*,*)inp IF (state .EQ. 256 .OR. state .LT. 0) + state = 0 IF (inp .EQ. 'i') THEN state = state + 1 ELSE IF (inp .EQ. 'd') THEN state = state - 1 ELSE IF (inp .eq. 's') THEN state = state**2 ELSE IF (inp .EQ. 'o') THEN WRITE(*,"(I3)")state ELSE WRITE(*,*)'Unrecognized command' END IF END DO END

No idea why I made that. What a iisiiiisiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiioodddddddddodddddddoiiiiiiiiiiodddddddo idea.

Deadfish in FORTRAN was originally published by Craig Booth at Craig M. Booth on February 22, 2014.
 http://www.craigmbooth.com/blog/python-fragments-1 2013-12-16T00:00:00+00:00 2013-12-16T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
This is the first of a series of posts I want to write about things I learn about the Python programming language. I have been a coder for many years, but it's only for the past month or so that I've worked outside of academia — and with proper software engineers — for the first time. I'm also for the first time focusing all my energies on a single language, Python, and as such I'm learning a lot.

Recently I have been working as part of a small team on a project that requires a number of small hardcoded dictionaries and constants to be passed around to virtually every function in the code. My first thought was to write a small class that had these things as attributes, essentially like a structure in C, and to pass the relevant parts of this structure to whatever functions needed them. This works just fine, but when other people started looking at the code, I found that it's all too easy for people to modify the attributes of this class, especially when they were passed into a function. If I were to do this again, I'd design better so that this isn't an issue, but rather than rewrite the entire codebase to use proper get methods for each of the attributes, or to explicitly import and use the relevant parts of the class in the correct modules, I wanted a quick fix that would just make the class immutable. Enter, this hack.

The basic idea is just to override setattr and delattr methods to raise an exception. Doing this alone doesn't get the job done because the object's init method will try to use these methods to set its own attributes, so inside of init, we must then also use object.setattr to set its attributes. Here's an example:

class ClassWithImmutableAttributes(object): """Class has immutable attributes""" def __setattr__(self, *args): """Override __setattr__ to prevent attributes of this class from being changed. """ raise AttributeError("Attributes of the %s class cannot be " "changed" % type(self).__name__) def __delattr__(self, *args): """Override __delattr__ to prevent attributes of this class from being deleted. """ raise AttributeError("Attributes of the %s class cannot be " "deleted" % type(self).__name__) def __init__(self): """Attributes of this method can be accessed but not modified. Explicitly use object.__setattr__ to set attributes """ object.__setattr__(self, "x", 1)

So there it is. Attributes that can't be changed.

Python Fragments #1: A Class With Immutable Attributes was originally published by Craig Booth at Craig M. Booth on December 16, 2013.
 http://www.craigmbooth.com/blog/farewell-to-astronomy 2013-10-25T00:00:00+00:00 2013-10-25T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
Recently I took the decision to shift my life onto a new track and accepted a job offer outside of astrophysics. Given that leaving academia has long been a frequent source of conversation among the postdocs and PhD students I interact with on a daily basis I thought that — inspired by Marcel Haas' article titled Leaving the field, becoming an extronomer — I'd write a few words about why I'm leaving, and where I'm going.

Jessica Kirkpatrick has written a lot about the difference between academia and industry (Astronomer to data scientist, Astronomy vs. data science) and I'd encourage anybody who is interested to read those articles. They reflect my feelings about academia more coherently than I can myself. Therefore, I'm only going to cover my personal circumstances and say that as much as I love doing science for a living, I do feel that I'll be just as fulfilled elsewhere.

Where have I been?

I have been incredibly fortunate throughout my career. During my PhD at Durham University and post-doctoral positions at Leiden and Chicago I have been surrounded by wonderful and caring people who, over the course of each contract, have become close friends. Since moving to Chicago I have married a wonderful woman, we are lucky enough to live close to her family (this is by no means to be expected for those of us on short-term academic contracts!), and I have found a group of friends who make me incredibly happy to be around.

The process of moving institutions every few years is both an up- and down- side of early-career academia. It's great to meet new people, and to experience new countries. At the same time, it is exhausting. Each time I move, the process of meeting a whole new circle of friends and stocking another apartment with Ikea furniture feels less like fun and more like a horrible chore, especially with the knowledge that my time at the new institution has an expiration date just a few years in the future.

If I try to project my career forwards and objectively place myself next to others who would be competing with me for jobs, I do feel like I would likely be able to find some sort of faculty position. However, it is unlikely that I'd be able to land something at a prestigious research institution, or in a city that I'd love as much as I do Chicago. I'd probably either end up stuck in a holding-cycle where I take more postdoctoral positions in new cities until finally settling, or I would accept a faculty position in a city and department where the things I have grown to love about both the big-city and big-department would be largely unavailable to my family and me. Either way, continuing an astronomy career would, for me, involve more years of uncertainty and big life changes with no obvious path to resolution.

It is a decision that is personal to everybody, but, for me, when I weigh my academic career against my personal happiness I know it's time for me to make some decisions that prioritize my family and my non-academic life above chasing a tenure track position.

Where am I going?

A while ago I filled out a LinkedIn profile with all of the computer and data-analysis experience that I gained doing astronomy. As a result, I get the occasional call or email from a recruiter asking if I'd be interested in opportunity X or job Y. Up until now I have always politely brushed these offers off because nothing appealed to me more than spending more time doing science, even though I already knew that in the long-term academia would not be for me.

However, a few weeks ago I received one of these emails from a recruiter on behalf of a company called Narrative Science, with the description that Narrative Science was born out of Northwestern University and "Our artificial intelligence platform automatically analyzes data and produces narratives that are contextually relevant, actionable and tailored to any audience." Basically, they turn tables full of data into stories written in the English language. Narrative Science made a bit of a splash a few years ago with software that takes the play-by-play from a baseball game and turns it into an article in English. Here are various articles about that (written by humans):

In Case You Wondered, a Real Human Wrote This Column (The New York Times)

Can the Computers at Narrative Science Replace Paid Writers? (The Atlantic)

Can an Algorithm Write a Better News Story Than a Human Reporter? (Wired)

Can an Algorithm Replace Stock Analysts? (Businessweek)

They have since widened scope to try and write stories in a huge number of subject domains, and the problems they're trying to solve in changing 'data' into 'stories' sounded both challenging and incredibly interesting. I agreed to an interview.

During this interview, in addition to being subjected to a few hours of questioning (including my first ever attempts at writing code on a white board!), I discovered a lively atmosphere full of fun people working hard on really interesting problems. Furthermore their data team are creating something cool that I think I'll be able to contribute to in a very significant way.

Happily, they liked me too and I'm really excited to say that I'll be joining the team at Narrative Science on October 30th

Farewell to Astronomy was originally published by Craig Booth at Craig M. Booth on October 25, 2013.
 http://www.craigmbooth.com/blog/the-height-and-weight-of-every-active-football-player 2013-10-16T00:00:00+00:00 2013-10-16T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
While brushing up my Python skills the other week, I decided to figure out web scraping and to do a little data analysis project. Specifically, I decided to look at the height and weight of every active NFL player, with the data that is found in tabular form on nfl.com. For anybody who wants to play with this data for themselves, here is a link to an iPython notebook with the source showing how I made the dataset. This script also requires the file teams.txt, which is up on github via the link. Then, given this database, it is easy to extract the heights and weights of each player and see how they all stack up against one another. A lot of the questions about the graphs were asking about the outlying points, so I'll quickly summarize them here:

The shortest player is Trindon Holliday, who is 5 feet 5 inches tall

The 6'8" quarterback is Brock Osweiler

 You can click here for a metric version of the chart, translated by the Polish American Football team Angels Toruń! The average weight and height of every position is as follows:

Safeties 6'0″ 207.6

Linebackers 6'2″ 246.3

Defensive Tackles 6'3″ 309.8

Defensive Ends 6'4″ 283.1

Cornerbacks 5'11″ 193.4

Centers 6'3″ 306.2

Tight Ends 6'4″ 254.7

Running Backs 5'11″ 215.3

Guards 6'4″ 314.5

Quarterbacks 6'3″ 223.8

Wide Receivers 6'1″ 202.6

Offensive Tackles 6'5″ 313.5

The same plot for punters and kickers is here. I moved punters and kickers into a separate graph just because the offense and defense are already sufficiently crowded that it's not entirely easy to read.

After posting these visualizations to Reddit they got picked up by the websites of a whole lot of places:

Deadspin

Bleacher Report

Sports Illustrated

USA Today

Next Impulse Sport

Business Insider

When I add up the number of people who have seen and/or shared these graphs, it's obvious that they have been viewed well over a quarter of a million times (125,000 from a link on imgur.com alone). This is more people than have ever seen the astrophysics that I've worked on for the last decade. I'm not sure how to feel about that.

The height and weight of every active football player was originally published by Craig Booth at Craig M. Booth on October 16, 2013.
 http://www.craigmbooth.com/blog/python-new-style-string-formatting-reference 2013-10-11T00:00:00+00:00 2013-10-11T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
I am forever forgetting how to format strings in Python and have probably Googled questions related to Python's format specification mini-language over a thousand times now. For my own reference I put together a quick-reference for the commands I type most frequently. Maybe it will be useful to other chronic Googlers of the same thing, so feel free to use this for anything that you like.

 The new-style Python string formatting quick reference is also available as a PDF here

Python New-Style String Formatting Reference was originally published by Craig Booth at Craig M. Booth on October 11, 2013.
 http://www.craigmbooth.com/blog/naive-bayes-classifier 2013-09-13T00:00:00+00:00 2013-09-13T00:00:00+00:00 Craig Booth http://www.craigmbooth.com firstname.lastname@example.com
I've needed to derive and use the naive Bayes classifier a few times over the past years, so for my own reference I'm writing down here all of the steps in the derivation of the classifier along with a couple of example use cases so that I can refresh my memory as needed.

The Problem

The problem we are solving is as follows: Imagine a training dataset described by  features, . This training set is classified by hand into one of the classes . The classifier needs to, given a new set of  features, predict which of the classes  the new data corresponds to. That is, we want to calculate .

The Naive Bayesian Probabalistic Model

In the case where there are millions of features, or many values that each feature can take, looking up  in probability tables is not feasible, so we turn to Bayes rule:

Only the numerator of the fraction is interesting for classification, the denominator is just a constant number that depends on the particular set of features chosen, so:

We can make the numerator that remains more tractable by noting that we can break down a bunch of joint probabilities through repeated application of the definition of conditional probability. Concretely, for the case of four variables,  through :

More generally, for the case of  variables:

We use this to write for our problem:

Now we need to make the assumption that each of the features  is conditionally independent of all of the other features. That is,  and  and so on. This removes all of the conditions above and we can simplify the previous equation to

The Binary Classification Problem

So far we have derived the naive Bayes probability model, we need to add a decision rule to make a classifier. One very common choice is just to pick the most probable class (the maximum a posteriori or MAP decision rule). In general, we do not expect the features to be independent, but the naive Bayesian model is still of a surprising amount of use. In general we don't expect the values for the probabilities of class membership to be accurate if the features are dependent, but as long as they're in the correct order the MAP decision rule will still return the correct.

Imagine now a situation where, for a given set of  features  we wish to decide whether a particular entry belongs to a class () or does not (). We begin by defining the likelihood ratio:

Here,  and  represent our knowledge of the prior probabilities. This prior probability distribution might be based on our knowledge of frequencies in the larger population, or on frequency in the training set. It is also important to note that the product is carried out over all features, including those that are negative in the sample we're considering.

If the likelihood ratio is greater than 1, the naive Bayesian classifier predicts that a given entry belongs to class . In practice, there are frequently many thousands of features and the probabilities of any given feature being present may be very small, so we work in terms of the log likelihood

Worked Example: Sentiment Analysis

Imagine that you have the following set of messages about a mobile phone

We wish to be able to automatically classify new messages that we receive either as having a positive or negative sentiment. From the overall population,  and . We can now calculate the conditional probabilities for each word being in a positive and negative message.

Note here that we have employed 'smoothing' or 'pseudocounting'. Where a term doesn't appear in a given class (e.g. the word hate appears in no positive messages) we don't want to return a zero as it sends the likelihood calculation haywire. Instead we make it the smallest possible number. Now consider trying to automatically classify the following message

The prefactors outside the fromt of the likelihood ratio cancel out (), and multiplying out the remaining products gives

I don't know which way this works out, but it highlights one big weakness with naive Bayes. That is that we have assumed the message is a bag of words, where their relative positions are unimportant. For example, the presence of no in front of pleasure makes this a negative statement that naive Bayes interprets incorrectly.

The Naive Bayes Classifier was originally published by Craig Booth at Craig M. Booth on September 13, 2013.
 http://www.craigmbooth.com/blog/a-history-of-matrix-multiplication 2013-07-08T00:00:00+00:00 2013-07-08T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
I have been thinking a lot about matrix multiplication recently. Specifically, if you're multiplying two matrices of size , I find it very hard to understand how it's possible to achieve this in better than  time. The reasoning here is that you have to calculate  elements of the output and for each element you have to do  calculations, leading to  calculations.

In spite of this I am aware that there are algorithms that can multiply the two matrices in significantly less time, in fact the current best algorithms can do so in , a huge amount better than . I spent a little time looking into this, and found that the history of matrix multiplication is surprisingly interesting.

It turns out that in computer science circles this scaling is so important that is has its own symbol, . The quantity  is defined so that the scaling of any given algorithm is . Concretely, the naive idea I put forward in the first paragraph has . How did we get from the naive algorithm to today's ?

The answer is that we got there in fits and starts. In the following graph I have collected some references showing how the best known value of  has changed with time. Here is a graph showing the best known value for  over the years.

This graph shows the best currently known value of  as a function of time. The upper, horizontal bar shows the scaling of the  algorithm, and the lower, horizontal bar shows the hypothesized (although not yet realized) best possible scaling for a matrix multiplication algorithm, which is .

Since time immemorial people have known the  algorithm (or just assumed that no improvement is possible). Absolutely no progress was made in this direction until 1969, when Volker Strassen published his paper demonstrating an algorithm with .

I find the Strassen algorithm unbelievable (I guess the polite scientific term for that is 'highly non-trivial'). In short, Strassen found a way of reducing the number of multiplications you need to do to multiply two  matrices, , from 8 to 7, via a really convoluted series of equations

Sometimes I look at algorithms and think to myself "yes, I could have thought of that". This time, though, I just have no idea where it came from. There was a leap of insight taken somewhere along the line there that I just can't begin to fathom. Really incredible stuff.

A History of Matrix Multiplication was originally published by Craig Booth at Craig M. Booth on July 08, 2013.
 http://www.craigmbooth.com/blog/social-network-analysis 2013-06-27T00:00:00+00:00 2013-06-27T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
I take a great deal of satisfaction in visualizing data, especially personal data. Sometimes a good visualization can immediately communicate more about a dataset than a dozen equations. To that end I recently got the data from my Facebook network and ran it through some analysis software (Gephi) just to see what I can see.

Without any further ado, here is my social network as of April 2013. Each of the points represents a person I'm friends with. I'm not on this graph because I'm friends with everybody (obviously!). Each of the links between two points represents that those two of my friends are also friends with one another. The colour of each point shows the person's sex (red=female, blue=male, green=unspecified) and its size shows how many shared friends we have.

The points are positioned such that friendship links pull points together. Therefore, groups of people who know one another are clustered tightly on the graph. I am absolutely fascinated by the fact that I can see all the distinct phases of my life in this one picture:

The huge blob to the lower left: This could just be labeled 'astronomers', although it is dominated by people from my time at Leiden University

Just to the right, and heavily connected to Leiden is Durham, where I did my PhD. I think the density of people is somewhat lower here as Facebook was only really taking off towards the end of my PhD

The smaller group to the lower right is Nottingham University, where I was an undergraduate, and a couple of the links out of there into the large groups are friends who also became astronomers

The group to the top right is my high school, which is disconnected from my current life. The only link out of there is through my little sister.

The fragmented bit to the top-left is my new life in Chicago. It doesn't look like a ball of links yet, but it is in the process of forming right now

Maybe my favorite thing about this whole graph, though, is the one red point linking all the disparate phases of my life. She's sitting there towards the upper left, attached to everything. That person is my wife.

Social Network Analysis was originally published by Craig Booth at Craig M. Booth on June 27, 2013.
 http://www.craigmbooth.com/blog/paper-analytics-i-tag-clouds 2013-06-22T00:00:00+00:00 2013-06-22T00:00:00+00:00 Craig Booth http://www.craigmbooth.com email@example.com
Last night I put together a little python script to extract the text from the PDFs of each of my published papers and perfom some simple cleaning on the output. I fed the results of this script into Wordle to generate tag clouds for each of the papers and get a look at how my use of language has changed over time.

I find it interesting that I can so easily identify how my scientific interests have changed over the years. During my PhD I worked on simulations of the interstellar medium and this shows up pretty clearly in the wordclouds for my two PhD thesis papers (molecular, fountain, clouds, ISM). Then, with my move to Leiden I started working on black holes and the next three papers pretty clearly show this (BH, mBH, accretion, AGN), and also published a paper on metal absorption lines in the intergalactic medium. Interestingly enough, this metal-line paper out of all of them, seems to have a very even distribution of words, which is in contrast to my most recent paper where I apparently used the word 'feedback' more than everything else combined.

Booth C. M., Theuns T., Okamoto T., 2007, MNRAS, 376, 1588

Booth C. M., Theuns T., 2007, MNRAS 381, L89

Booth C. M., Schaye J., 2009, MNRAS, 398, 53

Booth C. M., Schaye J., 2010, MNRAS, 405, L1

Booth C. M., Schaye J., 2011, MNRAS, 412, 1158

Booth C. M., Schaye J., Delgado J. D., Dalla Vecchia C., 2012, MNRAS, 420, 1053

Booth, C. M., Schaye J., 2013, Nature Scientific Reports, Volume , id. 1738 (2013)

Paper Analytics I. Word Clouds for All of my First Author Papers was originally published by Craig Booth at Craig M. Booth on June 22, 2013.


text:
Website under redesign. Please email or call with questions in the meantime: email@example.com 1 (503) 810 -4163
Tired of chronic pain ruling your life?
Are you ready to take your life back from pain?
Go from Ow to Wow!
Thriving with Pain and Beyond! Online class available.
Use the coupon code: THRIVER (for 50% discount)
Don't go it alone!
Call Today: 503 810 4163 or firstname.lastname@example.com to start your journey from ow to wow!
- Compassionate support from someone who gets it–who has lived with chronic pain and thrives
- Be an expert on yourself and trust your experience
- Explore options and referrals for pain relief–loads of resources without hours of research!
- Gain perspectives, skills and habits to manage and relieve pain effectively
- Laugh and find ways to adapt, accept and engage
- Engage your passion, creativity, and service
- Become a Thriver!

subset: commoncrawl


text:
ACC Best Practices Committee
On March 20, 2012, Sutherland Asbill & Brennan LLP Partners Kent C. Sullivan and Thomas W. Curvin are speaking at the ACC Best Practices Committee meeting in Houston, Texas. The duo's presentation "Myth Busting: Attorney-Client Privilege and Work Product Doctrine," explores the attorney-client privilege, the work product doctrine and ethical issues of client confidentiality while debunking commonly held misimpressions about these documents.
For more information, click here.
Eversheds Sutherland is an international law firm helping the Fortune 100, industry leaders, sector innovators and business entrepreneurs solve their biggest challenges and reach their business goals. Dedicated to unfaltering excellence in client service, we are known for our business savvy and industry intelligence, providing creative and custom solutions for each of our clients. Industry and business experience makes the difference for our clients.
Complete the fields below to send your briefcase via email. Separate multiple email addresses with semi-colons(;)


text:
Dan + Shay 'Obsessed' in Denver: Nashville Minute
A song that should be played at every wedding this year goes number one; we are "obsessed" with the latest tour announcement, and Brad Paisley stops the show after a mishap.
A song that should be played at every wedding this year goes number one; we are "obsessed" with the latest tour announcement, and Brad Paisley stops the show after a mishap.
I have never been more proud in my career as I was when Dan + Shay had their first number one hit a while back with "Nothin' Like You". I have believed in these men since the first moment I heard them and am proud to call them good friends.
It is no secret that I am a huge fan of Dan + Shay. They are not only amazingly talented but are such great people. Shay Mooney may be the best singer in Nashville and the music these two create is something special. I am very proud that we were one of the first radio stations in the country to believe in these guys and play the hell out of their music.
I hadn't watched Dancing With the Stars for ages until this year. I was compelled to tune in this year and see how Denver Bronco Von Miller did. I watched the first couple of episodes and then drifted away. I just cannot stay up to watch shows that start at 7.
Kip Moore called in to talk with Brian and Todd during the 18th Annual 28 Hours of Hope and discussed the new music he's working on, as well as what it was like to share his tour bus recently with Dan + Shay. (Hint: The whiskey went missing!)
Can you imagine sitting in a bar in Nashville when Lee Brice and Shay Mooney of Dan + Shay suddenly jump on stage to perform? That would be about as cool as it gets...unless you throw in Peyton Manning as well.
It may not be as 'cowboy' as Merle and George left it, but I think this new generation of modern artists is bringing the music back to the good old stuff.
I am so proud today. My buddies Dan + Shay have the number one song in the country this week with "Nothin' Like You" and I couldn't be happier. We brought them in for a New From Nashville when they were first starting out a couple of years ago and I knew right then they were something special.
I have had the pleasure of making a lot of friends in the music business over my decades here at K99 but the relationship I have with Dan + Shay may be my favorite. I just love these guys.
We're giving away tickets FAST to the Logan County Fair this weekend on August 8 in Sterling, Colorado, and all you have to do is tell us what your favorite Brett Eldredge song is below!
The lineup for the 2015 Logan County Fair in Sterling on Saturday, August 8th has been announced. Tickets go on Sale on Monday, May 4th. Find out who is coming.
Brand New With Barnes features new songs from well known artists and singers you've never heard of before. This, is your weekly recap in case you missed some. Don't forget to vote for your favorite.


text:
By Alan Levin, USA TODAY
WASHINGTON The USA's infrastructure is crumbling and threatens the nation's economic well-being, according to a new report by a top engineering group.
A lack of investment in roads, bridges, mass transit and aviation means the cost of repair over the next five years has skyrocketed to $2.2 trillion, according to the American Society of Civil Engineers (ASCE). In its last estimate four years ago, the cost was $1.6 trillion.
STIMULUS UNCERTAINTY: How fast will impact be?
BIPARTISANSHIP: One of Obama's first tests
BAILOUT FIRMS: All have program recipients as clients
The ASCE, which has 146,000 members worldwide, is the country's oldest national engineering society.
Overall, the 15 categories graded by the ASCE received an average grade of "D" or poor, the group said in a press release. Aviation, roads and transit were downgraded from the group's last report.
The group rushed release of its report so it can be considered during debate Wednesday on the $825 billion economic stimulus package President Obama is pushing before Congress. The legislation includes $63 billion in infrastructure spending on transportation and environmental projects. ASCE members would oversee some of that work.
"A failing infrastructure cannot support a healthy economy," said Wayne Klotz, president of ASCE and the head of a civil engineering firm in Houston. "Crumbling infrastructure has a direct impact on our personal and economic health, and the nation's infrastructure crisis is endangering our future prosperity."
Not all infrastructure experts agree with ASCE's approach.
University of California-Berkeley economist David Dowall, who teaches city and regional planning, acknowledges that spending on infrastructure has fallen dramatically since the 1950s and '60s.
But he disagrees that simply rebuilding or expanding existing roads or other infrastructure is the best way to improve the economy. Getting people to drive fewer miles or to become more energy-efficient makes more sense than massive construction projects, Dowall said.
Klotz spent Tuesday briefing lawmakers and their staff on Capitol Hill in advance of today's expected vote on the stimulus bill. The group is non-partisan, and has argued for years that the country has neglected its transportation network, sewer systems, public buildings and other infrastructure.
The group estimated that people spend 4.2 billion hours a year stuck in traffic, costing the economy $78.2 billion. Flight delays have surged because of an outdated air-traffic system, it reported.
Guidelines: You share in the USA TODAY community, so please keep your comments smart and civil. Don't attack other readers personally, and keep your language decent. Use the "Report Abuse" button to make a difference. Read more.


text:
Super 8 Myrtle Beach/Ocean Front Area
- Tasuta kerge hommikusöök, tasuta wifi ja tasuta parkimine
Peamised teenused/mugavused
- 39 numbrituba
- Ranna lähedal
- Välibassein
- Õhukonditsioneer
- Iseteenindav pesumaja
- Saadaval ühendatavad/kõrvuti toad
- Privaatne vannituba
- Kvaliteettelekanalid
- Tasuta tualett-tarbed
- Pesumaja
- Jurassic Golf (~ 0,5 km)
- Myrtle Beachi kunstimuuseum (~ 0,7 km)
- The Franklin G Burroughs - Simeon B Chapin Art Museum (~ 0,7 km)
- Cancun Lagoon Miniature Golf (~ 1,3 km)
- Midway park (~ 1,4 km)
Bugs in the bathroom sink. Not kept very clean - bathroom floor not mopped, dirty walls.…
The beds were horrible.No elevators.It needs to be torn down and rebuilt
Super 8 Myrtle Beach/Ocean Front Area
Teave hotelli kohta: 800 004 4466 TASUTA lauatelefonistalates 179€
- Kahetuba, 2 kahevoodit, asukoht ookeani kaldal
- Efficiency, Tuba, 2 kahevoodit, asub basseini ääres
- Tuba, 2 kahevoodit, asukoht ookeani kaldal
- Kahetuba, 2 kahevoodit, asub basseini ääres
Rohkem häid valikuid
Hotelli suurus
- Selles hotellis on 39 tuba
- Sellel hotellil on 4 korrust
- Sisseregistreerimine alates 15.00
- Väljaregistreerimine 11.00
Sisseregistreerimisel vajalik
- Nõutav on krediitkaardi- või sularahadeposiit
- Nõutav on ametlik fotoga isikutunnistus
- Lemmikloomad ei ole lubatud
- Hotelli territooriumil saadaval tasuta wifi ja kaabliga internet
- Tubades on saadaval tasuta wifi ja kaabliga internet
- Tasuta iseteenindusega parkla
Lähedal asuvad 2 tärni hotellid Myrtle Beach
- Tasuta kerge hommikusöök iga päev
- Välibassein
- Pesumaja
- Õhukonditsioneer
- Triikraud/triikimislaud (tellimisel)
- Rõdu
- Privaatne vannituba
- Tasuta tualett-tarbed
- Föön
- Telerid
- Kvaliteettelekanalid
- Laud
- Tasuta wifi
- Kohalikud kõned tasuta
- Külmik (tellimisel)
- Mikrolaineahi (tellimisel)
- Saadaval ühendatavad/kõrvuti toad
- Juurdepääs väliskoridoride kaudu
Populaarsemad hotellid Myrtle Beach
Lähedal asuvad hotellid
Soovitatud hotellid
Super 8 Myrtle Beach/Ocean Front Area joonealune jutt
Tuntud ka kui
- Super 8 Myrtle Beach Ocean Front Area
- Super 8 Ocean Front
- Super 8 Ocean Front Motel
- Super 8 Ocean Front Motel Myrtle Beach Area
- Super 8 Myrtle Beach/Ocean Front Area Motel
- Super 8 Beach/Ocean Front Area Motel
- Super 8 Myrtle Beach/Ocean Front Area
- Super 8 Beach/Ocean Front Area
Selles asutuses on kõrvuti toad omavahel ühendatavad. Kõrvuti vabade tubade ette tellimiseks tuleks helistada broneerimiskinnitusel oleval telefoninumbril.
Loetelus on ära toodud kõik eri- ja lisatasud, millest hotell on meid teavitanud. Võtke siiski arvesse, et tasude suurused võivad muutuda olenevalt majutuse kestusest või toa kategooriast.
Viimased arvustused
2,4 /5 from 242 reviews
Older hotel, could use some maintenance. We went with another couple. While our room was decent (except the carpet), their room had a huge hole in the ceiling over the shower. "Poolside" does not mean ocean view, as their pool is on the side of the building, next to the parking lot. Beds were clean and comfortable. Decent hotel if you are just looking for an inexpensive place to sleep with beach access.
Terrible, felt unsafe!! Door stuck so that it had to be kicked forcefully to open. The inside door lock did not work! I wasn't expecting much from this place but I did expect a door that locked and a clean room. There was a stain on the toilet and the tub upon arrival, wiped both of them to see if they were stains and both wiped off. The peep hole in the door (see pic) was completed removed and someone had placed a rolled up napkin in the hole!!!!!! Do not stay here! We could also hear the person next to us snoring. Was awake well past 1am because of slamming doors and ability to hear everything outside! I should have read the reviews before booking.
this was good for 1 night...but not more than that...then room was ok...the bathroom was horrible the faucet hardly worked, there were roaches in the bathroom, the freezer in the refrigerator had what looked like mold there were not irons and the comforters had holes in them...again it was ok for 1 night, but I would not stay here again. One and done
Very Disappointed. The hotel was run down. Did not look like anything we saw on your website. Room was dirty and smelled. there was mold in the bathroom and broken tiles in the shower area. the bed spreads and the sheets felt like sand paper. I guess they never heard of fabric softners. The rugs were disgusting. Felt like they hadn't been vacuumed in a long while and NEVER cleaned.
The nastiest broke down place ever. Cost us over $100 for one night. .the air didn't work well. .hot all night. ..there was a huge hole in door. .you could see the side walk all night. ..4th floor and NO elevator. .very very rude staff. .free breakfast is a stale muffin and forever banana. Terrible! !!!! Also. .the pictures on hotels. Com is misleading. .they took pic of one beside them


text:
0 items ·
Check out
is back-ordered. We will ship it separately in 10 to 15 days.
Dehydrated, 2 oz
Tomato powder can be used to make a quick cream of tomato soup or a nice red natural food coloring.
Save money with combined shipping by ordering several items from Barry Farm.
Copyright © 2017 Capital Books and Wellness. Ecommerce Software by Shopify.


text:
Seminar on Lit for Youth: Innovative Approaches
Watch the video, then read the page.
The past several years have been exciting times for librarians who enjoy nonfiction for youth. The introduction of narrative nonfiction, innovative visual designs, and exciting new authors have exploded onto the literary scene. These fresh, new approaches involve much more than cool cover art. They bring new readers.
Read Aronson, Marc (January 2006). Originality in nonfiction. School Library Journal, 52(1), 42-43. IUPUI students can view the article online. This article was written almost a decade ago. The changes that Aronson identified in 2006 continue today. Can you think of some recently published works that reflect originality in nonfiction?
Adult-Teen Cross Over Books and Authors
There are many great books written for adults that are practical for young people. Letters to a Young Scientist (2013) by E.O. Wilson is an example of a cross-over book. This autobiography for both young adults and adults weave together twenty-one illustrated letters that explore Wilson's career as a scientist.
Some books like Steal Like an Artist: 10 Things Nobody Told You About Being Creative (2012) by Austin Bleon are written for a general audience with natural appeal for teens. Many of the books by Workman Publishing easily make this transition.
Many books designed for adults are effective audiobooks for teens. Seek out award winners.
For instance, Audie winner American Grown: The Story of the White House Kitchen Garden and Gardens Across America was written by Michelle Obama and read by Obama along with a cast of others.
The multiple voices add interest to the story. The book is available both as a CD and audible book.
Try It!
Where do you go to begin looking for adult books for teen?
Start by browsing the Adult Books 4 Teens blog at School Library Journal. While many of their suggestions are for fiction books, they often post nonfiction works.
Booklist publishes its Editor's Choice each year in the categories of Adult Books for Young Adults. Browse the lists.
What makes an effective adult-teen crossover book?
Biography and Autobiography
Although not written specifically for teens, Elie Wiesel's Night is a memoir commonly read by high school students. Works of biography and autobiography that explore the teen years of an individual are particularly popular with youth. In addition, look for popular figures in the news like the autobiography of Steve Jobs.
Social Sciences
From Malcolm Gladwell's books like Tipping Point to Stephen Ambrose's works such as Band of Brothers: E Company, 506th Regiment, 101st Airborne from Normandy to Hitler's Eagle's Nest, teens are attracted to works of nonfiction in the social sciences.
Recently, a number of authors have begun to write engaging nonfiction narratives focusing on specific individuals and events in history. Mitchell Zuckoff, Jon Krakauer, and Erik Larson are three excellent examples of authors that appeal to teen readers.
The Inventor and the Tycoon: A Gilded Age Murder and the Birth of Moving Pictures (2013) by Edward Ball combines the history of photography and film with an exploration of money and murder.
Many teens are drawn to nonfiction science topics. To engage a broad range of readers, look for authors that can write about popular science in conversational language.
One of the most popular science works of recent years was The Immortal Life of Henrietta Lacks (2010) by Rebecca Skloot. By combining cultural and medical journalism with a engaging writing style, Skloot's book is an excellent example of a great adult book for teens. The author's website even provides resources for those interested in integrating the book into the high school or college classroom.
Although some authors are thought of as adult authors, their works are very popular with youth. Scientific journalist Mary Roach has been a hit with teens for the past decade with titles including Stiff: The Curious Lives of Human Cadavers (2003), Spook: Science Tackles the Afterlife (2006), and Packing for Mars: The Curious Science of Life in the Void (2010). Her latest work Gulp: Adventures on the Alimentary Canal (2013) will keep youth reading.
The following science authors make great author-teen connections.
- Diane Ackerman
- John M. Barry
- Rachel Carson
- Craig Childs
- Richard Dawkins
- Jared Diamond
- Tim Flannery
- Mark Kurlansky
- James Gleick
- Jane Goodall
- Stephen Jay Gould
- Brian Greene
- Stephen Hawking
- Mary Roach
- Dava Sobel
- E.O. Wilson
- Simon Winchester
- Carl Zimmer
Adult vs Young Readers Editions
An increasing number of publishers are introducing "young readers editions" or "youth adaptations" of popular adult books. For example, I am Malala: The Girl Who Stood Up for Education and Was Shot (2013) by the Taliban by Malala Yousafzai and Christina Lamb is a memoir by the youngest recipient of the Nobel Peace Prize. The young reader edition is titled I Am Malala: How One Girl Stood Up for Education and Changed the World (2014) is by Malala Yousafzai and Patricia McCormick. Notice the title was changed for the youth audience. Generally, both the cover art and titles are revised for the young reader's edition.
It's possible to find these adaptations across genre. For instance, Our Choice by Al Gore focuses on climate change and has a young readers edition aimed at 8 to 14 year old youth.
This approach has been taken recently with two adult books related to Abraham Lincoln. Chasing Lincoln's Killer (2009) is a young adult version of James L. Swanson's bestseller Manhunt: The 12-Day Chase for Lincoln's Killer (2007). Bloody Times: The Funeral of Abraham Lincoln and the Manhunt for Jefferson Davis (2010) is the adapted version of Swanson's Bloody Crimes: The Funeral of Abraham Lincoln and the Chase for Jefferson Davis (2010). In the same vein is Lincoln's Last Days: The Shocking Assassination that Changed America Forever (2012) by Bill O'Reilly and Dwight Jon Zimmerman an abridged and adapted version of Killing Lincoln: The Shocking Assassination that Changed America Forever by Bill O'Reilly and Martin Dugard.
Another history-related example is The Mayflower and the Pilgrims' New World (2009) by Nathaniel Philbrick adapted from Mayflower: A Story of Community, Courage, and the War (2007). The adapted version includes additional illustrations including maps, artwork, and archival photos.
Three versions of the book Three Cups of Tea by Greg Mortenson and David Oliver Relin are available including an adult version, young reader's edition, and a children's book.
Focusing on fast-food production and marketing, Chew On This: Everything You Don't Want to Know about Fast Food (2007) is an adaptation of Fast Food Nation (2001) by Eric Schlosser.
Michael Pollan's The Omnivore's Dilemma: A Natural History of Four Meals has been a hit with teens and adults alike. In 2009, Pollan adapted his book for the young adult audience. Titled The Omnivore's Dilemma: The Secrets Behind What You Eat, Young Readers Edition, this is a shortened version of the original designed specifically for teens.
Sometimes the versions are aimed at the younger students. For instance, Jon Zimmerman's Saga of the Sioux is an adaptation of Dee Brown's Bury My Heart at Wounded Knee for middle school aged youth. In many cases the young reader editions are written by the original author, however in other instances children/ya authors are selected to write the adaptation.
Another example for younger students is the adaptation of Krakatoa: The Day the World Exploded (2003) by Simon Winchester titled The Day the World Exploded: The Earthshaking Catastrophe at Krakatoa (2008). This highly illustrated book is highly abridged by Dwight Jon Zimmerman is designed for ages 10-14.
A children's version of Mark Kurlansky's popular book titled Salt was designed for ages 7-10.
You'll find many other examples of books with young reader editions include Tim Tebow biography titled Through My Eyes: A Quarterback's Journey, Hope Solo's autobiography Hope Solo: My Story, and the Victor Cruz autobiography Out of the Blue.
Other examples of young reader editions:
- Enrique's Journey by Sonia Nazario
- Quiet Power: The Secret Strengths of Introverts by Susan Cain
- Young People: From Columbus's Voyage to Globalization by Charles Mann
Read Carter, Betty (May 1, 2015). What Makes a Good Nonfiction Adaptation? The Horn Book.
Think about the characteristics of an effective adaptation.
Try It!
In many cases, young adults enjoy reading works written for adults. However increasingly, publishers are producing "teen versions" of nonfiction works such as Michael Pollan's book The Omnivore's Dilemma.
Do you see these adaptations as a great way to gear an adult book to teens? Or, do you see them as an unnecessary "watering down" of content?
Locate a book with an adult version and an adaptation for a younger audience. What do you think of the adaptation? Do you think this a valuable way for youth to experience an adult book? Why or why not? Provide specific examples from the books to illustrate your ideas.
Now, read another pair of books with an adult version and youth version. Do you feel the same way about this adaptation? Compare and contrast how the two pairs addressed the issue of developing a youth version.
What guidelines would you suggest for authors adapting these types of works?
Nontraditional Formats
Nonfictional formats such as kits and pop-up books are appealing to youth, however they present unique challenges for librarians. As you consider these alternative books ask yourself:
- Do the special features add to or distract from the content?
- What are special considerations for storage and maintenance?
- What are the pros and cons to these types of materials in a library collection?
From books containing LEGO bricks to pot-holder kits, there are many great books connected with activities. However these can also be a problem for librarians.
Klutz is a company known for their great "how to" books with accompanying materials. However before you jump into buying them for your library, think about the contents of the kits.
Juggling for the Complete Klutz is a great example. The book contains three bean bags and a storage bag. Since the bean bags can be reused, it's something you may consider circulating. However think about whether the packing will need to be reinforced before it's used.
Face Painting is a popular topic, but the consumable kit that accompanies the book is a problem. Will you circulate the book with or without the consumables? What happens when the paints run out? Could you keep the book in a "special" area for programs related to face painting?
Try It!
Explore the Klutz. Think about how these non-traditional books would be stored and circulated. What are the pros and cons to purchasing these materials?
Fold-outs and Pop-ups
Authors and publishers have explored the idea of nontraditional book formats since the 18th century.
In Into the Unknown: How Great Explorers Found Their Way by Land, Sea, and Air by Stewart Ross, readers explore fourteen historic journeys through cross sections with fold-out elements.
The Great War: July 1, 1916: The First Day of the Battle by Joe Sacco is a wonderful example of the use of fold-out panels. Subtitled An Illustrated Panorama, the book focuses on a single event in a very visual way by presenting a 24 foot long accordion fold visual in 16 pages.
Pop-up books in history include David Hawcock, Peter Riley, and Thorston Opper (2007) The Pompeii Pop-Up. Hawcock has also produced other pop-up books such as The Pop-up Book of Ships, The Amazing Pop-up Pull-out Space Shuttle, and a series of Amazing Pop-up books for DK.
Kate Petty has produced a series of Amazing Pop-Ups including The Amazing Pop-up Geography Book, The Amazing Pop-Up Music Book, and The Amazing Pop-up Multiplication Book.
Pop-up books related to cities are popular such as Pop-up London by Jennie Maizels.
Animals Upside Down: A Pull, Pop, Life & Learn Book! (2013) by Steve Jenkins and Robin Page is a nonfiction pop-up book. Robert Crowther's Pop-Up House of Inventions: Hundreds of Fabulous Facts About Your Home is a recently updated selection.
Some authors specialize in these types of books. For instance, Robert Sabuda is known for his pop-up books. Sabuda's website even shows how to make basic pop-ups. Some examples include:
- American the Beautiful
- Chanukah Lights
- Cookie Count Pop-up
David A. Carter is another popular pop-up paper engineer. His books works of nonfiction include a series of pop-up books on color such as White Noise, Yellow Square, and One Red Dot.
His Lots of Bots!: A Pop-up Counting Book is a great example of a pop-up book for children. In addition to the book, readers can download the Bot Garage app that allows young designers to create 100,000 different robots.
Get youth excited about reading and writing fold-out and pop-up books by showing examples. Then introduce "how-to" books like The Elements of Pop-Up: A Pop Up Book for Aspiring Paper Engineers by James Diaz and the Pocket Paper Engineer by Carol Barton. There are lots of others including Paper Engineering and Pop-ups for Dummies by Rob Ives and Pop-Up: Everything You Need to Create Your Own Pop-up Book by Ruth Wickings and Frances Castle.
Try It!
Explore pop-up books for youth. Think about the pros and cons of these books in a nonfiction collection.
What's the "real world" of pop-up books in the libraries. Interview at least two librarians regarding their thoughts about purchasing and circulating pop-up books.
Aronson, Marc (January 2006). Originality in nonfiction. School Library Journal, 52(1), 42-43.


text:
Over 40 tornadoes swept across the Texas Panhandle all the way up to the Kansas-Nebraska border on Monday. An estimated 6,300 were left without power throughout North Texas. Two homes in rural Comanche County, Kansas were also damaged by a tornado.
Severe weather capable of producing tornadoes is possible throughout the night into the early morning of Tuesday as well.
We've put together a collection of all the footage from Monday's severe weather to this point. This list will continuously update as more footage comes in on Tuesday.
Check out our live storm chasing page and our weather news page to stay up-to-date.
High Plains Tornado Outbreak!
Video Description: "Tornadoes in the Texas Panhandle from the Palo Duro Canyon to Miami (TX) as part of a prolific multi-day severe weather outbreak.. Reports of damage on the south side of Pampa."
MASSIVE Pampa, Texas WEDGE Tornado & Explosions!
Video Description: "A HUGE tornado impacted the southern and eastern sections of Pampa, Texas this evening. Massive explosions can be seen of the wedge tornado in the distance as it plows up land and produces major damage to areas especially on the east side of Pampa this evening."
Large Wedge Tornado, Hail and Storm Damage from SW KS
Video Description: "This video package covers the storm that dumped hail in Liberal, then went out to produce a tornado for over an hour, moving across nearly 50 miles of southwest Kansas and managed to avoid doing any major damage to towns along the way."
Goodnight, Texas Brief Tornado
Video Description: "Brief tornado develops out of the supercell near Goodnight, Texas. Storms were just really beginning to rotate."
Grainfield, Kansas Tornado
Video Description: "A tornado forming late in the afternoon near Grainfield as a severe weather outbreak begins to unfold. This is the first of many tornadoes expected during the evening and overnight areas in the Kansas/Texas/Oklahoma areas."
More Good Videos:
More Articles From iB's Blog Smog:
» iB Offbeat
- Blog Smog Home
» News Hubs
+ Republican
+ Democrat
+ Libertarian
+ Tea Party
+ Green Party
» Biz Hubs
» Sports Hubs
NFL Fantasy
+ NBA Fantasy
+ MLB Fantasy
+ NHL Fantasy
» Tech Hubs
Oculus Rift
+ PC Gaming
+ Playstation 4
+ Playstation 3
+ Playstation Vita
+ Xbox One
+ Xbox 360
+ Nintendo Wii U
+ Nintendo 3DS
+ Mobile Gaming
+ Retro Gaming
+ Android
+ Blackberry
+ Windows Phone
+ Mobile Apps
+ Tablets
Web Design
+ Social Media
» Pop Hubs
Celeb Dating
+ Celeb Rides
+ Celeb Homes
+ Net Worth
+ Pop
+ Hip Hop
+ Country
+ Metal
+ Rock & Roll
+ Indie
+ Folk
+ Dub & Reggae
Movie Reviews
+ Indie Flicks
+ Full Movies
+ Full Docs
Full Shows
+ Photography
+ Graphic Design
+ Performing Arts
+ Film Production
+ Music Production
+ Illustration
+ Writing
+ Non-Fiction
+ Audio Books
» Health Hubs
+ Buddhism
+ Catholicism
+ Christianity
+ Hinduism
+ Islamism
+ Judaism
+ Mormonism
» Archives
December 2016


text:
Sniper Elite 4's Co-Op on Display in our Latest 3 Videos
Last night we took down some Nazis. We did our duty on President's day in the United States and fought back against the oppressors. We've got a handful of videos recapping the action in Sniper Elite 4, out now on Xbox One, PlayStation 4 and PC.


text:
Cici's Pizza North CharlestonStore's name : N. Charleston, SC
Address & Contacts
(843) 747-7227
Cici's Pizza
4950 Centre Pointe Dr Ste 160
29418 North Charleston
Opening Times
|11:00am - 10:00pm
|11:00am - 10:00pm
|11:00am - 10:00pm
|11:00am - 10:00pm
|11:00am - 10:00pm
|11:00am - 10:00pm
|11:00am - 10:00pm
Warning, Stores-Locator.com is a participative website where everyone can indicate the opening hours, please let us know if you notice any mistake.
Cici's Pizza North Charleston is usually open Sunday.
These times do not include public holidays. To see if your store is open these days, contact them.
- Restaurants
- Cici's Pizza in Mount Pleasant 1501 N. Hwy 17 Ste J
- Chick-fil-A in Myrtle Beach (8999.18 km)
- Denny's in Myrtle Beach (9000.36 km)
- Food Lion in Myrtle Beach (9001.17 km)
Your opinionYou are a customer or you know Cici's Pizza North Charleston ? Help future customers by leaving your review and rating this store!
Cici's Pizza
540 stores Cici's Pizza in the U.S. registered on Stores-Locator.com
CiCi's Pizza is an American buffet restaurant chain based in Coppell, Texas, specializing in pizza. In addition to its current 600 restaurants, in 2010 CiCi's announced plans to add another 500 restaurants in the next 10 years. The type of desserts that Cici's Pizza offer are Chocolate Brownies, Cinnamon Rolls, Apple Dessert Pizza, Bavarian Dessert Pizza.more about Cici's Pizza
Reading of the moment...
Kohl's enables the very-last-minute shopping for ChristmasBehind on your holiday shopping? Don't worry, Kohl's is opened day and night through Christmas Eve.
2011 - 2017 © Stores-Locator.com


text:
- Suzanne Sullivan
- Show
Hello Everyone,
I am a single woman with one 22 year old daughter. I am looking to relocate to Belize, but want to come for a month in January or February to get a feel for the life there. I'm hoping my daughter will be able to visit, so would like to have a place that has a possible 2nd bedroom. I would like to be located within walking distance to a town and the ocean. I am a former teacher of 24 years and enjoy reading, gardening, diving and exploring nature. I am not able to afford the $200 a day holiday rental, and am looking for a place where I have privacy, but also the opportunity to meet people. Thank you for letting me know of any place you may know of.


text:
House Sitter in Flatwoods
I have been sitting for six years now, most jobs are returning year after year. Very reliable and able to take care of your home while you are away. Also, take care of pets if you have those. Can stay full time or go check on home, whichever you prefer.
House Sitter Details
|Email Address
|Phone Number
Collect Mail
Feed Pets
Care For Plants
Take Out Trash/Recycling
Notes made here will only be seen by you. If you want to message the owner of this listing
More in Flatwoods, Kentucky
Looking for House Sitting jobs in Flatwoods, KY?
Find available jobs in your city.
Get Started
I Need a House SitterPost your Job
I Am a House SitterPost your Profile
Featured House Sitters near Flatwoods, KY


text:
This photo card is customizable to showcase your lovely graduate's photos. Custom fonts, a damask pattern, and ribbon graphics create an elegant woman's graduation announcement or invitation, as you can completely change the wording for any of your graduation needs. We can also change the black, purple, & white colors to your personal taste and needs.
See more ideas when you proceed to the product page for this design here: Formal Graduation Invitation.