Saturday, April 28, 2012

That’s All Folks

A king was nervous about the future and asked a wise man, “Tell me something that is always true” and the wise man replied, “Change”.

This will be the last entry for this blog. It has been a great five years but I think it is time to be moving on. Forge is a huge success as well as this blog. Currently the blog gets 650 hits a day which is phenomenal for a niche topic. Writing a regular post of 150-300 words takes around 90 minutes and is always a challenging.

I created Forge and this blog when I was at my lowest point in life and did not know what to do with my time. Thankfully my real life has been improving so now I have less free time. I haven’t programmed anything in more than a year but I will probably start another programming project sometime when another itch needs to be scratched. (Most open source projects start with somebody having an itch.) I have some interesting ideas about another trading card game videogame but no concrete ideas or code.

Thanks for reading. You the readers have improved my life. Thanks for playing Forge and thanks for reading this blog.

Keep on tapping,

--Forge will continued to be developed and new cards will be added. New versions of Forge can be download from

--I will try to updat list of all Magic programs because it seems to get a good number of hits.

Tuesday, April 17, 2012

Deck Editor and Schlemiel’s Algorithm

Years ago I wrote Forge’s first deck editor. It didn’t do anything fancy and you couldn’t search for anything. You really didn’t need to “search” much because Forge only had a couple hundred cards. I did work hard on the deck editor’s “sort” feature which let you sort cards by name, type (instant, creature, etc…), mana cost, power or toughness. (In my mind “sort” was good enough, so a separate search function wasn’t really needed.)

(From the upcoming set Avacyn Restored)

But there was a problem. As more cards were added, the deck editor’s sort function became slower and slower. At first I guessed that it was a problem with Java but it wasn’t. I thought I was implementing “sort” correctly and that was as fast as it could be. (Later, I learned the correct way to sort things using Java’s JTable.) This “slow sort” problem plagued Forge for a couple of years until the nice developers totally revamped the deck editor and now it is awesome. The new deck editor is actually fun to use because it works so well.

The old deck editor basically used a “n squared” solution that grows very quickly. For example, to sort 100 cards it might take 2 seconds, 200 cards - 10 seconds. But to sort 300 cards took 15 seconds. As you can see, the sort times grows fast very rapidly. For a funny explanation of the same thing, real Joel Spolsky’s explanation of Shlemiel the painter below.

(Begin Quote)

Shlemiel gets a job as a street painter, painting the dotted lines down the middle of the road. On the first day he takes a can of paint out to the road and finishes 300 yards of the road. "That's pretty good!" says his boss, "you're a fast worker!" and pays him a kopeck.

The next day Shlemiel only gets 150 yards done. "Well, that's not nearly as good as yesterday, but you're still a fast worker. 150 yards is respectable," and pays him a kopeck.

The next day Shlemiel paints 30 yards of the road. "Only 30!" shouts his boss. "That's unacceptable! On the first day you did ten times that much work! What's going on?"

"I can't help it," says Shlemiel. "Every day I get farther and farther away from the paint can!"

(End Quote)

Basically it is hard to know if you have the “right solution” when you code. A program can be fine until you add that one feature that just breaks everything. Life and computer programming are both comprises. The perfect solution does not exist.


Joel Spolsky is great and each article has more computer info than my 4 years in college studying computers. Read his blog and be enlightened. For those people who can follow some short code segments in C, Joel talks more about C and Shlemiel here.

Joel Spolsky’s book’s “Joel on Software” and “More Joel on Software” are the best things that I have ever read. They are more readable (and edited) than his blog.

Joel Spolsky’s Blog

Tuesday, April 10, 2012

New Version

Forge has 500 new cards for a total grand total of 10,524 cards. Over 10,000 cards is just insanely crazy but it is more fun than a 100 pound ice cream.

Some of the new cards include:

Mirror Strike (3W, Instant) – “All combat damage that would be dealt to you this turn by target unblocked creature is dealt to its controller instead.” The card sounds cool and should win a few games.

Pulse of the Forge (1RR, Instant) – “Pulse of the Forge deals 4 damage to target player. Then if that player has more life than you, return Pulse of the Forge to its owner's hand.” The “pulse cycle” is great and repeatedly dealing damage is fabulous. This card has “card advantage” written all over it.

Fist of Suns (3, Artifact) – Let’s you pay WUBRG for any card. This card screams screams, “Please build a deck around me.”

Gomazoa (2U, 0/3, Creature) – “Defender, flying and Tap: Put Gomazoa and each creature it's blocking on top of their owners' libraries, then those players shuffle their libraries.” A blue creature that just won’t die and lets you skip combat phases, cool.

The extra crispy avenger,


Forge version 1.2.6

Download (45 MB) – Windows and Linux

Download (46 MB) – Mac

Forge requires Java

To uncompress bz2 files you can use Winzip or the free, open source program 7z.


Many people helped with this version. A special thank you goes out to them.

Chris H
Friar Sol
Jeff Wadsworth
Max mtg

Monday, April 2, 2012

Playtesting and Forge

A while ago a reader mentioned that he used Forge to playtest new decks. I thought it was an interesting comment because I never considered that idea. Forge has around 75% of all of the cards in standard (75% is just a guess) but I see how it could be a good playtesting tool. Any cards that Forge did not have, you use the developer menu and change mana and life points as needed.

(Dark Ascension token)

Forge is a good playtesting tool because you can see a variety of game situations. It is hard to look at a card at face value and say, “This card is good” or “This card is bad”. Your experience with other similar cards may make you think that a card is good or bad but without using that specific card in a game, you cannot be sure. I have built decks around cards that I thought were great but the playtesting showed me the truth.

Forge lets you test and build decks very quickly which helps you playtest many different decks. Since the AI is very basic, you can play whole games in 5 or 10 minutes. A real life 1-on-1 game would usually take 30 minutes or longer.

On a side note, Magic has a very influential pro-tour and there could be a market for a program that lets players playtest decks. The application could be stupid and only a “virtual tabletop” that did not understand the rules. The application would allow users to make decisions for both players and at the most basic level the application would not need any AI. A simple AI like Forge would not be too difficult to code but it would need to be able to use all of the cards in standard.

Just a humble guy,