This will ease your pain.

This will ease your pain.

Thirsty?
Secret project underway. Unity is awesome.

Thirsty?

Secret project underway. Unity is awesome.

Paleo sucks.
I’ve been one day on the so-called Paleolithic Diet for the Crossfit Paleo Challenge. It sucks. 
I will say right now that paleo is just another bullshit fad diet, this time based off anecdotal reasoning around reconstructing what paleolithic man must’ve eaten. But there’s a 30 day lifestyle competition so I’m giving it a go for the sake of competition and kicking myself off of the football-diet-without-football-practice (aka me-eating-a-lot-of-food).
I had my last meal at Taco Bell last night. I don’t know how I’m going to survive without my T-Bell.
I bet people lose weight on paleo because they can’t freaking eat anything. And the things they can eat cost tons of money. Look at the picture above. That was $75—more than I usually spend on groceries in a week!
People freak out because you can still eat bacon with this diet because BACON. But you can do this with any diet. Step 1: Pick a diet. Step 2: Add bacon.
There are two saving graces that don’t appear on the paleo no-no list: dark chocolate and meat. At least I won’t die of chocolate deprivation. Furthermore: MEAT. PROTEIN. YES. I lift weights, which makes me a fan of high protein diets. Not to mention, not all calories are created equal. We have actually done studies on this. But the claims of paleo? Not so much.
In all seriousness, the pseudoscience of fad diets pisses me off. 10,000+ years of agriculture is plenty of time for positive selection toward grain consumption. It didn’t take long for lactose persistence to spread through much of the human population. 
So wait, why can’t I drink milk on paleo? Didn’t we recently evolve the ability to drink milk into adulthood because it’s insanely nutritious? Why do we give a shit about what paleolithic man ate when we are genetically modern humans?
Alcohol. We have these amazing genes (ADH1, ALDH2, ACSS1, and ACSS2) that encode enzymes which enable the conversion of ethanol to acetal aldehyde to acetic acid to acetal-CoA. Acetal-CoA then jumps into the citric acid cycle, which results in additional ATP, aka, energy. Most humans have evolved a highly effective system for metabolizing alcohol. American Indians had little to no exposure to alcoholic beverages prior to European contact and subsequently have very little tolerance to alcohol. East Asians often have different (mutated or variant) ADH1 and/or ALDH2 alleles that lead to a build up of acetal aldehyde (creating the “Asian glow”). These variances seemed to have been positively selected for in Asia as an anti-parasitic. So much adaptation, and we’ve only had booze for 10,000-ish years. Not to mention we’re not the only primates that can metabolize alcohol. Despite such a rich evolutionary history, alcohol is a not paleo approved.
I also get annoyed with any diet where you can have honey because it’s “natural” but you can’t have granulated sugar because it’s processed. It’s not like they’re shoving sodium and preservatives in the sugar crystals when they refine it. And it all breaks down in the body to the same freaking thing—whether it’s bee barf or tree sap or sweet reeds. Honey is primarily fructose and glucose. White sugar is entirely sucrose, which is a disaccharide composed of—guess what—fructose and glucose. White sugar has a glycemic index of 65. Honey has an average glycemic index of 61. BUT HONEY IS SO NATURAL!!! :facepalm:
If anything the paleo diet works because we’ve grown less efficient at digesting non-grain vegetation due to ten-plus millennia of agriculture. I don’t have any actual evidence for this statement, but apparently anecdote is all you need to spend way too much money on food and needlessly restrict your intake of yummy things!

Paleo sucks.

I’ve been one day on the so-called Paleolithic Diet for the Crossfit Paleo Challenge. It sucks. 

I will say right now that paleo is just another bullshit fad diet, this time based off anecdotal reasoning around reconstructing what paleolithic man must’ve eaten. But there’s a 30 day lifestyle competition so I’m giving it a go for the sake of competition and kicking myself off of the football-diet-without-football-practice (aka me-eating-a-lot-of-food).

I had my last meal at Taco Bell last night. I don’t know how I’m going to survive without my T-Bell.

I bet people lose weight on paleo because they can’t freaking eat anything. And the things they can eat cost tons of money. Look at the picture above. That was $75—more than I usually spend on groceries in a week!

People freak out because you can still eat bacon with this diet because BACON. But you can do this with any diet. Step 1: Pick a diet. Step 2: Add bacon.

There are two saving graces that don’t appear on the paleo no-no list: dark chocolate and meat. At least I won’t die of chocolate deprivation. Furthermore: MEAT. PROTEIN. YES. I lift weights, which makes me a fan of high protein diets. Not to mention, not all calories are created equal. We have actually done studies on this. But the claims of paleo? Not so much.

In all seriousness, the pseudoscience of fad diets pisses me off. 10,000+ years of agriculture is plenty of time for positive selection toward grain consumption. It didn’t take long for lactose persistence to spread through much of the human population. 

So wait, why can’t I drink milk on paleo? Didn’t we recently evolve the ability to drink milk into adulthood because it’s insanely nutritious? Why do we give a shit about what paleolithic man ate when we are genetically modern humans?

Alcohol. We have these amazing genes (ADH1, ALDH2, ACSS1, and ACSS2) that encode enzymes which enable the conversion of ethanol to acetal aldehyde to acetic acid to acetal-CoA. Acetal-CoA then jumps into the citric acid cycle, which results in additional ATP, aka, energy. Most humans have evolved a highly effective system for metabolizing alcohol. American Indians had little to no exposure to alcoholic beverages prior to European contact and subsequently have very little tolerance to alcohol. East Asians often have different (mutated or variant) ADH1 and/or ALDH2 alleles that lead to a build up of acetal aldehyde (creating the “Asian glow”). These variances seemed to have been positively selected for in Asia as an anti-parasitic. So much adaptation, and we’ve only had booze for 10,000-ish years. Not to mention we’re not the only primates that can metabolize alcohol. Despite such a rich evolutionary history, alcohol is a not paleo approved.

I also get annoyed with any diet where you can have honey because it’s “natural” but you can’t have granulated sugar because it’s processed. It’s not like they’re shoving sodium and preservatives in the sugar crystals when they refine it. And it all breaks down in the body to the same freaking thing—whether it’s bee barf or tree sap or sweet reeds. Honey is primarily fructose and glucose. White sugar is entirely sucrose, which is a disaccharide composed of—guess what—fructose and glucose. White sugar has a glycemic index of 65. Honey has an average glycemic index of 61. BUT HONEY IS SO NATURAL!!! :facepalm:

If anything the paleo diet works because we’ve grown less efficient at digesting non-grain vegetation due to ten-plus millennia of agriculture. I don’t have any actual evidence for this statement, but apparently anecdote is all you need to spend way too much money on food and needlessly restrict your intake of yummy things!

My friend Win and I have a board game in progress. It’s a strategic colonization game, heavily inspired by Sword of the Stars

Spring break of our junior year myself, Win, and two other friends headed up to Win’s house in Wisconsin for the week. That’s when I was introduced to Sword of the Stars. It was my first (and only) 4X space game. I have to say, we didn’t leave the family room (affectionately dubbed “The Command Center” by Win’s dad) for the entire week. Each game took hours and hours to play. Honestly, we didn’t even finish most of them. Despite a skewed race balance (Zuul are OP!), a clunky RTS component, and motley art style, the game manage to capture a sense of wonder and excitement involving space exploration. This was the sort of aura Win and I wanted to capture with our board game, which has yet to receive a name.

I’m a fan of simplicity and elegance. In programming, simplicity is a good thing, and complex systems can arise from the simplest rules. Adding complexity via adding more rules does not necessarily make the game more complex. But it does make it more confusing. 

Win and I have a lot of playtesting and balancing to do. I would love to program the game online, because I feel that that would allow a greater number of playtesters to help round out the game. You really can’t predict how a game like this will run without testing it (tips hat to the halting problem). So I guess I’ll add this to my list of programming projects to find time for!

So I’ve been working as a Ruby on Rails dev for about a year now. Several weeks ago we started a “Code Challenge” every Friday for the last hour of work. A member of our team will design a fun programming challenge and the rest of the dev team will spend 30-45 minutes attempting a solution. Sometimes we work individually, sometimes in pairs. It’s a great way to spend a Friday afternoon and flex our problem solving skills (through a bit of friendly competition, which always kicks me into high gear). The best part is comparing solutions after the fact, and learning about different strategies, language techniques, etc, that other devs used to solve the Code Challenge.
This week the challenge pitted our code head-to-head in a rock-paper-scissors tournament. Our code had to extend a BasePlayer class, implementing a choose and results method. I ended up winning the round-robin, and figured I’d post my RPS strategy (since I am pretty proud of it). 
My first thought was, “How am I going to write a genetic algorithm in 30 mins?!” Yes, something genetic seemed like the way to go, especially since my Player had access to the previous round’s results. Each match would consist of 10,000 rounds—ample time to allow a random process to converge upon the most fit solution. I’d done a little bit of my own exploration of genetic algorithms during college. Enough to know that I didn’t have time to write a proper one.
I did a quick Google search on advanced RPS strategies and found an article that mentioned the use of “Gambits” as a sort of meta-strategy. 



The mathematically inclined will quickly realize that there are only twenty-seven possible Gambits. All of them have been used and documented in tournament play. Each has several names from a variety of localities. There is no such thing as a “new” Gambit.
The “Great Eight” Gambits are the eight most widely used. There is nothing about these eight that make them superior to any other Gambits, although as a group they can be very effective. Several high-level players built careers on just these eight Gambits. They are, sorted alphabetically by their most common names:





Avalanche (RRR)Bureaucrat (PPP)Crescendo (PSR)Dénouement (RSP)Fistfull o’ Dollars (RPP)Paper Dolls (PSS)Scissor Sandwich (PSP)Toolbox (SSS)


This provided the inspiration I needed to find a genetic-ish solution to the RPS strategy. The gambits reminded me of codons, which are units of three nucleotides in DNA that encode a specific amino acid. DNA is evaluated in chunks of three codons at a time, translating into amino acids, which in turn chain together to form a protein. I decided that I would use these eight gambits in a similar manner as codons in my algorithm. 
This was the rather rushed (yet surprisingly simple) strategy that I submitted:


You can see how I coded out the eight gambits, giving them a single character symbol as a name. I created a fitness array of these gambits (codons) that ended up being a sort of hybrid of gene pool and fitness function. 
Each time that my player won, the current gambit that was in play would be added to the fitness function. When I had used all three turns in a gambit, I would select a random gambit from the fitness array. The gambits that generated the most wins ended up being added to the array more and more, increasing the probability that that gambit would be selected the next round. The random selection ensured that I would not get trapped at a local maxima by keeping the “gene pool” diverse. My Player would continue to test out different gambits while at the same time converging towards the set of gambits that seemed to work the best against an opponent. 
The evolutionary nature of my RPS strategy provided my Player with the ability to adapt to the greatest variety of other strategies—allowing me to sweep the tournament. Interestingly enough, I didn’t get the most total individual round wins. Bob’s entry had almost 2000 more wins than mine, winning some (but not all) matches by a landslide. His implementation used the first thousand rounds of random throws to gather data, find his longest winning streak, then use that winning streak for the rest of the match unless he found a better winning streak. This proved insanely effective against players that used non-random RPS patterns (or those that could be coaxed into a non-random pattern). Against me, Bob would find some arbitrary winning streak and most likely settle on it as a local maxima. Meanwhile, my Player would start favoring gambits that faired the best against his winning streak. 
If I could code this again, I would evaluate a gambit as a whole instead of every round. In my current implementation, there was no fitness difference between a gambit that yielded win-lose-lose and win-draw-draw. I should have calculated a gambit’s net wins (subtracting the losses) and only added to my fitness array if the total net wins was greater than one. I would also have added all 27 gambits if I had time.
Other than that, I was pretty pleased. My solution was one of the shortest and simplest in both code and complexity. 35 lines of code, O(1) runtime each round, and O(n) memory usage over the match.

So I’ve been working as a Ruby on Rails dev for about a year now. Several weeks ago we started a “Code Challenge” every Friday for the last hour of work. A member of our team will design a fun programming challenge and the rest of the dev team will spend 30-45 minutes attempting a solution. Sometimes we work individually, sometimes in pairs. It’s a great way to spend a Friday afternoon and flex our problem solving skills (through a bit of friendly competition, which always kicks me into high gear). The best part is comparing solutions after the fact, and learning about different strategies, language techniques, etc, that other devs used to solve the Code Challenge.

This week the challenge pitted our code head-to-head in a rock-paper-scissors tournament. Our code had to extend a BasePlayer class, implementing a choose and results method. I ended up winning the round-robin, and figured I’d post my RPS strategy (since I am pretty proud of it). 

My first thought was, “How am I going to write a genetic algorithm in 30 mins?!” Yes, something genetic seemed like the way to go, especially since my Player had access to the previous round’s results. Each match would consist of 10,000 rounds—ample time to allow a random process to converge upon the most fit solution. I’d done a little bit of my own exploration of genetic algorithms during college. Enough to know that I didn’t have time to write a proper one.

I did a quick Google search on advanced RPS strategies and found an article that mentioned the use of “Gambits” as a sort of meta-strategy. 

The mathematically inclined will quickly realize that there are only twenty-seven possible Gambits. All of them have been used and documented in tournament play. Each has several names from a variety of localities. There is no such thing as a “new” Gambit.

The “Great Eight” Gambits are the eight most widely used. There is nothing about these eight that make them superior to any other Gambits, although as a group they can be very effective. Several high-level players built careers on just these eight Gambits. They are, sorted alphabetically by their most common names:

Avalanche (RRR)
Bureaucrat (PPP)
Crescendo (PSR)
Dénouement (RSP)
Fistfull o’ Dollars (RPP)
Paper Dolls (PSS)
Scissor Sandwich (PSP)
Toolbox (SSS)

This provided the inspiration I needed to find a genetic-ish solution to the RPS strategy. The gambits reminded me of codons, which are units of three nucleotides in DNA that encode a specific amino acid. DNA is evaluated in chunks of three codons at a time, translating into amino acids, which in turn chain together to form a protein. I decided that I would use these eight gambits in a similar manner as codons in my algorithm. 

This was the rather rushed (yet surprisingly simple) strategy that I submitted:

You can see how I coded out the eight gambits, giving them a single character symbol as a name. I created a fitness array of these gambits (codons) that ended up being a sort of hybrid of gene pool and fitness function. 

Each time that my player won, the current gambit that was in play would be added to the fitness function. When I had used all three turns in a gambit, I would select a random gambit from the fitness array. The gambits that generated the most wins ended up being added to the array more and more, increasing the probability that that gambit would be selected the next round. The random selection ensured that I would not get trapped at a local maxima by keeping the “gene pool” diverse. My Player would continue to test out different gambits while at the same time converging towards the set of gambits that seemed to work the best against an opponent. 

The evolutionary nature of my RPS strategy provided my Player with the ability to adapt to the greatest variety of other strategies—allowing me to sweep the tournament. Interestingly enough, I didn’t get the most total individual round wins. Bob’s entry had almost 2000 more wins than mine, winning some (but not all) matches by a landslide. His implementation used the first thousand rounds of random throws to gather data, find his longest winning streak, then use that winning streak for the rest of the match unless he found a better winning streak. This proved insanely effective against players that used non-random RPS patterns (or those that could be coaxed into a non-random pattern). Against me, Bob would find some arbitrary winning streak and most likely settle on it as a local maxima. Meanwhile, my Player would start favoring gambits that faired the best against his winning streak. 

If I could code this again, I would evaluate a gambit as a whole instead of every round. In my current implementation, there was no fitness difference between a gambit that yielded win-lose-lose and win-draw-draw. I should have calculated a gambit’s net wins (subtracting the losses) and only added to my fitness array if the total net wins was greater than one. I would also have added all 27 gambits if I had time.

Other than that, I was pretty pleased. My solution was one of the shortest and simplest in both code and complexity. 35 lines of code, O(1) runtime each round, and O(n) memory usage over the match.

There are three things, my brethren, by which faith stands firm, devotion remains constant, and virtue endures. They are prayer, fasting and mercy. Prayer knocks at the door, fasting obtains, mercy receives. Prayer, mercy and fasting: these three are one, and they give life to each other.

Fasting is the soul of prayer, mercy is the lifeblood of fasting. Let no one try to separate them; they cannot be separated. If you have only one of them or not all together, you have nothing. So if you pray, fast; if you fast, show mercy; if you want your petition to be heard, hear the petition of others. If you do not close your ear to others you open God’s ear to yourself.

When you fast, see the fasting of others. If you want God to know that you are hungry, know that another is hungry. If you hope for mercy, show mercy. If you look for kindness, show kindness. If you want to receive, give. If you ask for yourself what you deny to others, your asking is a mockery.

Let this be the pattern for all men when they practice mercy: show mercy to others in the same way, with the same generosity, with the same promptness, as you want others to show mercy to you.

Therefore, let prayer, mercy and fasting be one single plea to God on our behalf, one speech in our defense, a threefold united prayer in our favor.

Let us use fasting to make up for what we have lost by despising others. Let us offer our souls in sacrifice by means of fasting. There is nothing more pleasing that we can offer to God, as the psalmist said in prophecy: “A sacrifice to God is a broken spirit; God does not despise a bruised and humbled heart.”

Offer your soul to God, make him an oblation of your fasting, so that your soul may be a pure offering, a holy sacrifice, a living victim, remaining your own and at the same time made over to God. Whoever fails to give this to God will not be excused, for if you are to give him yourself you are never without the means of giving.

To make these acceptable, mercy must be added. Fasting bears no fruit unless it is watered by mercy. Fasting dries up when mercy dries up. Mercy is to fasting as rain is to earth. However much you may cultivate your heart, clear the soil of your nature, root out vices, sow virtues, if you do not release the springs of mercy, your fasting will bear no fruit.

When you fast, if your mercy is thin your harvest will be thin; when you fast, what you pour out in mercy overflows into your barn. Therefore, do not lose by saving, but gather in by scattering. Give to the poor, and you give to yourself. You will not be allowed to keep what you have refused to give to others.

St. Peter Chrysologus, Bishop of Ravenna (405-450 AD)

Christmas gift for my best bro(ny) Win! 

It’s a fleece blanket. Designed and sewn by yours truly.

Christmas with the Smiths in Two Rivers, Wisconsin.
Watercolor and colored pencils.

Christmas with the Smiths in Two Rivers, Wisconsin.

Watercolor and colored pencils.

This is what happens when we forget to bring settlers to Thanksgiving.

Caring is an evolutionarily advantageous trait, he thought. Individuals that care about the things of life tend to live and pass on their caring genes. Individuals that don’t care don’t.
Apathy Is Not Evolutionarily Advantageous (freewrite)
She wondered what kind of deep truths would be communicated between their eyes during that doomed, weightless minute. He would know. He would know then.
A Train Headed West (freewrite)
I see now, my dear Ivan. It is not that you want justice, it is that you want your justice now.
Justice for Abel (freewrite)
This bit of protest art was done in response to Nintendo banning Melee streams at EVO. By the time I had finished this piece, Nintendo had relented, thanks to the outcry of thousands of dedicated smashers and fans.

This bit of protest art was done in response to Nintendo banning Melee streams at EVO. By the time I had finished this piece, Nintendo had relented, thanks to the outcry of thousands of dedicated smashers and fans.

I tore my meniscus a little less than a month ago playing football (I play defensive end for the St. Louis Slam). I just had surgery on my knee yesterday morning to clear away the torn cartilage. In hopes of raising money to help me pay for my operation and subsequent rehab, I started creating these smash bros vinyl decals.

They’re perfect for laptops, smash setups, and car windows. Right now I mainly have the series symbols for melee characters along with the smash logos. $10 for 4 decals. You can pick and choose which four you would like if you don’t want all of them the same kind.

I have an online store on my website http://brokenshard.net/store