A lot of this probably works just fine under Linux, too.
A bunch of the tools require java, which can be downloaded from Apple, and you’ll want to set your environment’s JAVA_HOME variable (in ~/.bash_profile, unless it’s .bash_login or .bashrc).
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
Then you’ll need to log into AWS console, and download your access and secret keys. While you’re there, download the EC2 CLI tools.
I install them into a custom directory. I like /opt, but your mileage may vary. You’ll have to change all the path declarations below, though.
Add the following lines to ~/.bash_profile (as above for Java)
export EC2_HOME= PATH=$PATH:$EC2_HOME/bin export AWS_ACCESS_KEY="" export AWS_SECRET_KEY=""
Next, download and install Amazon’s Elastic Load Balancer CLI Tools, and configure them by adding a couple lines to your ~/.bash_profile.
export AWS_ELB_HOME=/opt/aws/elb PATH=$PATH:$AWS_ELB_HOME/bin
Then download Amazon’s Elastic Beanstalk CLI Tools, which require Ruby 1.8.7 or greater, and Python 2.7 or 3.0 (both of which are pre-installed on Mountain Lion).
You will need to create an AWS Credentials File. I’m not sure what changed, and why these tools don’t use BASH environment variables, but I use ~/.aws_credentials. You’ll also need to do this if you use the RDS CLI tools.
AWSAccessKeyId= AWSSecretKey=
And then you need to create a BASH environment variable pointing to the newly created file. Put this in ~/.bash_profile.
export AWS_CREDENTIAL_FILE=$HOME/.aws_credentials export AWS_EB_HOME=/opt/aws/eb PATH=$PATH:$AWS_EB_HOME/api/bin:$AWS_EB_HOME/eb/linux/python2.7
If you want to use a different default region (instead of us-east), you’ll need to add this line to your BASH profile.
export ELASTICBEANSTALK_URL="https://elasticbeanstalk.us-east-1.amazonaws.com
To install Amazon’s Relational Database Service CLI Tools, you will need to be sure to include the credentials file created above, and the BASH line to point to it. You will then simply need to add a couple more lines to ~/.bash_profile.
export AWS_RDS_HOME=/opt/aws/rds PATH=$PATH:$AWS_RDS_HOME/bin
That’s it. Your AWS environment is set up.
Back to work.
[video]
[video]
Gun Nuts Worry About The Wrong Weapons -
I’m pretty sure that we ought to be using strong encryption for all of our communications. Email. Twitter. Everything. Guns are not going to protect you from an overzealous government. Encryption is a much better weapon.
I’m building a large-scale Content Management System (CMS) for Video, tied to a Content Delivery Network (CDN), and one of the big issues we’ve identified relates to the difficulty of thumbnailing video files which are loaded into our system with missing images.
HTML5 is great, and the good folks at flowplayer.org have built a tidy little video player which enables us to display the video in a <video> element on the page. Flowplayer allows quite a lot of control over the video.
And, the wonderful <canvas> tag allows the developer to extract a thumbnail image, directly from that video.
It would seem that all I have to do is call canvas.getImageData() to get a base64-encoded copy of the image, which I can then post to a server.
And, this works fine.
If the page, and the video are on the same server. I’m told that if the server hosting the image has the proper headers for CORS, then it works, too. Our CDN does not, so I cannot verify.
Anyway, when I try this with a video on my CDN, I get an exception (18) indicating that I have poisoned my DOM, and cannot access the resultant image programatically.
IMHO, this is stupid. Fucking hackers.
So, the solution, is the great folks over at Transloadit.com. Great API for doing this.
Until yesterday, I felt like a bunch of kids from Greeley were doing great things. Particularly, that kids from Greeley Central High School were out in the world, making it a better place.
Michael Shellenberger was the guest on The Colbert Report, talking about energy policy, and the positive ways that government can innovate our way out of global warming.
Harper Reed’s been all over the news for the past few months, after engineering the largest grassroots engagement effort in the history of Democracy.
And, yesterday, Mark Hummels, was shot in a senseless act of gun violence in Phoenix.
It was looking like a good week from GCHS alumni.
Last night, for Jeanie’s birthday, Lori and I whipped up a huge feast. I made Korean-inspired pork ribs, smoked chicken, and collard greens. A couple people asked for recipes, so here they are.
Korean-Inspired Pork Ribs
Mix well, and boil to reduce the liquid by 50-75%. Remove from heat and allow to cool for a bit. Add:
Mix well (I put it back in the food processor).
Cover the ribs with the cooled marinade, and wrap each rack with aluminum foil. Allow the ribs to soak up the flavor for 24 hours, in the refrigerator.
Cook for 7 hours at 225. Enjoy.
Collard Greens
Remove the stems from the greens, wash the leaves well, and blanch the greens for about 2 minutes. Remove the leaves from boiling water, rinse in cool water, and set aside.
Cook the bacon. Remove it from grease and set aside. Discard most of the grease.
Use 3 Tbsp of the bacon grease to saute the onion. Once onion is translucent, add garlic and collards. Saute for a couple minutes. Add chicken broth. Bring to a boil over medium heat. Add a handful of the bacon.
As the liquid reduces, add more water. Keep doing this until you’re ready to eat the greens. Add the remaining bacon about an hour before you’re going to eat. When greens are tender, allow the liquid to reduce until it becomes thick.
I cooked mine for about 5 hours.
Enjoy.
Earlier this month, almost as soon as the Colorado legislative session began, the Denver Post reported that legislators may attempt to repeal the death penalty in Colorado. I hope they do.
I’m half-tempted to launch into a diatribe about morality, and how a single innocent person dying at the state’s hands, and… But, I won’t. I’ll simply say this.
We have a government, allegedly, by the people, for the people, and of the people. I’ll agree that sometimes in our history (maybe today), our government is less by/for/of the people than other times. People are messy, and a lot of the time we do things badly. Mostly, we mean well, and we try.
But, if government is by, for, and of, the people, when government kills someone - however much that person has done to earn it - government does so in our names. Government kills for us. The person killed is killed by us. The person killed is of us.
I understand the rage - anger enough to wish death upon someone. I’ve felt it. You’ve felt it. But, when the chips are down, I won’t kill someone, and, I suspect, neither will you. To allow the state to kill based on that rage is simply rationalization. If government is us, and government kills someone, then we killed someone. I did. You did.
“Why” is just the rationalization. ”Why” helps us sleep at night.
It doesn’t make it right.
So, when, or if, a bill comes before him, I hope that my State Representative, Dave Young, a man I’d like to call my friend, can risk his job to prevent the State of Colorado from ever killing someone in my name - or yours.
Buy A Movie. Tell Hollywood That Direct-to-Consumer Works -
Not to get all high-and-mighty, but this looks like a decent movie, and it’s being made available on iTunes before Theaters, DVDs, etc. I’m buying it, if for no other reason than to signal that I support film production outside the conventional business model.