Archive for July 2010

Socially Geeky

July 28, 2010

I’m pretty confident that any software developer is by nature a geek. If you start writing code without an interest in making computers talk to each other and at least a little passion for logic (and yes, math), then you probably are getting into the wrong profession. So we’re geeks, and that’s pretty damn niffty. Geeks however, are not all about algorithms and code. Most geeks aren’t programmers, but have a wide variety of passions and activities. Today I’m going to talk about some of the fun stuff. Those things that many geeks enjoy, and how they enjoy them together.

This last weekend I was fortunate enough to go to the San Diego Comic Con for a day and a half. It was my first time at this con, though I had heard a lot about it for several years. While I only was able to experience it for a short time, it did get me thinking again about geek culture and geeky society. Yes, we have a culture, and it’s pretty unique compared to the vanilla life that many non-geeks experience. Also, for anyone who’s silly enough to think that to be a geek (or even a nerd) you need to be anti-social, well that’s such a false stereotype that you need to get yourself to a gaming convention to sort yourself out.

A rather blatently stolen image. This time of Green Lantern vs Superman (or a variation thereof).

Geek society is full of memes, in-jokes, intellectual humor, imagination, passion, and storm troopers. It’s a society based in comic books, video games, the internet, sci-fi and fantasy novels, television, movies, steampunk, anime/cartoons, toys, pirates, ninjas, and awesomeness. It’s a community based on a shared understanding, interest, and love for those things in life that non-geeks would think of as weird or immature because they know not the value of taking down a raid boss or pondering the relative power levels between superman and the green lantern.

It has been said by a lot of people that humans are naturally social creatures. I think this is extremely prevalent in geek society. One can wear a t-shirt featuring stick figures using sudo on each other to acquire sandwiches, and act as a beacon to other geeks for starting up conversation about web comics, or science, or math. As many geeks feel ostracized by regular society, we tend to drift towards and bond more quickly to others of our kind, forming larger collectives of super geeks. Like unstable atom configurations form molecules. Or Voltron for that matter.

My personal realm of geekery ranges from comics to video games. I lean more towards video games due to some of the social aspects of them. As a youngling, I developed in a fairly rural area where contact with even other kids was fairly infrequent. Games and the internet helped to bridge that gap in my social development. In college, games were the focal point of my social interactions (I went as far as being the president of the Gaming Club). I realize that even now that I have “real” friends and a wonderful fiancé, that games are still an important aspect of my social life. Games can keep long distance relationships with friends connected, or forge new or stronger relationships with people.

StarCraft 2 has finally been released by Blizzard. My hope is that through this game, I can reconnect with lost friends and expand into new ones.

Recently, Blizzard released StarCraft II, a sequel to a game I played quite a bit with many of my friends in college. While the single-player game is quite fun, it’s the multiplayer opportunities that the game provides that draws a lot of the people that I know. It is my hope that, with the release of this game, I can once again connect with friends of mine on the other side of the country, along with meeting new friends in the conquest to eliminate the zerg scourge. And it is that, the unified goal of terrible vengeance upon our enemies; the subsequent battle that pits our strength and skill against those we would conquest against; the ultimate defeat because we really don’t play this game enough. Those moments, like the sharing of customized D&D character and world concepts, are what glue us together as a society.

Of which, if anyone is up for playing (usually after 6:30pst), give me a buzz and we can trade Real IDs™.

Mac ‘n Cheese

July 16, 2010

I’m a programmer, and I love to code. However I also love to cook. I did not have a good topic to talk about as far as development goes, but I still wanted to get a blog post out there. So today, I’m going to share the recipe and method that I use to make mac ‘n cheese. I’m always tweaking it, but here’s the basic idea.

Mac And Cheese – The Tasty

Things you will probably want:

1/4 cup flour
1/4 cup butter (half a stick)
1-2 cloves crushed/minced garlic
1/2 diced onion
1 tsp or so chopped cilantro (I use the frozen cubes from Trader Joe’s)
dash of salt
dash of pepper
2 cups milk (up to 1 cup can be replaced with cream for a tastier cheese sauce)
8 oz. cheese (I use random combinations of cheddar, gruyere, gouda… other hard cheeses)
8 oz of large elbow macaroni (or whatever noodle you prefer)
optionally: crumbled cooked bacon, diced cooked sausage, cooked peppers, diced chicken, or other things you like in/on mac n’ cheese.

Doubling it is pretty easy. In general I consider 4 oz of cheese to equal about a cup. There should be equal parts milk, cheese, and macaroni. Flour and butter should each be around 1/8th of the milk/cheese/macaroni. You can adjust the quantities though depending on how you like your roux.

Ok, now on to the steps.

You can boil the pasta as per whatever instructions you have with it before or during creating the sauce, just make sure it’s ready when the sauce is ready.

For the sauce, use some sort of sauce pan and melt the butter under medium heat. Add the flour and stir it with a rubber spatula. What we’re creating in the first step if you’ve never done it before is called a roux. Flour or other starches can be used as a thickener for sauces, however it often has the problem of the flour clumping together into floury lumps that aren’t that appealing if you just add flour to a hot liquid. So instead we mix it with a fat (the butter) to dissolve it first before adding the liquid. Also, uncooked flour will give a starchy flavor that we’re not really looking for, so we’re going to cook the roux.

Blonde Roux

A blonde roux as captured by someone on Flickr. This is about the color we're going for.

It’s going to bubble a lot, and you’re going to want to stir it a lot as well. The rubber spatula is to scrape the bottom of the pan constantly to make sure no part stays on the bottom for too long and burns the roux. If you start to see black specs in it, you’ve burned it and have to start over. I’ve never had that happen, but I’ve read it can do so if you don’t pay enough attention. Also if it starts to smoke, you’ve hit the smoking point of your butter and should lower the heat a bit. Once you have a blond roux, the floury taste should be removed.

An interesting note on roux is that the more that you cook it, the more flavor that the roux will impart on the final dish. However, it also means that the roux will act less as a thickening agent. If you want to get more of the flavor from the roux (by making it darker), but don’t want to lose the thickness of a creamy cheese sauce, increase the quantities of the flour and butter.

After cooking the roux for about 10-15 minutes and having it change color to a light yellow, add in the diced onion. You’ll want to cook the onion in the roux for another 5 minutes or so, until it has turned transulcentish.

Add the garlic and cilantro and cook for a few more minutes. You can also add some salt and pepper at this time if you like that sort of thing.

Next, add the 2 cups milk/cream hybrid. For better results, heat the milk first in either a pot or microwave. Having a hot liquid added to a hot roux will prevent the roux from clumping as it suddenly cools. Even if you use cold milk though, you can eventually break it down again as it heats back up, so don’t worry too much.

Once you add the milk/cream you might want to use a wire wisk to really disperse the roux in the liquid. Stir it for a few minutes, then leave it on medium heat, stirring occasionally until it starts to bubble (nearly boiling).

Once it hits the boiling point the roux’s effect will become noticeable and the sauce will thicken. You can cook it for another minute or so if you like to make sure it’s at its thickest state (don’t leave it too long though).

Lower the heat to low or medium low and start adding the cheese. The cheese should be grated to increase surface area and promote melting. If you add it in slices or cubes, you’ll have to stir like a crazy person and keep it on the heat for way too long to get the stuff to melt. Add the cheese in small batches at a time and let it completely melt between additions.

Once all of the cheese is melted, you can turn the heat off. Place the pasta in a large mixing bowl and add the cheese to it, mixing it together. You can add any of your optional meat/veggie items at this time.

Pour the mixture into one or more lightly greased casserole, or other oven safe dishes. Personally, I often use a 10″ cast iron skillet, but I also use a ceramic dish as well. You can sprinkle more cheese and/or bacon/sausage/whatever on top. Place it in a 375˚ oven for a half hour.

Eat… or whatever else it is you want to do with mac n’ cheese.

Tree

I originally had a picture of a finished Mac 'N Cheese that I cooked in my cast iron, but the picture isn't on this computer. Instead, here's a photo of a sequoia from Yosemite national park.

Interesting Work

July 8, 2010

One of my largest problems at my job is finding interesting work or making my work interesting. Without having the physical exertion associated with an outdoors job, having something that keeps you actively engaged not only increases productivity, but also personal enjoyment and quality of life. Basically, if you don’t find your work interesting, you’re not going to want to do it.

My Cat Mischief

My cat sometimes attacks the chair in her more crazy moments. She is always interesting, but I don't work with her.

Finding interesting work, or ways to make your work interesting, is not a very easy thing to do. But I find that sometimes those things that are boring are excellent opportunities to find ways to automate and therefor make a computer do instead. This serves two main purposes. The first is that you’re no longer doing boring work, a computer is. The second is that you just created some interesting work in creating a way to automate the boring stuff. Typically the stuff that’s boring is something that has no uniqueness to it and you have to repeat over and over again, which is the perfect target for automation anyway.

For example, testing is boring. Going through and finding all of the areas where your program can break and trying to make it happen can be a drag, especially when you have to do it for every release. However, creating automated tests is more interesting. This is especially true if you add extra flair such as making lava lamps turn on when a build breaks, or integrating it with an sms service that sends you texts every 5 minutes that the build is broken, causing you to drive back to work at 11pm to fix something wrong with the continuous integration system itself since the ops people decided to shut down one of your auxiliary systems. Ok, that’s less fun.

Having a passion for what you do and having your work be interesting is critical to your success in life. Hating what you do for a living and finding your work boring will just cause you to be bad at your job and unhappy in general. If you’re unable to discover a way to make your work more interesting for you, maybe you should consider changing career paths.

I don’t have any great suggestions for making any boring work fun. I know from experience that I personally enjoy taking any project and attempting to find the most elegant way to solve it with the best performance possible. Making sure that everything has documentation and that the unit tests cover over 90% of the code gives a wonderful sense of satisfaction. But any sort of goal that yields a high rate of satisfaction should be targeted as something to strive for in your day to day working life.