For Further Learning… Web Development Style

I sent this list out to yesterday’s RailsBridge students as next steps if the introductory class lit a fire and they want to learn more. And then I realized it’s a pretty good list, so I’ll share it here too!

Local Savannah Things

For Further Learning

Yesterday’s class was great. Lots of teachers in the room and lots of people who had no idea that web development was accessible to “normal” people. It was tons of fun and a great way to shake off a pretty terrible week.

Interest and Concern

I’m still processing what happened last night and how I got it so very very wrong (it’s really no consolation that almost everyone else also got it wrong). I was looking for something to cheer me up this morning, and I found this quote from FDR (emphasis mine).

But here is the challenge to our democracy: In this nation I see tens of millions of its citizens – a substantial part of its whole population – who at this very moment are denied the greater part of what the very lowest standards of today call the necessities of life… I see one-third of a nation ill-housed, ill-clad, ill-nourished. But, it is not in despair that I paint you that picture. I paint it for you in hope – because the nation, seeing and understanding the injustice in it, propose to paint it out. We are determined to make every American citizen the subject of his country’s interest and concern; and we will never regard any faithful law-abiding group within our borders as superfluous. The test of our progress is not whether we add more to the abundance of those who have much; it is whether we provide enough for those who have too little. Franklin Delanor Roosevelt

I don’t know how to fix any of this or how to help, but I think it starts with conversations: in person and across divides. If we can at least show “interest and concern” for each other in our communities, we can make some progress.

Running Unopposed

Looking at my sample ballot for November, and I’m depressed at how many people are running unopposed. Out of 14 races, 8 incumbents are running without competition. They don’t have to debate. They don’t have to defend their records. That’s now how democracy is supposed to work.

We need to figure out how to get more people involved at the local and state level so people can get the experience to effectively serve at the national level. I’ve done some research and it’s economically impossible for most people to run for local or state office, or serve in even “part time” elected positions because of the time requirements and lack of pay. That means that only those who can afford to serve get the opportunity, which then means our government doesn’t represent all of us.

This is how we get ineffective, unrepresentative, unstatesmanlike, and uncompromising behavior from our elected officials – we don’t hold them to account. We don’t run against them. We don’t do anything but complain on social media or claim a “rigged” system, when we don’t even involve ourselves in it beyond cheering on our favorite team.

How do we “fix” this? We all need to look at how we’re participating in government at all levels, and pay more attention. We need to encourage qualified people to run. We need to make sure that our elected officials know we’re paying attention. We need to respectfully (and with actual facts) call them to account when they’re wrong. We need to state our cases for the issues using persuasive language, and not threats of violence or intimidation.

We get the system we let develop. If you don’t pay attention, it will be built and run by the people that are. Want something else? You gotta work for it. You have to do more than complain. You have to build a coalition of people who agree with you and provide actual solutions.

Voting is literally the least we can do to change things. It’s time we all took a long hard look at how we got here, how we’ve behaved this election, and what we’re going to do about it.

Never Give In* (Conditions Apply)

“…never give in, never give in, never, never, never, never – in nothing, great or small, large or petty — never give in except to convictions of honour and good sense. Never yield to force; never yield to the apparently overwhelming might of the enemy.”

Never give in, except to convictions of honor and good sense. I love that Winston gave himself a way out. When you’re confronted with superior good sense, then it’s fine to give in. Please, when I’m wrong, let me remember to give in with honor.

That whole speech is worth reading, because it feels like it could be given today, and it rings as true as it did then: “You cannot tell from appearances how things will go. Sometimes imagination makes things out far worse than they are; yet without imagination not much can be done.”

I’ve been thinking a lot about giving up, not from temptation, but in definition. Giving up doesn’t mean not taking care of yourself. It doesn’t mean taking a break to recharge. It doesn’t mean sacrificing yourself on the altar of the cause – because you’re not much use to anyone if you’re dead or burned out.

I’ve realized that in order to be more useful, I need to be healthier, which means maybe not doing as much in the short term and spending more time on me, which feels selfish.

But it’s not. If I’m healthier, I’ll have more energy for the fight. I’ll be able to do more, not less.

So, I might miss some meetings, but it’s because I’m doing these stupid exercises and not eating brownies.

Never give in. Never, never, never, never.

Stop Spreading Hate

When you share ignorant myths about trans people, minorities, share racist, sexist, xenophobic memes, support politicians who advocate (and sometimes pass) legislation to push already-marginalized people out of public life, you’re encouraging people with just slightly less self control than you to hurt other people.

When you support bullies, strongmen, and bigots, you’re continuing the cycle that ends up in people getting hurt and killed.

Stop and think about the people affected by this stuff. They’re actual real human beings with families and friends who will miss them if they’re gone.

I’m tired of losing friends and having friends afraid to go out in public as themselves because some asshole might kill them just for being who they are.

These people are fighting for their rights to be seen as full members of society. You’re fighting for your right to continue to keep them in the closet (which isn’t a right, it’s a privilege, one that we should all be willing to give up so others can enjoy the same rights we do), and to not have your precious beliefs challenged. There is a huge difference.

History is not on your side, nor will it be kind.

Silly Games With Movie Titles

There’s a game going around Facebook where you remove a letter from a movie title to make a new movie and then you have to come up with the plot. I love these games.

Here are my entries (so far). Feel free to add your own:

  • Star Was: the story of a dying star and the planets that mourn its passing
  • I, Root: The first self-aware potato seeks its place in the world
  • Finding Emo: Emo Phillips has gone missing and it’s up to Bobcat Goldthwait and his ragtag gang of 80’s comics to find him and bring him home.
  • An Inconvenient Ruth: You know what you did, Ruth.
  • What About OB?: A hospital planned by men forgets one VERY important department. Shenanigans ensue.
  • The Rave Little Toaster: EDM, ecstasy, and a small kitchen appliance out way past his bedtime.
  • Rainspotting: And you thought looking at trains was boring!
  • Monsters NC: The story of North Carolina’s horrible, no good, very bad governor and all his friends in the state legislature.

Chocolate Covered Strawberry Chess Pie

A close up of the incredible crust on top of the filling of the pie.
A close up of the incredible crust on top of the filling of the pie.

I entered a pie contest. It’s my first baking competition and I may have taken it a little too seriously. I spent many weekend days experimenting with different kinds of chess pie, (because the Chocolate Orange Chess Pie was such a hit at Christmas, and chess pie is delicious!). I tried a Mexican Hot Chocolate Chess Pie, which didn’t work, and then came up with the idea of a Chocolate Covered Strawberry Chess Pie and then spent a month trying to come up with a recipe that works.

This is the final product and the recipe that’s going to the competition tomorrow. It’s a lot of steps, but it’s really not that much work, and the end result is totally worth it!

I’m writing this the day before the contest, so I don’t know if it’s an award-winning pie yet, but it’s darn good, so I’m sharing it with you!

This makes two pies (because I had to make two pies for the contest). They’re so good, who doesn’t want two of them?

Ingredients for Pie Crust

  • 2.5 cups of all-purpose flour
  • 2 tablespoons of sugar
  • 1 teaspoon salt
  • 20 tablespoons of unsalted butter, cut into quarter-inch cubes
  • .25 cups ice water
  • .25 cups vodka, chilled (I keep mine in the freezer)

Ingredients for Strawberry Compote

  • 20 ounces stemmed and halved strawberries
  • 2 tablespoons lemon juice
  • 1 teaspoon honey
  • pinch of salt

Ingredients for Pie Filling

  • 3 cups of sugar
  • .5 cup all-purpose flour
  • 6 tablespoons cornmeal
  • 1 teaspoon salt
  • 2 tablespoons of reserved juice from the strawberry compote
  • 6 eggs
  • 1.5 cups of cold buttermilk

Ingredients for Chocolate Layer

  • 2 cups dark chocolate chips (the better the chocolate, the better the pie)

Pie Crust Directions

  • Process 1.5 cups of flour, sugar and salt together in food processor until combined, about 5 seconds.
  • Scatter butter over top and continue to process until incorporated and mixture begins to form uneven clumps with no remaining floury bits, about 15 seconds
  • Scrape down bowl and redistribute dough evenly around processor blade. Sprinkle remaining flour over the top and pulse until mixture has broken up into pieces and is evenly distributed around bowl, 4-6 pulses.
  • Transfer mixture to large bowl. Sprinkle vodka and water over mixture. Stir and press dough together, using stiff rubber spatula until dough sticks together.
  • Divide dough into 2 even pieces. Turn each piece of dough onto sheet of plastic wrap and flatten each into a 4 inch disk. Wrap each tightly in plastic wrap and refrigerate for at least one hour (this would be a good time to make the compote).
  • Before rolling out, let sit on the counter for 10 minutes to soften.
  • When you place the pie dough in the pie pan and trim, leave half an inch outside of the pie pan, and then fold under, then flute. This will help hold in the pie filling when it expands in the oven and make a really yummy crunchy bit of pie crust!

Strawberry Compote Directions

  • Add all ingredients to a large preheated skillet over medium heat.
  • Stir with a wooden spoon every couple of minutes to make sure things aren’t sticking to the bottom.
  • It’s done when you can easily squish the strawberries with the back of a wooden spoon.
  • Before you remove it from the heat, squish all the strawberries so they’re crushed, but don’t obliterate them.
  • Put a wire strainer over a bowl, put the compote in the strainer and drain for at least 30 minutes. You should stir the strawberries in the strainer a couple of times to make sure you get as much liquid out as possible.

Chess Pie Filling Directions

  • Put all the dry ingredients in a bowl (including the sugar) and whisk together to combine.
  • Add all the wet ingredients and whisk until smooth (for me, that’s medium on my mixer with the whisk attachment for about a minute).

Chocolate Directions

  • Put chocolate into a microwave-safe bowl
  • Put bowl in the microwave and microwave in 30 second increments, taking the bowl out of the microwave each time and stirring.
  • Once you can stir the chocolate without leaving chunks, it’s done. If it’s close to done, only microwave it for 10 seconds at a time so you don’t scorch it.

Final Assembly

  • After the crust is in the pan, pour half of the chocolate in the bottom of the pie shell.
  • On top of that, spread half the compote on top of the chocolate.
  • Now, pour half the pie filling on top of that. You want to leave at least a quarter-inch between the top of the filling and the top of the crust as the filling expands while cooking.

Baking Instructions

  • Put pie pan on a cookie sheet (they overflow sometimes) and bake on the top rack for 20 minutes.
  • After 20 minutes, move to the middle rack and bake for 20 more minutes.
  • You may need to add 5-15 minutes to the baking time depending on your oven. The pie is done when you can give it a gentle shake and you only get the tiniest of wobbles in the filling in the very center of the pie.
  • When it’s to that state, take it out and cool on a wire rack for 2 hours before refrigerating.


  • Pie crust recipe inspired by Cook’s Illustrated’s The Science of Good Cooking “foolproof double crust pie dough” recipe (I replaced the shortening with more butter).
  • Chess pie filling recipe was based on Callie Spear’s Chess Pie Recipe in Munchies

And here’s a picture of one of the ones going to the contest tomorrow:

A finished chocolate covered strawberry chess pie.
A finished chocolate covered strawberry chess pie.

Switching Your Primary Google Apps Domain In Not Too Many Steps

My face when we decided we needed to change our primary Google Apps domain.

It happens. You rebrand (like we did at Planted last year) and need to change your email addresses. You use Google Apps because you need video conferencing that kind of works, document sharing and email and… whatever else they do. You figure, hey, it’s Google, how hard can this be? And then you google for how to do it and it turns out it’s a poorly documented nightmare, which you’d think it wouldn’t be because it’s Google and they’re supposed to make hard things easy.

You probably took the easy way out last time and just created an alias domain. Eventually, though, you get tired of people asking about the old domain on calendar invites and dealing with aliases in all your email clients, and you just decide it’s time. Actually, having an alias already set up makes the whole process a lot easier. If you haven’t done that, that’s alright, it just means you can skip the “remove the existing domain alias” step!

It turns out that it’s not actually that bad as long as you do things in the right order. I’m going to share that order with you so I don’t have to remember it later.

Before you make the switch, I’d make sure all of your users who use 2 factor auth have added their phones as a backup because they’ll need to delete and re-add their accounts to the authenticator app, which took me by surprise and don’t remember from Google’s documentation!

I went through several iterations of this list and this is the one I came up with that resulted in the least amount of time where email addresses didn’t exist and the fewest number of steps! Without anymore prevaricating from me, here are the steps:

  1. Remove your existing domain alias. This is when email will stop going to
  2. Add your new domain as a “real” domain in Google Apps. Go through and DNS setup or verification needed, but if you already had it as an alias, you should already have all of that setup.
  3. Rename all of your users on the old domain to the new domain. This is where starts working again. The benefit of doing it this way instead of just switching primary domains is that it automatically creates aliases for all your users on the old domain, which saves you as many steps as you have users. You should rename yourself last as it will kick you out and make you log back in, which was scary when it happened to me, but not the end of the world.
  4. Rename all of your groups (aliases, y’all) on the old domain to the new domain.
  5. This is the stupid part. In order to change your primary domain, you have to use the API. I went through a bunch of the official clients and had no luck, but then I found the API Test Page and that worked fine.
  6. On the API Test Page:
    • Toggle the “Authorize requests using OAuth 2.0” thing, which will then pop up a window. Make sure you log in with your work domain.
    • For “customerKey”, put in my\_customer
    • In “Request Body”, the field name is customerDomain and the value is your new domain!
    • Now click outside the request body box, and then click Execute.
    • You should get a 200 response.

And now you’re done!

Everything seems to be fine. The only thing that’s still a little weird is gChat, but all of our old Hangout URLs still work and we haven’t noticed any issues with Docs or anything else.

Good luck in your domain switching!

Further Reading:

Update: I don’t know anything else than what I’ve written. If it doesn’t work, I probably can’t help you. If you have a business account, Google’s support is actually really good. Call them. Really.

Letters to My Congressman

My local congressman, Buddy Carter, sends out a weekly newsletter and this week’s was a doozy. I don’t normally write to him, because I’m not sure it does any good, but I had to in this case.

Here’s what I wrote. Feel free to use it and write to your representatives.

In your latest newsletter you say the following: “I believe committing this horrific act removes all civil liberties and they should be investigated in whatever way is necessary. This is now an issue of national security and it is ridiculous that Apple is not participating in the investigation of known murderers and terrorists.”

This paragraph shows an amazing lack of understanding of the Constitution and our fundamental civil rights, and a failure to grasp the most basic facts of not just what the FBI is asking Apple to do, but the FBI’s own actions that led to where we are right now.

I’ll leave the constitutional questions to someone else, but the technical ones are simple:

  1. Creating a backdoor, ANY backdoor, for the FBI means that Apple will have to give that backdoor to any government in any country they do business in. Submitting to this request of our government means that they have to give that back door to repressive regimes in China, the middle east, etc.
  2. Creating a back door, ANY back door, in encryption or security means that back door can be exploited by any one – good guys, bad guys, terrorists, etc.
  3. The FBI wouldn’t be in this situation if they hadn’t asked local law enforcement to change the suspects’ Apple ID password. If they’d left it as is, Apple could have gotten into their account and given the FBI whatever they wanted – as they have done in many many cases.

This isn’t a simple case, but just demanding that Apple do what the FBI asks denies the complexity of the issues and weakens security for everyone.

We need strong encryption, unfettered by ill-informed and ill-advised government demands, for ALL of us to be safer. Any weakness at all can be exploited by the bad guys just as easily as the good – and like people are so fond of using the 2nd amendment as a “check against unchecked tyranny” – strong encryption is an even better check against that tyranny, and not just in the US.

I ask that the government get smarter, that our representatives gets smarter, about thinking about how to perform their duties and catching criminals than asking the innovative companies that drive our economy to get dumber.

Thank you for your time,

Kevin Lawver

The Simplest Recipe Ever: Sriracha Baked Potatoes

I love Sriracha. I love playing with it because it does really interesting things when it’s cooked. It’s complex and simple at the same time. Unlike a lot of hot sauces, it doesn’t just taste like vinegar and heat – there’s sweetness, smoke and a great chili flavor underneath the (considerable) heat. When you cook it, the heat mellows and the other flavors come out.

It’s the first day back to work after the holidays (I work from home) and the fridge is a little empty and the cupboard a little bare, and everyone else is still off from school, so they’re out shopping and having fun while I’m here in my pajama pants cranking out code.

I decided it was a good day for baked potatoes – but those are boring – and that’s where today’s recipe came from: boredom, scarcity and pajama pants.


  • Russet potatoes (these were pretty small, and I would have preferred Yukon Gold, but this is what I had)
  • Sriracha
  • Whatever you normally put on a baked potato. For me, that’s:
    • Butter
    • Sour cream
    • Salt
    • Pepper
    • and today only, shredded cheddar cheese and some more Sriracha


  1. Preheat the oven to 375
  2. Wash the potatoes
  3. Poke holes in them with a fork
  4. Squirt a quarter-sized dollop of Sriracha on each potato and rub it all over the potato with your hands.
  5. Put the potatoes in the oven.
  6. Now wash your hands!! You don’t want to get any of that Sriracha in your eyes. It sucks.
  7. Check the potatoes after about 45 minutes. Stick ’em with a fork. If the fork goes in and comes out easily, they’re done.
  8. Take the taters out of the oven, split them in two and adorn them however you see fit. Maybe even with some more Sriracha.

Now eat them! You should notice the skin is better than usual, a little crisper, a little richer in flavor, like the potato that all other potatoes look up to as a surrogate father figure.

This was a lot of words for such a simple recipe.