“I know you fellow .01%ers tend to dismiss this kind of argument; I’ve had many of you tell me to my face I’m completely bonkers. And yes, I know there are many of you who are convinced that because you saw a poor kid with an iPhone that one time, inequality is a fiction. Here’s what I say to you: You’re living in a dream world. What everyone wants to believe is that when things reach a tipping point and go from being merely crappy for the masses to dangerous and socially destabilizing, that we’re somehow going to know about that shift ahead of time. Any student of history knows that’s not the way it happens. Revolutions, like bankruptcies, come gradually, and then suddenly. One day, somebody sets himself on fire, then thousands of people are in the streets, and before you know it, the country is burning. And then there’s no time for us to get to the airport and jump on our Gulfstream Vs and fly to New Zealand. That’s the way it always happens. If inequality keeps rising as it has been, eventually it will happen. We will not be able to predict when, and it will be terrible—for everybody. But especially for us.”—Nick Hanauer’s “The Pitchforks are Coming… For Us Plutocrats." (via twiststreet)
The current structure of the school day is obsolete, most would agree. Created during the Industrial Age, the assembly line system we have in place now has little relevance to what we know kids actually need to thrive. Most of us know this, and yet making room for the huge shift in the system that’s necessary has been difficult, if not impossible because of fear of the unknown.
Last night, a friend of mine, was riding her bike along Kimball near Wrightwood. A purplish-maroon Chevy Tahoe pulled up alongside her. The passengers leaned out and grabbed her by her messenger bag and dragged her as the car sped laughing and yelling at her all the while.
The nightmare stopped when eventually she crashed into a parked car that finally pulled her away from her the hands of her attackers. By some miracle, she was only bruised and terrified.
The Chevy Tahoe and the amused sadists sped away before she could get their license number. Compassionate witnesses and drivers stop to check in on her and help her phone a friend who escorts her to the hospital where she’s released at 4am.
This isn’t all that unusual. Lately there have been a rash of attacks on cyclists in Chicago.
The latest one happened to a friend, and one of my favorite Chicagoans, Jana Kinsman. If you’re a Chicagoan, you might know her, she’s a beekeeper, illustrator, urban naturalist, and very active member of Chicago’s design community.
Please reblog. I don’t ask people to do that often, but I have to believe that maybe someone, somewhere in Chicago knows something that can help out. There are people out there who are trying to kill people for fun.
In her words, “What makes me feel most helpless is that i can’t be like ‘learn from this’. I can’t offer anything. This is that awful tiny fraction of bike injuries where there was nothing i could have done different to avoid this.”
“If you hate your parents, the man, or the establishment, don’t show them up by getting wasted and wrapping your car around a tree. If you really want to rebel against your parents: outlearn them, outlive them, and know more than they do.”—Henry Rollins (via selenarox)
“Man is, at one and the same time, a solitary being and a social being. As a solitary being, he attempts to protect his own existence and that of those who are closest to him, to satisfy his personal desires, and to develop his innate abilities. As a social being, he seeks to gain the recognition and affection of his fellow human beings, to share in their pleasures, to comfort them in their sorrows, and to improve their conditions of life. Only the existence of these varied, frequently conflicting, strivings accounts for the special character of a man, and their specific combination determines the extent to which an individual can achieve an inner equilibrium and can contribute to the well-being of society. It is quite possible that the relative strength of these two drives is, in the main, fixed by inheritance. But the personality that finally emerges is largely formed by the environment in which a man happens to find himself during his development, by the structure of the society in which he grows up, by the tradition of that society, and by its appraisal of particular types of behavior. The abstract concept “society” means to the individual human being the sum total of his direct and indirect relations to his contemporaries and to all the people of earlier generations. The individual is able to think, feel, strive, and work by himself; but he depends so much upon society—in his physical, intellectual, and emotional existence—that it is impossible to think of him, or to understand him, outside the framework of society. It is “society” which provides man with food, clothing, a home, the tools of work, language, the forms of thought, and most of the content of thought; his life is made possible through the labor and the accomplishments of the many millions past and present who are all hidden behind the small word “society.””—
Setting up a Static Blog on OS X to Publish to S3 [UPDATED]
WARNING: This is rather a technical post. If you’re not comfortable doing neckbeardy things like typing stuff at the Unix command line and adding stuff to your bash profile, you probably want to give it a miss.
All I wanted to be able to do was write posts in Markdown in a Dropbox folder and have them be automatically published as a static blog hosted on Amazon S3. On a Mac. Not too much to ask, right?
Well it turned out to be quite difficult and time consuming, with lots of wrong turns into blind alleys. So if you’re thinking about setting up something similar, here’s what worked for me.
This setup only really has two pieces:
A static blog generator—this takes files that you write (typically in Markdown) and converts them into a set of HTML pages, including a main page, individual post pages, archives, etc.
But first a little bit on how I arrived at this point.
Some Right Turns, Some Wrong Turns
There are many static blog generators out there. The most popular seems to be Jekyll, so I decided to have a go at installing that. It uses Ruby. Macs come with Ruby, so it should be easy. It went OK, but eventually I reached the point where I was required to upgrade Xcode. Xcode is a hefty download, and I didn’t want to wait, so I started looking at alternatives.
Pelican seems to offer similar functionality to Jekyll, but uses Python instead of Ruby. And Python is also pre-installed on OS X, so why not give it a shot? So I installed Pelican and the things that it requires: pip, virtualenv, and virtualenvwrapper. (Ignore the fact that the pip docs say you can get pip by installing virtualenv—the easiest way is to install pip and then use it to install virtualenv.) Pip also requires another package called distribute, so install that too. And if you want to write in Markdown, you’ll need to install the Markdown module, as described in the Pelican docs.
So now that I’ve got all these installed, it should “just work”, right? You wish. To get Pelican to generate the HTML, you need to run the make command with the makefile that comes with Pelican. But to get make (if you don’t already have it), you need to install the latest version of Xcode. (Déjà-vu much?)
So, much later that day, I have the latest Xcode, and have installed the optional (but required here) command-line tools. Now it works, right? Well, almost. Now I get an “unknown locale” error. Say what now? A little more Googling reveals that I need to set the LC_CTYPE environment variable in my .bashrc file to something like en_US.UTF-8. (An aside: I tried all this with tcsh, which I like more than bash, but ran into even more problems, so I switched back to bash.)
Anyway, now, finally, it works. On to the next piece of the puzzle—syncing the files to S3.
There were a couple of things that I tried that did not work for me. The first was trying to mount my S3 bucket as a remote drive using MacFusion. I thought I could mount the bucket right inside a folder in my Dropbox. But it didn’t really work.
The second was trying to upload using SFTP via an FTP-to-S3 gateway (like Cloud Gates). The gateway part works great (and I use it regularly for other stuff). And Pelican has an FTP make target that you can modify to use SFTP. But again, it didn’t really work.
s3cmd, on the other hand, works great. At least, once I figured out that I needed to install the latest version from Github instead of the one on the download page. s3cmd has a sync command that lets you sync a local directory with one in your S3 bucket.
Automating It All
The only thing left to do was to automate it so that as soon as I add or change a file in Pelican’s content directory, it will automatically regenerate the HTML and sync the output directory with S3.
On OS X, launchd is the thing to use. But manually creating the necessary plist files is a bit of a pain. Thankfully, there are tools that can make it easier. One of these is Lingon. I used it to add two items:
One to start Pelican’s make regenerate, which, once started, detects any changes in files in the content directory and updates the HTML
One to run s3cmd sync whenever the index.html file in the output directory changes
This is what they look like in Lingon:
I couldn’t get these to work by typing the commands directly into Lingon—I had to wrap each one in a shell script. This is what they look like. (Of course, you’ll have to change the directory paths and the S3 bucket name.)
To run make regenerate:
Don’t forget to chmod +x these so they can be executed.
Some Other Gotchas
When you’re writing posts, you must give them a title and a date, like this:
Title: My Awesome Post
If you don’t, Pelican won’t process them. You can also add a status of “draft”:
Pelican will put the generated draft post in a folder called drafts. The post will not appear on your blog until you remove this line.
This was a total pain in the ass to set up. But the result is so worth it. When I hit save in Textmate, and twenty or so seconds later, the post appears on my blog, it feels like magic. And because the files are in Dropbox, I can do the same in iA Writer on my iPhone or iPad (or move from one device to the other if the kids are playing Subway Surf on the iPad).
OK, well, not really. I’m actually splitting this blog up into two blogs. Stuff related to UX (and especially HTML prototyping) will be posted on the Livetyping blog, while everything else will be posted here.
Right now, the only thing on the Livetyping blog is my recent post about front-end frameworks, which I copied across from here. In the coming days, I’ll be copying other relevant posts over too, so they’re in the “right” place.
So if you follow me for the UX stuff, you should add this RSS feed to your feed reader.