Google
 

Wednesday, September 17, 2014

And the Vending Machine Gods Smile Upon Me

My team lead wanted to buy a $0.75 Coke from the vending machine downstairs, but he only had $0.50. He asked around for a quarter, but nobody had any, so I gave him $1.00. He gave me his $0.50 and promised to give me the $0.25 change when he got back.

When he returned, he was carrying both a Coke and a Dr Pepper (the nectar of the gods), which he gave me in addition to the quarter. Apparently, when he punched in his request for a Coke, the machine gave him both.

Sometimes, Karma works in your favor. Mmm... Dr Pepper.

Friday, April 4, 2014

Automated SVN Deployment

After much gnashing of teeth, I've finally managed to build a bash script to automate deployment of my builds to production/staging for my in-progress website.

Note that the SVN hooks directory, as well as the working directories for the SVN must all be owned by the user that the hook script is executing as. In my case, the user was www-data, so I needed to run chown -R www-data /var/svn/repo/hooks, chown -R www-data /var/www/production, and chown -R www-data /var/www/staging. This also needs to be a post-commit script in order to function properly. Staging and production must also be manually set up as working directories. Staging should be on /trunk, but it doesn't particularly matter what production is set to, as it will soon change.

Now, my script isn't the most secure in the world, this I know. Mainly, because I've got the SVN username and password stored in plaintext in the script. At this point, though, I don't care. Here's the script!

#!/bin/sh
USER='username'
PASS='password'
REPOS="$1"
TXN="$2"

/usr/bin/svn update /var/www/staging --non-interactive --trust-server-cert --username-"$USER" --password="$PASS"

SVNLOOK=$(/usr/bin/svnlook history -r "$TXN" "$REPOS" /tags | grep "$TXN")

if [ -n "$SVNLOOK" ]; then
TAG=$(/usr/bin/svn ls "file://$REPOS@$TXN" "^/tags" | tail -1)
/usr/bin/svn switch "file://$REPOS/tags/$TAG" /var/www/production --username="$USER" --password="$PASS"
fi

What It Does:

$1 and $2 are the parameters automatically passed to the post-commit; the name of the repository and the revision number just committed, respectively. First, the staging site is updated to the most recent revision of the trunk (--non-interactive --trust-server-cert is used because my certificates have bad validation :P). Then, the script looks at the SVN history for the current revision, checking whether there's anything in the /tags directory. If there is a change to anything in /tags for this revision, we obtain the most recent folder, and switch to it on production.

The Result:

When you commit a change to the repository, the staging site is updated. When you tag a revision, the production site is updated. Thus, staging will always have the most recent (though possibly broken) build of the application, and production will always have production builds.

Tuesday, July 24, 2012

My Little Exalt

I have recently become a brony, watching My Little Pony: Friendship is Magic. The show's actually quite good.

After becoming a brony, I began to read MLP fanfiction on fimfiction.net. Then a friend of mine talked to me about his ideas for writing his own fanfic, and that spurred me on to write a fic of my own.

All of that boils down to the creation of My Little Exalt, a crossover fanfic between My Little Pony and Exalted. The ponies are in Creation. The Dowager is in Equestria. Pinkie Pie is a Sidereal exalt, Chosen of Serenity (y'know, the party exalted). Let the hijinks ensue.


So far I've published the prologue and two chapters, with many more planned in my crazy-dome. Wish me luck!

Wednesday, March 7, 2012

InkedPlaymats.com

Cruising around the MTG Salvation forums today, I discovered a topic about where to find quality playmats for Magic: the Gathering. One of the posters supplied a link to InkedPlaymats.com. You can purchase playmats with featured designs, generally for $20 plus shipping/tax, though some are listed at $25. But the real draw for the site is the ability to buy totally custom playmats for $25 ($35 if you want the InkedPlaymats guys to do a proof or any editing to your image).

You supply an image file (many file formats are accepted: PDF, CDR, EPS, AI, PSD, TIF, JPG, and even hardcopy via snail mail if you're willing to pay a $10 service fee), and they ship you a 24x14" playmat (machine washable!) with your image printed on it. The InkedPlaymats website has a downloadable PSD template with guides to help design the image.

The whole operation seems pretty sweet, and I've already ordered two playmats with two different images of my design. One mat goes with my five EDH decks (both complete and under construction). The other is a play on Skithiryx, the Blight Dragon; the image of the dragon itself has been adjusted to be bright and colorful, and a rainbow passes behind him. This is now "Skittles, the Bright Dragon". Along the bottom, the text reads "Taste the Infection". Along the left reads the same text, written in the Phyrexian language.

Friday, December 9, 2011

"Who Needs Spells When I Can Just Throw My Deck At My Opponent's Head?"

So, I play Magic: the Gathering Online on occasion. I've got a single Commander format deck (a mirror of a deck I've got with physical cards), and a number of decks for the special "Planeswalker" format that only exists online. Planeswalker is fun, because you can get the cards for it really cheap, and since it's online you can use the same card in multiple decks, no problem.

I've recently created a Blue/Red deck with a very simple decklist:

The premise is simple: Draw my entire deck using Treasure Hunt(s), since my deck is primarily lands. Then discard those lands to activate Seismic Assault, dealing damage to my opponents and their creatures. Just now, I played a Two-Headed Giant game with this deck. When I played the Seismic Assault, one of my opponents laughed at me for using it in a multiplayer format with higher life totals. Through most of the game, I used Seismic Assault to take down creatures giving me and my teammate trouble. I had already cast 3 of my 4 Treasure Hunts, each time only drawing 5-8 lands. Not enough to be a huge threat, but the guy that laughed stopped laughing when he reailzed just how MUCH of my deck was land.

I had cast 3 Treasure Hunts, I had a Seismic Assault on the field, and two Seismic Assaults in my hand, and I was out of land. I was depending on my one card per turn to keep up, and our team was hurting.

Then I drew Treasure Hunt. My team was at 24 life, my opponents were at 39.

I cast Treasure Hunt, and revealed the remainder of my deck; 26 cards.

26 * 2 damage. GG?

So really. Who needs to cast spells in a Magic game? I'll just throw my deck at their head, knock them out, and go through their pockets.

Tuesday, September 27, 2011

Kindle's "Reset to Factory Defaults" does NOT Reset to Factory Defaults

I was having some trouble today with a mod for my Kindle DX, and I finally said "fuck it!" and decided to reset the thing to its factory defaults. After all, I can just re-register it to my Amazon account, and re-download all the books I bought. That will solve my problem. Right? Wrong!

Even after resetting it to defaults (twice!*), the mod I was having issue with was still installed. I'm sorry Amazon, but an installed hack is not what I call "factory defaults".

* In the middle of re-registering my Kindle after the first reset, the screen blinked and all my information was back, as if I had never reset it in the first place. I wasn't even done inputting my password yet.

Wednesday, September 14, 2011

Elder Dragon Highlander

Elder Dragon Highlander is an extremely fun Magic: the Gathering format. Wizards re-branded the format as "Commander", and they've made it available in Magic: the Gathering Online as well. Myself, I really enjoy my Thada Adel, Acquisitor deck. It doesn't win especially often, but it's incredibly fun to play. I've dubbed it "Stealy McStealypants", because the deck doesn't really have a win condition — I use my opponents' win conditions against them. No matter what it is, my deck is capable of stealing – sorry – 'acquiring' it.

Anyway, this post is mostly about the awesome game I just had on Magic Online. The game was between me (Thada Adel, Acquisitor) and two other people (one playing Sharuum the Hegemon, a known top-tier combo deck; the other playing Karador, Ghost Chieftain. The game starts off slow, with everyone playing lands and not doing much else. I play Thada on turn 3, as I usually do (normally, I use her to steal some Sol Rings or somesuch at the beginning of the game, and rarely do much with her afterward), but when I attacked the Sharuum player, he dropped a Shimmer Myr in my face.

The Karador player, who had been peacefully ramping up mana, drops Teneb, the Harvester onto the field and takes a swing at me, so I steal it with Dream Leash. Unfortunately, before I can use Teneb for anything, the Karador player is forced to leave due to unforeseen circumstances.

By this point, the Sharuum player has Leonin Abunas in play. After some back-and-forth, I finally get in a hit with Thada, and steal Norn's Annex to slow the mounting army of automata. I'm able to deal with things to some extent by using Capsize on the Leonin, but that eats up six mana each turn and it doesn't leave me with much. Then the Sharuum player equips the Leonin with Swiftfoot Boots and I'm in trouble; almost everything on his field is an artifact, I can't target any of his artifacts with anything, and I can't target the thing preventing me from targeting them. A conundrum. Current life totals — Me: 10, Him: 34.

So, I steal his Venser, the Sojourner using Blatant Thievery, and then use his third ability and start exiling permanents from his field. Unfortunately, I still can't target most of his things, and I'm forced to target his lands. Time Stop buys me another turn to find an answer, and Rite of Replication builds me a wall of creatures to hide behind. (It also gives me throwaway targets for Venser's emblem, since it's a mandatory trigger and I've run out of targets on my opponent's field.)

Here's where the fun really starts. Mystical Tutor searches my deck for Bribery. (Since I already had Future Sight, I can cast it off the top of my deck.) Bribery searches my opponent's deck for Kuldotha Forgemaster. Moving Lightning Greaves onto the Forgemaster allows me to activate its ability immediately, to search my deck for Mindslaver. Then, I activate Mindslaver to control my opponent's next turn.

At this point, the life totals are 10 to 32 (my opponent paid life into my Norn's Annex), with the following battlefield:

Him: Vault of Whispers, Seat of the Synod, Everflowing Chalice (one charge counter). Copy Artifact (copying Norn's Annex), Sculpting Steel (copying Norn's Annex), Skullclamp, Swiftfoot Boots. Leonin Abunas (equipped with Swiftfoot Boots), Shimmer Myr, Etherium Sculptor, Faeire Mechanist.
Me: 10 Snow-Covered Islands, Strip Mine, Teferi's Isle, Ghost Quarter, Reflecting Pool (enchanted with Dream Leash), Thran Dynamo. Sensei's Divining Top, Norn's Annex, Gauntlet of Power, Future Sight, Lightning Greaves. Magus of the Future, Empress Galina (equipped with Lightning Greaves), Thada Adel, 5 Sphinx Ambassador.

Controlling my opponent on his turn, I move the Swiftfoot Boots to his Faerie Mechanist and cast Demonic Tutor, searching his deck for a basic land, rather than something useful. Then, I attack with all of his creatures (paying 8 life into my Norn's Annex) and block with my Sphinxes. Now that I can target everything on his field, I capsize each of his lands and his Everflowing Chalice, using Venser's emblem to exile his Copy Artifact (Norn's Annex), Sculpting Steel (Norn's Annex), and two equipment. His field completely empty, I swing in for 38 damage and the win.

In description after-the-fact, it seems... less. But at the time, I was frantic for an out to the hexproofed field, especially once I realized Venser's emblem was mandatory and I'd have to exile my own cards ever time I cast a spell. I spent a fair bit of time trying to figure out what to get with Mystical Tutor, and picked Bribery hoping he'd have a board wipe or something. Then I spent far too much time looking at his creatures, not finding what I'd hoped for. And then a light turned on in my head, as I realized I had Mindslaver in my deck and there was a Kuldotha Forgemaster sitting there, waiting to be bribed.

Friday, September 2, 2011

Android Resources: Map Structures

Resource files host a very limited set of data types for Android developers. In a recent project, I wanted to have a mapped data set (in Java, the data type would have been Map<String, Map<String, Integer>>). I looked around the internet trying to find out how to do it, and the resounding answer was that it's not possible. Options include creating a <string-array> and an <integer-array>, and merging them into a Map at runtime, or alternatively creating a series of <string> resources, and merging them into a Map using reflection.

In my opinion, neither is a particularly good option for creating a resource, when the supported types work so seamlessly. So, I spent time developing a workaround. It turns our that the <array> type is functionally similar to Object[]. Each <item> can be any simple type (int, string, etc.), or else a reference to an existing resource (of any type). This means you can in fact have a nested array, you simply have to write each array separately and then use a reference in one to the other.

<resources> <array name="my_array"> <item>@array/a0</item> <item>@array/a1</item> <item>@array/a2</item> </array> <array name="a0"> <item>0,0</item> <item>0,1</item> <item>0,2</item> </array> <array name="a1"> <item>1,0</item> <item>1,1</item> <item>1,2</item> </array> <array name="a2"> <item>2,0</item> <item>2,1</item> <item>2,2</item> </array> </resources>

Unfortunately, you can't simply load the resource as a Map or Object[][]. It's a little more complicated than that. You've got to load the TypedArray ('my_array'), loop through the values, obtain the resourceId for each of those values, use the resourceId to load the sub-array as another TypedArray, and then loop through those values. Further levels adds more steps of the same actions.

TypedArray myArray = getResources().obtainTypedArray(R.array.my_array); int columns = myArray.length(); for(int i = 0; i < columns; i++) { int rowid = myArray.peekValue(i).resourceId; TypedArray row = getResources().obtainTypedArray(rowid); int values = row.length(); for(int k = 0; k < values; k++) { System.out.print(row.peekValue(i).coerceToString() + "\t"); } System.out.println(); }

I have not tried creating array which reference each other, but it's definitely a bad idea. I suspect it'll result in a compile-time error, but I don't intend to try.

Monday, March 7, 2011

Networking Sucks

I'm currently working on a game project with networking. What should have a simple P2P topology has evolved into something so arcane, I can't make out what half out code is doing.

Stupid networking...

Thursday, September 23, 2010

Rice Students are Sharks

I live on-campus at Hanszen College at Rice University. Hanszen shares the South Servery with Weiss college, which is one of the three main, larger serveries on campus. Each college which is not attached to one of the big three has their own, but the three large ones are open on days when the smaller ones would be closed, and they generally have better food to boot.

Tonight, one of the things available was a smoked roast beef, carved to order by one of the chefs, and accompanied by 'homemade' barbecue sauce and horseradish cream sauce. This is a story of the events surrounding the roast.

Now, the servery opens for dinner at 5:30pm. I arrived at about 5:40pm, and saw some slices of the roast leaving on someone else's plate. I knew what I wanted for dinner immediately. Of course, as a special dish, there was a line to get any. It wasn't exceptionally long, though, so I was ready to wait. When I reached the front of the line, I ended up asking for a few more slices, since the first few I was given were from the tail end of the previous slab, and were 50% solid fat. I wanted meat.

With my plate filled with delicious roast and some sides, I sat with some friends and chatted as I ate. This was approximately 5:50pm. During our conversation, I realized that it was Thursday, and there ought to be cinnamon rolls available for dessert. I bused my part of the table and hurried back into the servery to see if my assumption was true. Unfortunately, there was no sign of extra deliciousness. This was approximately 6:05pm

What I did see, however, was the carving station. Or rather, what used to be the carving station. The location was devoid of even the scent of the smoked roast. Did I dream it? No, surely not: many others were still eating their roast in the commons. The roast was real. The students had simply consumed all of it that had been prepared. The servery is used by approximately 300 students over the course of a meal, between Hanszen and Weiss and the individual students from other colleges who visit for a meal. In under half an hour, the delectable meat prepared for them had vanished.

Rice students, it seems, are ravenous sharks.

Tuesday, June 29, 2010

Java Callbacks using java.lang.reflect

Java does not have callbacks. Most commonly, I see people working around this by implementing the Observer Pattern, or simply having an interface for each method they need to use as a callback.

On a recent project, I felt the need for more direct callbacks in my Java code. Java's reflection package seemed to hold my answer. Given a Class, a method name, and (in the case of overloaded methods) a list of parameter types, you can retrieve an instance of the Method class. Then, given a list of arguments to pass to the method, it can be invoked via reflection.

Java reflection isn't particularly fast, so I recommend against this approach in applications where performance is important. But reflection works, so I present my Callback class here: package com.bs; import java.lang.reflect.*; /** * Implements callback functionality for Java. * Callbacks are implemented using reflection, so should * be avoided if possible. * * @author Brian Shields <http://clockworkgear.blogspot.com/> */ public class Callback { private Object parentObj; private Method method; private Class<?>[] parameters; public Callback(Class<?> clazz, String methodName, Object parentObj) { // Find a method with the matching name Method[] allMethods; try { allMethods = clazz.getMethods(); } catch(SecurityException se) { allMethods = new Method[0]; } int count = 0; Method single = null; for(Method m : allMethods) { if(m.getName().equals(methodName)) { single = m; count++; } // Can't have more than one instance if(count > 1) throw new IllegalArgumentException(clazz.getName() + " has more than one method named " + methodName); } if(count == 0) // No instances found throw new IllegalArgumentException(clazz.getName() + " has no method named " + methodName); this.parentObj = parentObj; this.method = single; this.parameters = single.getParameterTypes(); } public Callback( Class<?> clazz, String methodName, Object parentObj, Class<?>...parameters) { try { this.method = clazz.getMethod(methodName, parameters); } catch(NoSuchMethodException nsme) { nsme.printStackTrace(); } catch(SecurityException se) { se.printStackTrace(); } this.parentObj = parentObj; this.parameters = parameters; } public Object call(Object...vals) { if(parameters.length != vals.length) throw new IllegalArgumentException( "Wrong number of method parameters given. Found " + vals.length + ", expected " + parameters.length); Object ret = null; try { ret = method.invoke(parentObj, vals); } catch(IllegalAccessException iae) { iae.printStackTrace(); } catch(InvocationTargetException ite) { ite.printStackTrace(); } return ret; } }

Tuesday, April 20, 2010

The Tao of Game Features

This quote was taken from "Arcanaville" on the City of Heroes forums, with regard to adding new features to the game. The quote is lovely, and I think it applies to just about any update to any game, or software in general.

It's never as hard as the developers say it is, it's never as easy as the players think it is, and the best way to do it is most likely to be a way both groups would initially think is insane.

Tuesday, March 30, 2010

My Art Professor Sucks

This post is likely to get emotional, empassioned, and have strong language. You have been warned: here be dragons.

So, Rice university requires a certain number of credit hours in three distributions: D1 (literature, languages, art, etc.), D2 (philosophy, sociology, psychology, etc.), and D3 (math, science, engineering, etc.). This semester, I'm finishing my D1 requirements by taking an American Literature class, and a Drawing class.

I am not an artist. This has been painfully clear to me since elementary school.

However, "Drawing I" should be a gimme class; an easy B, if not an easy A. Right?

Well, it would be right, if my professor didn't suck. To be PC, I shouldn't speak ill of her: she's got Parkinson's disease, so I should be nice. Right? But she still sucks.

For our final project, we're supposed to pick a subject that interests us. There are several steps to the project, so far we've needed to submit a clip file (clippings from various sources which interest us or appear similar to our interests), and a few preliminary sketches. My chosen subject in the general case was Exalted. I had lots of sources to pull from. Hell, I've got over 100 artists which have worked directly on the book themselves! No problem making a clip file. Right

When I submitted it for feedback, she says I need wider diversity of sources. Of course, every picture in my clip file comes from a different artist! Some of my pictures weren't even directly part of the Exalted series, they just fit the theme.

The next part was a preliminary sketch. I selected a very dramatic picture of the Ebon Dragon flying over an area of Malfeas, blocking out Ligier the Green Sun as inspiration for my sketch. When I submitted my sketch for review, she told me that the image was too literal. When she asked me to describe the image, I mentioned that I didn't invent the character &mdash; an obvious mistake. Because I didn't invent the character, because I drew the character from a game, my sketch wasn't worthwhile. Worse, she then told me to use Greek and Christian dragon myths to make my drawing.

So, using a dragon that I could write a small book about is not sufficient... but using dragons that I could only write an essay about if I filled the essay with BS is a good idea? Who fucking cares if source A was written 9 years ago and source B was written 900 years ago, if source A is richer and more developed?

"Here be dragons," huh? This fucking dragon is larger, more deadly, and has a personality along with a rich and full backstory. He's not some fucking vauge threat looming in the shadows of the world. He's a very real and present threat to Creation.

The Ebon Dragon was trapped for eternity in hell. But he's patient, and he lives longer than eternity.

(Oh, and let's not forget his upcoming wedding, plus the "Return of the Scarlet Empress" book that's coming out this summer)

Tuesday, March 2, 2010

Facebook & Me

I've had a Facebook account for some time now. I created it just to find my friend's email address. But yesterday my mother needed to 'friend' me in order to list me as her son. So, I've finally put some actual information up there. My profile can be found here.

Thursday, December 10, 2009

Logical Proof that Religion is Bunk

I've been thinking about it for a while now. I've finally decided to post it. this is my proof that there's no point to religion. If you want to ignore me, you can consider it my reasoning for being an atheist.

Before I begin, I have two things I should point out about this "proof" of mine:

  • When I say "God", I am specifically writing about the Christian YHWH, since that is what I have most familiarity with. However, I feel that any and all dieties from any religion can be safely subsituted.
  • This is NOT a proof against the existence of God, merely a proof against the usefulness of religion.

There are a few possibilities on the nature and status of God:

  1. God Does Not Exist. If this is true, then there is no afterlife. There is nobody listening to your prayers and confessions, aside from the humans around you. It is obvious why religion is bunk if this is the case.
  2. God Exists, but Cannot Interact With Us. He might be there, there might be an afterlife. But He can't hear your prayers. He can't read your thoughts. Any interaction with Him at all takes place solely after you die. If this is the case, there's no point wasting you life away praying to God, since it won't do any good. Focus on being a good person, rather than being a good Christian.
  3. God Exists, Can Interact With Us, but Does Not Need To. If this is true, He can interact, but He has no need to do so. If He doesn't need your prayers, He doesn't need you to believe. There's no point in wasting your time for someone who doesn't need you to do so.
  4. God Exists, Can Interact With Us, and Needs To. If this is true, then there is some facet of God that requires us to believe in and worship Him. Perhaps he draws His power from the worship. Perhaps it's His very existence that requires out belief. If this is the case, He bears a striking resemblance to the Ori from the Stargate SG-1 TV show. The Ori draw their power from worship. They promise their followers asencion after death. But the reality is that they kill (or convince their followers to kill) anyone who refuses to believe in them. And they don't actually allow their followers to gain ascension, because that would mean sharing. If God is anything like this, it's not a being that I would put much stock in, much less help fuel with my faith.

Wednesday, September 2, 2009

Testing!

Just playing around with Windows 7, and I've installed some new desktop gadgets. Right now, I'm playing with the Blogger Buddy gadget to make this post!

Tuesday, June 23, 2009

The Five Maidens Sutra

Some time ago, I promised that I'd post up the final versions of the work I did for my Creative Writing class; now I'm finally getting around to doing it. Here's one of the three poems I wrote, and my personal favorite.

The Five Maidens Sutra

Mercury, Maiden of Journeys

Once, there was a saffron maiden...
...who was given providence over going, doing, travel, and the results from it.
Many Men wanted her for their own.
One by one, they approached her,
And she fled by the quickest route she found.
She says: "You still have a long way to go. I would keep moving."
Men cannot help who drives them.

Venus, Maiden of Serenity

Once, there was a sapphire maiden...
...who was given providence over all things which make life worth living.
Some Men say she cares most about the world,
Some Men say she cares most about Heaven,
Some Men say she cares most about herself.
She says: "Someone as pretty as you will always be wanted."
Love is smiling at your troubles.

Mars, Maiden of Battles

Once, there was a crimson maiden...
...who was given providence over war, strife, conflict, fighting, and struggle.
She struck an iron wall, and it shattered her hand.
She slew the thing she feared the most, and conquered the land that feared her.
Fate depends on how you face your battles, not whether you win or lose.
She says: "The stars hold only one more battle for you. This is not that battle."
Survival is control.

Jupiter, Maiden of Secrets

Once, there was an emerald maiden...
...who was given providence over everything known, and everything unknown.
Truths... Hopes... Prayers... Fears… Each brings an answer.
Each answer is part of a larger puzzle. The puzzle holds another question.
Men set aside their petty squabbles in her name.
She says: "Should I live or die? Am I living or dead?"
To know the world is to choose it.

Saturn, Maiden of Endings

Once, there was a violet maiden...
...who was tasked to cut each thread of Fate at Jupiter's direction.
Her death is a merciful one, giving way to new life:
An apple falling from the tree. A boy becoming a man. A beast, slain by fearful villagers.
Each ending allows for a new beginning.
She says: "No being can escape my duty."
There’s always an ending.

This poem was inspired by the Five Maidens in Exalted. The Five Maidens are together one of the Celestial Incarnae, the most powerful of gods. The Sidereal Exalted are the Chosen of the five Maidens, divided into castes under each of the Maidens. The sub-titles in this poem are the actual names/titles of each of the Maidens in the game, and the color in the first line of each stanza is the color associated with that Maiden.

This poem began by using the sutras found throughout the Charms chapter of Manual of Exalted Power: Sidereals, and the Sidereal Martial Arts chapter of Scrolls of Esoteric Wisdom, vol. I: Scroll of the Monk. I separated each sutra into which Maiden it might be applicable to, and then combined lines from several sutras to form the initial version of each stanza (generally, 3-4 sutras from the book contributed to one stanza). Once that was done, I modified the lines to make them flow better, give them extra structure, and modify the meaning of the stanza to give it the weight I wanted it to have. While there are still echoes of the original sutras in my work, I like to think that I've made it my own.

I think my favorite part of this poem is the ending, and several people in the class commented on it: ending the poem with the "Maiden of Endings" verse is particularly noticeable, as is the final line of the final verse: There is always an ending.

Tuesday, March 10, 2009

Goonfleet vs. Band of Brothers - The Mittani Speaks

Wars are not won by the winner; they are lost by the loser
— The Mittani
The Mittani has begun a column on Ten Ton Hammer, and he reflects on the second Delve war. In his words, "Wars are not won by the winner; they are lost by the loser". Much like a game of tennis, both participants enter equally matched, and wait to take advantage of their opponent's mistake.

The Mittani outlines three turning points in the war that gave Goonfleet the Delve, two of which happened before the actual war began in earnest:

  1. Haargoth Agamar defected from Band of Brothers, "an error of basic corporate security writ large, where a player who had been absent from the game for four months was allowed to maintain roles in the executor corporation".
  2. KenZoku published the entirety of their director forums, believing the Goons had it already, and wanting to prevent damning alterations. In truth, the Goons had only collected approximately 40% of the director forums before disbanding BoB and getting Haargoth's forum account banned. In addition to making them the fool for falling to The Mittani's bluff, it released information on their true opinion of the pet corporations, such that individual players in the pets vowed not to help in the coming conflict.
  3. After losing a mothership and a titan on the same day to ambushes, KenZoku command sent out the order to dock the entire capital fleet in PR-8CA in preparation for the next day's fighting. As soon as KenZoku logged off, Goonswarm and its allies "covered the station with warp disruption bubbles, preventing any kind of egress." They camped the locked-down station for three weeks, locking away over 230 capital ships, preventing KenZoku from defending the Delve from the Goon's assault.

My hat off to you, Mittens. The Second Delve War may have been won due to the mistakes of your opponent, but you guys made Eve drama interesting even for those of us who don't play the most expensive screen saver ever.

Goonfleet vs. Band of Brothers - Update

After a long break from playing war reporter, Human_Being is back with an overview of the action since his last post:

War Profits
There are some mis-conceptions earlier in the thread about how much material damage Haargoth Agamar actually did to then-BoB's Black Nova Corporation. While what he took hurt, it was not in-itself crippling to KenZoku. He took all fifteen Corporate Capital Ships BNC had, but the KenZoku 'Dread fleet still numbers some 230 ships (all still in PR-8CA). Agamar also took the "corporate store" of BNC consisting of hundreds of sub-Capital ships and stocks of Tower/Jump Drive fuel. These ships represent a pool that would have been used to fill in utility gaps in a given fleet or replace individuals' ship losses after a major battle. All corporation members still possessed their own ships though, stored in their own hangars. Finally, Agamar took eight billion in currency from the BNC corporate account. This is a significant sum of cash, but represents a fraction of BNC's available resources. Most corporations have a practice of keeping most of their money divided in Directors' personal accounts. Storing cash in individual accounts allows Directors to pocket and mis-use funds, but also prevents the corporation from being rendered completely insolvent by exactly this kind of attack. As a measure of scale, a Dreadnought hull without any fittings will start at around 1.6 billion and a Titan will begin at 40 billion. So while it was damaging, it didn't determine the war's course on its own.

The economic portion of the war began with about the same standings as the military one: KenZoku holding an apparently stronger hand and GoonSwarm facing an uphill battle. And like the military struggle, the economic confrontation has played out almost in the reverse of expectations.

Goon-anomics
One might criticize their antics, their chosen equipment, or individual pilots' performance, but one thing that has impressed all the Goons' allies and surprised their enemies is the astonishing logistical feat that they have, and are, pulling off. Firstly they managed an orderly and near-complete evacuation of several thousand players' assets from their old space. Outposts were cleared, Towers were taken down, and ships were convoyed out. Any ships that could not be moved were "insured" and then fed to NPCs for recovery of partial value (yes, that's fraud). Everything was transferred safely to 319-3D in NPC Delve; a central location within jump-range of most points in the Delve/Querious region. Materiale was moved swiftly enough that the Coalition Dreadnought fleets were able to operate with full support within two days of the evacuation order.

Once moved, support personel set up stores and have maintained a continuous flow of supplies from Empire-space. GoonSwarm has a reimbursment program for anyone who loses a ship in a fleet action and new hulls need to be available. All of those ships launching sorties 23 hours a day (minus one for server maintenance) require ammunition of some sort, with many specialized types and expensive varieties. Besides ammunition, fitting a ship for different tasks requires specific ship-modules. Dreadnought, Titan, and Cyno-field capable ships need "fuel" for each Cyno-Jump they make from system to system. All Towers need fuel and equipment as well. They need not just Strontium Clathrates to guard them against attack, but regular fuel consumed hourly to make them function at all. Of course, each NPC-faction's variety of Tower also requires a different type of fuel . All of these things have been procured and provided so as to allow uninterrupted operations for weeks on end.

Also impressive is how efficiently supply is being maintained. The busiest player trade-hub in Empire-space is "Jita". Players in outer regions refer to the costs of their equipment as "Jita +X%". GoonSwarm is moving items efficiently enough (or bringing in raw materials and manufacturing them on the spot) that their pilots are paying "at or slightly below Jita prices". One Goon pilot has reported that with prices as they are from the logistics teams, he was buying and fitting a new hull for 10-20 million less than the ship-reimbursement value received from his corporation.

While all of this is going on, the logistics team is moving new Towers into place, anchoring them, keeping track of which faction-type is where, and keeping them all fueled. There are some 300+ Coalition Towers in the region now, with more going up, and all of them must be manually maintained by someone.

There are Real World militaries that can't do this and the Goons have kept it up for over a month. Slacker-retards indeed.

The situation gets more astonishing if you take into account that everything was from a standing start. The time from realization that they could destroy BoB's Sovereignty to execution of the plan was literally hours. No one outside the GIA (Goon Intelligence Agency) and GoonSwarm CEO knew that anything was going to happen. The Mittani actually explained what had been done to the rest of the GoonSwarm Directorship after the fact (warning: some language).

The Coalition had only one advantage in preparation. Before the de-Sov-ing operation, GoonSwarm had been under attack by AAA and BoB/GBC. The Goons were holding their territory (even in the face of a de-Sov-ing spy used by BoB themselves at DG-8VJ), but the war had largely turned into a Tower-trading stalemate. Not satisfied with this state of affairs, the Coalition leadership had planned a new offensive against AAA with new tactics to take their territory. In preparation for their plan, the Coalition members had quietly purchased and stockpiled....300 Towers.

Landed Nobility
In contrast, KenZoku started the war with all of their equipment already in place. They had 400+ towers in Delve alone. They had years of stockpiled ships in their hangars. They had regular supply routines. Yet they have been pushed into NPC space.

KenZoku and the Pets still operate daily fleets of cruisers and frigates, but they are mostly basing out of NPC Aridia to the North of Delve. This puts them even closer to the trade hubs of Empire-space, but a KenZoku pilot has reported he is paying "Jita +15%" for equipment. KenZoku ships are also showing up in Coalition killboards with some surprisingly sub-standard fittings. BoB always insisted on the very best equipment (and demanded the same of the Pets) for their fleets. Always having better equipment than their opponent was a matter of pride for BoB. It's unknown if the "fail-fitted" ships represent replacement ship-modules in short supply or unwillingness to risk their best assets in what amount to harrying attacks.

Questions are being raised about BoB's past finances. They controlled the richest area of the game for years. They had much of their territory occupied by Pet Alliances who paid "rent" for their space and cost BoB no overhead for that income. The Pet Alliances also took their place in BoB battle lines, but were responsible for their own ship-reimbursments and (BoB-dictated) Capital Ship building programs. BoB built literally dozens of Titans, some of which were sold to friednly powers and others it now appears were sold under the table.

"Where are the Titans??" has been replaced with "Where is the Money??"

AAA and Red.Overlords are derided as "ebayers" and "Farmer alliances" with accusations that they forcefully occupy high-quality mining areas so their leaders can sell game-currency for RMT as a profession. A single Titan is valued at several thousand real-world dollars by the known RMT rates. BoB as a whole had income in the hundreds of billions per month. If they had wished to, the BoB Directors could have skimmed car-payment worthy amounts of cash from their sprawling empire. With their vaunted Titan fleet failing to appear and their years of occupation in Delve, some are wondering with bewilderment if the leaders of the Elite PVP Alliance of EVE...were in fact the worst group of Gold Farmers the game has ever seen....

Bust and *BOOM*
Regardless of any RMT suspicions, KenZoku is now an Alliance looking for a working strategy to attack the Coalition. For most of the previous weeks the majority of their activity has been to form a sizable fleet of support ships during their prime-time and dash for PR-8CA. In the few minutes before they arrive, word gets sent out out over out-of-game communications and enough Coalition members log in to the System-Camp to double their numbers or more. After seeing that they once again were not fast/numerous enough, KenZoku would turn and head for Querious to find some mischief. The Coalition would subsequently pursue them until the KFC ships logged off or were destroyed.

This is most of the action the Coalition PR-8CA campers see. They maintain that they are not becoming bored however. The guards have said that they get rotated on a good schedule, can do other things on their computers while waiting for an alert, and as an NPC system it is easy to find "rats" if they want to hunt a little. Since the earlier slash fan-fiction was somewhat poorly received, the Goons are now trying to be more literate with stories read over the Coalition Teamspeak. The current reading selection is The Count of Monte Cristo. While not what one might associate with Goons on first blush, the irony in being read the ultimate story of utter financial, social, and personal destruction in pursuit of vengeance appeals to the Campers. They insist they can keep this up forever (or at least longer than it takes KenZoku to give up).

There is some minor friction developing amongst Coalition members regarding the chases of KenZoku/KFC "breakout attempts". Most of this annoyance relates to the Pandemic Legion fleet commander "Shadoo" and his willingness to launch Doomsday attacks on even small fleets....and regardless of how many friendlies might be mixed in with them. The complaint is less that pilots' ships have been destroyed than that Shadoo is "hogging all the action". There is now a running joke with the formula "Shadoo DDed a Scout Frigate on the 319 gate. Update: 10 Goon Cruisers destroyed in the blast". Before the conflict even started, Pandemic Legion apparently secured a diplomatic "pass" for any such incidents and they are making full use of it. Never the less, Shadoo has begun to pilot Interdictors, trap enemy ships himself, and then order a Doomsday on his own ship in joking penance.

However, despite his "guns blazing" combat style, Shadoo has been very capable as a Fleet Commander during the campaign. For example, one day last week he noticed that KenZoku's ships appeared to be following a route to Querious they had used twice before. He Cyno-Jumped his Interdictor to a system ahead of the enemy fleet along that predicted path. Inside the system, Shadoo plotted an exact line between the entry gate and the one several Astronomical Units away that KenZoku would take when exiting the system. He then activated his Warp Interdiction bubble in the middle of that line just before the fleet entered.

As the KFC ships warped across the system they were stopped and dropped out of warp inside Shadoo's bubble. The set up worked perfectly with the entire fleet caught in his trap. Shadoo instantly had a waiting Titan Jump in via Cyno-Field and fire its PBAoE Doomsday Device as soon as it was through. In order to escape the blast, the clumsy cruisers and battleships would have needed to have a tactical speed-boosting module equipped, activate that module, power themselves to the edge of the kilometers-wide warp disruption field, and reactivate their warp drive all in a few seconds.

There was a teensy flaw with the plan though. An uninformed Tau Ceti Federation task force had also set up a gate-camp in the same system. They intercepted the KenZoku fleet when they came through the gate...and naturally tried to immediately pursue them when their prey warped away...

Of course, after having fought beside Shadoo for over a month, some TCF pilots have become remarkably quick on the uptake.

Saturday, February 21, 2009

Goonfleet vs. Band of Brothers - The End is Nigh

Last night Minor Threat demonstrated that they are indeed just in Delve for the mayhem and are not taking a side in the conflict...by jumping a KenZoku Cruiser group near Period Basis. Other than a few smaller squads acting independantly in light ships, KenZoku is still inactive, still camped into PR-8CA, and still losing ground every hour.

To keep themselves from going stir crazy and boost morale, GoonSwarm members have begun to read slash fan-fiction over the Coalition teamspeak during Dreadnought seiges. Said homoerotic stories apparently involve player-characters from the game and power tools. The Northern members of the Coalition are reconsidering their political relations and reviewing their communications options.

Even though things are going their way, GoonSwarm and company are not being triumphalist or losing focus. A meme they keep quoting in their posts is "2/21". They know that if KenZoku tries anything at all, it needs to be on Saturday. They are racing to accomplish as much as possible while they are still relatively assured of a free hand.

Quoth The Mittani:...

tldr version:

j-l hellpurge will flip it tomorrow

y5c, 5-6 and 7utb are all safely in pl hands though y5c will need a hellpurge soon with 23 finfleet towers to 35 PL

BNC const is under assault, PS-94 fell today, 1 hostile tower on 10 moons left, 39P was sieged and it and 8RQ both have been spammed

EVOL's const is entirely secure with 5BTK and MO-G hellpurged, TCf has superiority in 8WA and will flip it, Y-O has 21H to 15 F RZR towers but all 21 are in RF and will die tomorrow

RKK's constellation W-4 is all done, though many hostile towers under the 51% mark remain for cleanup, thanks for the six stations kakashi-sempai~~~

DICE is busy taking down towers and evaccing their const in Period Basis. You're next.

NOL is hellpurged, C6Y and C3N are ours, and T-M is being spammed by ZAF and had hostile towers RF'd today.

and that's your delve weather update

kenny capfleet status: still trapped in PR- rololol~

The above information can be quoted because...the regular Goon Fleet forums have crashed and GoonSwarm brazenly moved their "war room" communications and operations-updates to the official EVE forums. Even if they've got the information minute to minute on where and what the Goons are up to, there's nothing KenZoku can do about it. It seems the other residents can do nothing about hundreds of Goons suddenly posting in multiple threads either; no one else is even trying to break into the spam.

This is a truncated update-post (not that there's much more to talk about) but I'm afraid it is likely to be the last regular update for some time. As of today I have another committment for my time and writing abilities (such as they are). I'll likely peek in on the situation tomorrow to see if KenZoku tries anything, but won't be able to follow it closely.

I've done the majority of the reportage up to this point, but that doesn't at all mean the thread has to stop. It's an open forum and anyone can speak up with what they know. In fact I'd be pleased if they would. If you want to follow it along on your own: The official EVE forums contain the psychological attacks and reactions to events from the participants. Scrapheap Challenge has better information about what actually took place in the various battles. The Goon Fleet, Band of Brothers, Pandemic Legion, and other killboards will let you see who downed what and how battles turned out for each side (PL's is the easiest to read). And of course, there's the daily-updated Influence Map.

Thank you to everyone who gave compliments to my posts in this thread.