How to Heat Your Livingroom with Computers

It’s time I explained what all this cluster computer stuff is about. It’s kind of an insane project, but bare with me. Some of you may have played the Wikipedia game “Seven Steps to Jesus.” Basically, it’s a special case of the Wikipedia game Wikirace, where you try to get from one article to another as quickly as possible. In Seven Steps to Jesus, you try to get to the Wikipedia article about Jesus in seven clicks or less. Why Jesus? Why seven? Who knows, who cares. But the point is, that it’s fun for about ten minutes.

This ridiculous game wandered into my mind the other day, and I started thinking, “I wonder how you could create a computer program that would play Seven Steps to Jesus…” The answer depends. If you give the program access to the entire Wikipedia database, then the task is trivial. It’s very simple and quite fast to spit out the minimum number of steps from one article to another. But what if you don’t give the program access to the entire Wikipedia database? What if it has to go to an article, and choose which link to click just like humans do: with “intuition?”*

As you might have guessed, the task becomes more complicated. Now we’re talking about machine learning (FUN!) I started to think about how you could train an AI to assign a “relatedness” value to every given article on Wikipedia by giving it access to the Wikipedia database, and having it traverse the links from one article to another. If you’ve taken a class on AI, you know that eventually, this relatedness value will converge to the shortest path. Basically, this program will do nothing useful… except heat my living room.

Except! Except that I’m going to train an RL agent in parallel. That’s the only thing that might be novel about this (other than the fact that I’m introducing the “Seven Steps to Jesus” task to the AI world.) Ordinarily, you would want the agent to learn sequentially, because if the links change, you want the agent to learn with the changes. But in this case, I really don’t give a damn about sequential updates. Also, this task is stationary (the distance between any two articles in my downloaded Wikipedia database will never change,) so updating sequentially doesn’t matter all that much.

So what you should get from this, is that this project is a HUGE waste of time. But it’s fun, and I’m learning about graph databases, and RMI, and I got to build and run a computing cluster. Maybe there’s a real task for which this approach is suited. I’m not sure though. Usually in RL, you have to run a trial many times in order to test an approach, so there’s really no point in distributing the actual processing. In other words, if you’re going to run 100 trials of your schmancy new algorithm, you might as well just run one trial on five different machines until you finish, rather than splitting up the computation (which adds overhead,) into five different parts.

The point is, I’m having fun. Leave me alone.

Discipline Week Update: Today was day four of Discipline Week, and so far so good. I’ve been trying to avoid napping, because I want to really embrace this 7am to 11pm schedule I’ve got going, but today I really needed a nap. I ended up sleeping for maybe an hour and a half, which is really too much, but we’ll see how things go tomorrow. I’ll write a more detailed post tomorrow about how Discipline Week is going, but I thought I’d let you know that it’s still a thing, and it’s going well!

*Yes, there are algorithms that do this quickly, but you’re still missing the point: the point is, this will be fun. Fun, I tell you, FUN!

Advertisements

My Livingroom Is A Supercomputer

As a Computer Science Student, I like the idea of being able to run my code on the biggest, baddest computers there are. Unfortunately, most of my code doesn’t need more than my laptop. In fact, many of the programs I write would run just about as well on my phone, or an Apple II. However, sometimes I do write programs that require gobs of raw computing power. Last night, I conceived an idea for just such a program. Before I even started programming, I realized that my only hope for finishing computation on the large dataset I wanted to process (all the links on Wikipedia, many times) was to spread the computation across multiple computers. I needed a cluster. So I built one.

A cluster (short for computing cluster) for those who don’t know, is basically a bunch of computers connected via a network. You could think of the Internet as a computing cluster, but the important difference between the Internet and a useful computing cluster is that a useful cluster works toward a unified goal. As you might have guessed, part of the beauty of a cluster is that the computers involved don’t have to be all that powerful by themselves to be useful. Because my family doesn’t usually get rid of computers (precisely for occasions such as this,) we had three old laptops lying around, all of which I confiscated for my cluster. Add my laptop to that, and I have a cluster of six cores. It’s not a whole lot, but it may just be enough. I also have an old switch (what most people would call a “router”) that I saved from the trash during high school, which I’m using to connect the computers together. After installing Debian Linux, and puppet to manage the configurations on all the machines, I’m almost ready to run cluster computations!

In order to run a cluster, you need a server to distribute the data you want to process, and clients to actually do the processing. In this case, I’m talking about the server and client software, not machines. So I have to write a series of programs that will split up my data and process it on each of the cluster computers. It’s simple enough when you use Java’s RMI (Remote Method Invocation.) The server maintains a collection of the processed data, which is updated whenever the clients finish processing. Once the client has finished its data, it sends back its results and requests more data.

This strategy has a lot of advantages, including the fact that I don’t have to store the entire Wikipedia database on more than one machine. Since the data is sent in chunks, I can store it all on one of the two computers in my cluster that can handle that much data. Also, the clients can work asynchronously. Since the computers don’t have to wait for each other before getting new data to work on, my laptop can crunch along at 2.53GHz per core, processing as much data as it wants, while the poor little AMD Athlon slogs through whatever data it can handle.

My livingroom table, which currently houses four computers and a switch. Delightful.

My cluster is called “End of the World,” or EotW for short. I was trying to think of a theme for the hostnames of the computers in the network, and I settled on character’s from Haruki Murakami’s novels. Since there’s a “place” in his book Hard Boiled Wonderland and the End of the World called “End of the World,” I figured that would be fitting. The nodes are named toru, watanabe, and sumire.

How much did all this cost? $20 for a power strip. Even if I didn’t have all the laptops, I could have waited until the morning, gone to the recycling center, and picked up a bunch of computers and a switch for free. That’s what I love about cluster computing: with just a little recycled hardware, you can create a pretty fast computer. It’s true, my tiny computing cluster barely rivals a new, mid-line desktop computer with an Intel Xeon processor, but it’s still faster than just my laptop. And hopefully, with all those computers working full tilt for a few days, I’ll be able to crunch through my data*.

 

*As I said before, I’ll discuss what I’m trying to do at another time. Trying to explain it here would make this post too long, and I want some tangible results before I start talking about it.

Enough With the God Bashing

It’s time we had a talk about religion, Internet. It seems that there are some misguided people who, flying under the flag of atheism, have taken it upon themselves to fight theists as though they were a plague. I know it’s a touchy subject, but I think it’s time people realized that attacking people for their religious beliefs is no more justified than attacking people for their sexuality or skin color.

To be clear, the only side I’m going to take in this blog post is not being a dick. My own religious beliefs are not in question here, and in fact, I’m not even sure what my own religious beliefs are. So before you yell at me for being a theist, or for being an atheist, let’s get this straight: I don’t care what you believe, as long as you don’t persecute or harass other people for their beliefs.

Argument number one is the easier to digest of the two. We’re small beings, living on a small planet, on the edge of a small galaxy, somewhere in a huge freaking universe. This makes people feel small and lonely. If some people are comforted by the idea that there is a greater purpose to all this emptiness, then who are you to screw with that? I agree than some religious people are zealots and fanatics who support horrible things, but those people do not represent all religious people. By classifying ALL religious people with the likes of the Westboro Baptist Church, you might as well make similar generalizations about black people or gay people, and we all know how that ends: bigotry.

Speaking of bigotry, a bigot is defined, in the Oxford English Dictionary, as “A person who is prejudiced in their views and intolerant of the opinions of others.” So yes, if you attack people for believing in a God or Gods, then you are a bigot. Welcome to the club. Other members include the Nazis, the aforementioned Westboro Baptist Church, the old American South, opponents of Gay Marriage, and many other perpetrators of nastiness throughout history and the present day. Attacking people for believing in God doesn’t make you a hero, it turns you into exactly the sort of person you hate: a bigot.

Finally, let’s say that the atheists are right. There is no afterlife, and we’re all just going to die and rot and eventually be vaporized when the sun burns out. Congratulations, atheists, you were righ – OH THAT’S RIGHT YOU’RE DEAD AND GONE SO NO ONE CARES. Ultimately, it doesn’t matter who’s right. (To be fair, I’m also unaware of any religions that will exclude all their members from the afterlife because of the existence of non-believers.)

The spark that ignited this rather frustrated blog post, was a Jezebel article whose message is essentially, “I’m ok with theists who stay out of my business. But wow, look at all these idiots who believe in God!” Anyone who has spent time on Reddit, and who has encountered r/atheism, knows exactly how much theism-bashing goes on online these days, and it’s really disheartening. You’re not helping, people, you’re just proving that people can be bigoted for reasons other than the fact that they are religious.

I Made Spammer Chili

Part of my job as a sysadmin is to maintain the wiki for the department for which I work. Before I started moderating the wiki, it was configured to allow people to create their own user accounts and post whatever they liked. As you may have guessed, this led to a lot of poorly worded pages on topics such as penis enlargement, miracle diet cures, and cheap life insurance.

One such page contained a recipe for chili. I’m not sure what the SEO (Search Engine Optimization – basically, make Google like you) tactic was here, but I thought it was pretty awesome. If someone’s going to spam your wiki, they might as well leave delicious recipes while they do it. They threw in a link at the bottom to the effect of “Oh, and by the way, check out my webpage about cheap life insurance,” so I suppose their ploy was to increase their page rank and try to make it look authentic. In future, they should probably not target websites owned by university physiology departments to post their chili recipes.

On the assumption that creating something toxic by mixing innocuous kitchen ingredients is very unlikely, I decided to actually make the chili that I found on the wiki. I didn’t have any other dinner plans… why not? What follows is the original text, unmodified except for my annotations, which are in italics.

Note: If you’re the spammer who wrote this on our wiki, please feel free to let me know. I do believe you relinquished your rights to this article when you posted it on our site without permission, but I’ll give you credit if you want it. If you are not a spammer, and this is your original recipe, please contact me and we’ll figure it out.

*     *     *

Great Chili

Cold wintry weather makes us extended for comfort foods and chili is one of the most well-liked. A lot of people settle for canned or deli chili since they think they do not have time to make it ‘from scratch.’ Nonetheless, prepared chili just does not have exactly the same amount of satisfaction as the homemade variety.

I have to say, I have been feeling rather “extended” for comfort foods lately.

Here can be a fast and simple recipe that can satisfy your family’s craving for warmth with out taking up hours of one’s time. It can be ready totally inside a huge skillet in about 45 minutes or use a crock pot to let it simmer until dinner time for much more flavor.

Fantastic. Because my family is craving warmth, but I don’t want to take up hours of one’s time. Also, it’s so frustrating when other recipes aren’t totally inside the skillet; when they’re only two thirds inside the skillet it really drives me crazy.

6 Servings

Ingredients:

  • 1 pound of lean ground beef or ground turkey
  • 1 medium onion
  • 1 tablespoon chili powder
  • 3/4 teaspoon minced garlic – Really? Come on, now: you won’t even TASTE the garlic. Three cloves of it. Also, I panicked a little because I forgot the garlic, so it ended up being less “minced” and more “haphazardly chopped.”
  • 1/8 teaspoon black pepper
  • 1/8 teaspoon cayenne pepper
  • 1/2 teaspoon cumin
  • 1 teaspoon celery salt
  • 1 teaspoon salt (optional)
  • 1/2 cup salsa
  • 1 16 ounce can of kidney or pinto beans in chili sauce (chili beans) – I didn’t use chili beans, I just used regular black beans. Also, I could only find a 19oz can.
  • 1 14 ounce can of diced chili ready tomatoes (or use plain diced tomatoes and enhance salsa to 3/4 cup) – Diced, canned tomatoes. That’s 398ml, for those of us who use metric.

Delicious ingredients.

Peel and chop the onion. Crumble lean ground beef or turkey into a large skillet. Add the chopped onion and cook over medium heat, stirring regularly, till the onion is tender along with the meat is light brown.

Skillet? Forget that: pot. For one thing, there isn’t a snowball’s chance in hell that this thing is going to fit “totally inside” the skillet. This recipe makes a lot of chili. Also, I love it when onions are tender.

Everything cooked in my kitchen gets olive oil and salt. Yes, sometimes even deserts. So I put olive oil in the bottom of the pot before cooking the meat and the onions. Also, you might think that you’d want to cook the onions by themselves first, but you totally don’t, because they’re fine this way. This is also the step where I opened the beer.

Doesn’t look like much yet, but just wait.

Skillet Option:

Pour the cooked mixture into a large colander to drain all liquid. Return the meat and onion mixture for the skillet. Stir in the spices, salsa, chili beans, and tomatoes. Bring to a low boil more than medium heat. Decrease heat to low and simmer for about thirty minutes, stirring occasionally.

Colanders are for the weak; I didn’t drain jack squat. Besides, it’s like mamma always said, “Beef juice is good for you.”

Serve immediately or retailer inside a covered container in the refrigerator until prepared to eat. Reheat on top in the stove in a skillet or sauce pan, stirring often, or use individual serving bowls and put inside a microwave for 1 to two minutes.

It smells delicious. Seriously, it does.

Crock Pot Option:

While the meat and onions are cooking, combine salsa, chili beans, tomatoes and spices in a crock pot. Right after draining the liquid from the meat and onions, add the mixture to the ingredients inside the crock pot. Stir well. Cook on low for 2-3 hours, then decrease heat setting to warm until time to eat. Stir just before serving.

Variations:

Rather of celery salt, add 1/2 cup of chopped celery towards the meat and onion mixture whilst cooking.

Add 1/2 cup chopped red or green bell pepper to the meat and onion mixture even though cooking.

Chili-Mac Variation:

Add 1 cup water and 1/2 cup rotini or penne pasta to cooked meat mixture before draining. Continue cooking over medium heat until pasta is tender. Drain and continue with either the skillet or the crock pot alternative.

Vegetarian Variation:

In a ten inch skillet, saute the onion and spices with 1/2 cup celery, 1/2 cup of bell pepper, and 1/2 cup sliced carrots in 4 tablespoons of olive oil.

Add:

   1/2 cup of vegetable stock
   1 cup of rotini or penne pasta

Bring to a low boil and simmer until pasta is tender, stirring occasionally, Combine cooked ingredients in a large soup pot (or crock pot) with salsa, chili beans, and tomatoes.

Add:

   1 16 oz can of black beans with liquid
   1 can of whole kernel corn with liquid

Stir nicely and simmer more than low heat for about 30 minutes, stirring occasionally (or cook in crock pot on low for 2-3 hours, then lower heat to warm until ready to eat).

Garnishes:

   Shredded Mexican style or Cheddar Cheese
   Finely chopped raw onions
   Sliced Jalapeno Peppers or Banana Pepper Rings
   Corn Chips
   Oyster or Saltine Crackers

Here is also some information about getting Cheap Life Insurance (Link Omitted because I’m not actually a spammer.)

Chili and Glutenberg gluten free beer. Delicious combination.

*     *     *

The verdict? This chili was freaking amazing! I don’t know anything about chili, but whatever this was, it was flavorful, delicious, and really freaking good. I’ll totally make this again, but not any time soon because I have SO many left overs. This made deleting around 100 spam pages totally worth it (which I had to do individually because Mediawiki isn’t down with the whole “making it easy for you to delete posts” thing because that discourages creativity and also spammers).

It did need a bit of salt, but I put salt on everything, because I’m basically just like that alien in Star Trek the Original Series that kills people by sucking all the salt out of their bodies, except I do that with food and not always people.

I haven’t tried the crock pot or vegetarian varieties, but I imagine you can’t go wrong with the base recipe.

Overall, this chili was amazing, and I’m really glad I made it. And I haven’t died yet, although I have been getting this strange urge to help those poor displaced members of African Royalty who really need me to help them save their money. I mean, they’re going to give me a cut out of the goodness of their hearts, and it really is so tragic.

So I ask you, dear sir or madam, to please try this most delicious wonderful recipe of chili. And also to click on the following lnik for to view startling new informations about how you may enlarge your penis all naturally with no extra charge. Click here to lern more.

OMG WTF! Apple Made a Mistake!!

If you haven’t heard, there’s been a lot of buzz about the new iPhone. Apparently it loses signal when you hold it a certain way – something about shorting the two antennae. If you haven’t heard about it, then you either don’t care, or you live under a ROCK because it’s been ALL OVER THE NEWS. Sorry for yelling in print like that, but, quite frankly, if I see another YouTube parody of the iPhone promo video, I think I’m going stroke out and die right here in my office chair.

Congratulations, world: you’ve discovered a flaw in the new iPhone. If you hold it in a very specific way, covering a strip of the edge of the phone that is approximately 1 to 2 millimeters wide, it will lose virtually all signal. Of course, how many iPhone users reported this problem? I haven’t heard of any. In fact, the only people I know of who are still obsessed with the fact are the media outlets that are making money because of the problem – but I digress. The fact is that Apple has egg on it’s face; it made a mistake. BIG. WHOOP. Look around you people; companies make mistakes all the time. My Nokia N95, for example, takes half a minute to load a single text message. That’s a pretty big issue, but someone at Nokia evidently thought that the code didn’t need to be optimized any further. Yeah, it’s slow, but maybe people won’t notice. (Guess again, Nokia.) But this blunder, made by this one company, has been taken to an extreme; if I’m not mistaken, this iPhone scandal has been going on nearly as long, if not longer, than the Toyota brake issues, and PEOPLE DIED BECAUSE OF THOSE!

So why is the media so hung up on the new iPhone? I think we’re just surprised that Apple made a mistake. Over the past few years, Apple has built high end products that just work. They do what you want them to, how you want them to, and they look good while they’re doing it. And if they stop working the way they’re supposed to, then you take them back to the store, speak directly to a human being (rather than the “I can fix your problems without any human interaction” automated operators that are so popular these days,) and they fix or replace the product for you. People like apple because their products are intelligently engineered; because a MacBook Pro with better specifications than most other laptops of the same price gets 6 hours of battery life during normal use, not just sitting idle in an air conditioned lab somewhere, and has a slimmer form than all of them.

I think people just expected the iPhone 4 to be perfect. They’re surprised that Apple actually made a mistake. So which says more about Apple: that the iPhone 4 has a minor, but noticeable flaw, or that the world expected so much from Apple’s latest product that a single mistake has their heads spinning?

Summer and Blogging

Shorts, flip-flops, and kite photography: that's what summer's about.

Summer is here! Summer, for me, means three things: 1) Camp Carolina Trails (the camp for children with diabetes at which I am a counselor,) 2) shorts and flip-flops, and 3) sleeping late and staying up until 4am watching SciFi, building things, Makerbotting things, programming, or writing. Needless to say, I love summer. And this summer will be particularly special for me. First, I have a Makerbot, which means that my projects will have custom designed parts. Second, I’m going to McGill for electrical engineering next semester, which is fantastically exciting and terrifying at the same time. Third, I’m going to post here every Wednesday. Wait. Woah, what?! Yes, that’s right, not only will I be breaking my usual blogging schedule of not posting for months at a time, I will be doing something on a regular basis during my summer vacation. It’s a big thing for me (schedules and I don’t get along,) but I’m going to try it. It starts this Wednesday. Be prepared.

Also, expect to see a few different themes on my blog over the next few days. I’m beginning to tire of this one.

Publicity

It’s an odd experience. You’re talking to someone, telling them about something you’ve done, and they say, “Oh yeah! I read about that on your blog!” The first couple times it happened my response was along the lines of,”Uh… you what?” I try to hide from my readers how excited I get when the graph on my stats page reaches 12 hits in one day, and I try to avoid making remarks about how no one reads my blog (partially because it’s not true and partially because it makes this attempt at creating a voice for myself on the internet sound pathetic,) but I’m starting to think about ways to increase my online publicity. It’s not that I want to be a celebrity, or that I want to gather a fan base, or even that I want my blog to turn into a high-traffic social area. I want to increase my publicity because there is something to be said for people actually hearing what you have to say about something.

Continue reading