Rise of Eldrazi draft walkthrough
It’s been a while since I posted a draft walkthrough.
Stuff Ron Gross Finds Interesting
Posts tagged ‘Magic’
It’s been a while since I posted a draft walkthrough.
I blogged before about the StackExchange platform for questions and answers.
A few months have passed, and a whopping 218 different “stacks” emerged (there might be some more off the radar). While most of them are still ghost towns, a few are starting to be rather useful (some more and some less):
Regarding my own experience, I am nowhere close to breaking even. Until now, StackExchange has been a free (beta) platform. When it come out of beta, they will start charging $120/month. But, I’m optimistic, and I don’t mind funding Draw3Cards from my own money for the next year – it is picking up in terms of traffic. Meanwhile, I have also done a little bit of development of a similar open source, though I hadn’t perused it beyond a “programming exercise” yet.
P.S.
Needless to say, the original Trilogy – StackOverflow, SuperUser and ServerFault – continue to be an invaluble assent in programming, using a computer and IT. Rock on!
P.S.S.
I just found Shapado, a free, open source hosted version of Stack Exchange. They are taking a lot of heat from some of StackExchange’s users, but I think their existence can only be good news to StackExchange’s users. I probably won’t be switching Draw3Cards to Shapado any time soon because the platform is still not ready (less features, not as smooth), but time will tell.
For the last couple of days I’ve been obsessing over a new toy. Jeol & Jeff, the powers behind StackOverflow, have launched a public beta of StackExchange – a platform for hosting Q&A sites. Browsing the list of stack exchange sites, I saw several more and less successful sites, including:
I decided to try and open my own site, about Magic: The Gathering. The setup itself was rather easy. I:
Now what remains to be seen is whether the site can accumulate the needed critical mass. For now, the site is in beta, meaning I don’t have to pay anything to keep it running (except time and effort). When the beta is over, the cost will be $129 a month, which is quite challenging to make using adsense.
Keep your fingers crossed for me
P.S.
Just got a $100 coupon for AdWords by visiting Google Webmasters Tools – how cool is that? In a second look, it appears the coupon was lying in my Webmasters Tools inbox for two months now, just waiting for the perfect opportunity.
I also forgot to mention opening a uservoice forum (+ adding the widget to my site).
I admit, I enjoy success. This is why I tend to write walkthroughs that are about drafts in which I succeed, and keep those unlucky drafts tucked away in my ‘replays’ directory. Today’s draft is of the second type.
Before you continue on to the draft itself, I’d like to ask you to take a look at an experiment I’m launching – it’s a Q&A site about Magic called Draw3Cards. It’s built around the technology behind the successfully Q&A site for programmers, StackOverflow. I believe this site would benefit the Magic community, but I need help starting it up (as you might see, I asked most of the questions so far).
So, if you can spare 10 minutes, please go in and ask or answer a few questions. You won’t be able to vote right away, because of the built-in reputation system (to keep the bad bots away). Don’t worry though, the reputation required to vote is a measly 15, and I’m sure you’ll get there in no time.
Well, on with the draft then!
The decklist:
Spells:
Creatures:
Lands:
A total of 12 playable removals (counting pitfall trap and the goblins, but not Lavaball Trap because … well … I never got to 8 mana and played the damn thing). This is not including all mountains past the 5th that come into play when Valakut is around. I was quite happy with the deck … until it saw the light of battle, that is.
I went 0-3 against my opponent. A couple of games were really bad mana, but my opponent’s Sea Gate Loremaster, Sorin Markov, Blood Tributes, Baloths and Halo Hunter sealed the deal. He also had a Scuta mob which came into play with plenty of lands to pump him next turn, only to be shot down by a random burn spell on my turn.
What would you have done differently? A different first pick here could lead to an entirely different deck. What is your first pick here?
A new year, a new Magic block. Get the latest draft walkthrough here.
Ok people Zendikar is upon us, let the drafts begin! I rather like this set, but I tend to like most new blocks after a year of playing with the same cards. I wonder if I’ll get to draft an aggro deck, this block certainly have interesting aggro possibilities with red and black. I usually get pulled to draft control decks, just like in this case.
Before you continue on to the draft itself, I’d like to ask you to take a look at an experiment I’m launching – it’s a Q&A site about Magic called Draw3Cards. It’s built around the technology behind the successfully Q&A site for programmers, StackOverflow. I believe this site would benefit the Magic community, but I need help starting it up. On with the draft!
The decklist:
Creatures:
Spells:
Lands:
I went 1-1 against my opponent before Magic Workstation crashed on me. Didn’t draw any of my bombs, but the games were fun. Looking forward for the next draft.
I have been programming in C# for several years now, and recently made the switch to Java (at least for now). I noticed that Java, as a language, is “less magical” than C#.
What do I mean by that is that in C# things are usually done for you, behind the scenes, magically, while Java is much more explicit in the toolset it provides. For example, take thread-local storage. The concept is identical in both langauges – there is often a need for a copy of a member variable that’s unique to the current thread, so it can be used without any locks or fear of concurrency problems.
The implementation in C# is based on attributes. You basically take a static field, annotate it with [ThreadStatic], and that’s it:
[ThreadStatic] private static ThreadUnsafeClass foo = null; private ThreadUnsafeClass Foo { get { if (foo != null) foo = new ThreadUnsafeClass(...); // no other thread will have access to this copy of foo // note - foo is still static, so it will be shared between instances of this class. return foo; } }
How does it work? Magic. Sure, one can find the implementation if he digs deep enough, but the first time I encountered it I just had to try it to make sure it actually works, because it seemed too mysterious.
Let’s take a look at Java’s equivalent, ThreadLocal. This is how it works (amusingly enough, from a documentation bug report):
public class SerialNum { // The next serial number to be assigned private static int nextSerialNum = 0; private static ThreadLocal<Integer> serialNum = new ThreadLocal<Integer>() { protected synchronized Integer initialValue() { return new Integer(nextSerialNum++); } }; public static int get() { return serialNum.get(); } }
No magic is involved here – get() gets the value from a map, stored on the calling Thread object (source code here, but the real beauty is that’s it’s available from inside your IDE without any special effort to install it).
Let’s look at another example – closures.
In C#, you can write this useful piece of code:
var list = new List<int>(); ... // find an element larger than 10 list.Find(x => x > 10);
You can also make this mistake:
var printers = new List<Action>(); ... foreach (var item in list) { printers.Add(() => Console.WriteLine(item)); } Parallel.Foreach(printers, p => p())
An innocent reader might think this prints all the items in list, but actually this only prints the last items list.Count times. This is how closures work. This happens because the item referred to in the closure is not a new copy of item, it’s actually the same item that’s being modified by the loop. A workaround is to add a new temporary variable like this:
foreach (var item in list) { int tempItem = item; printers.add(() => Console.WriteLine(tempItem)); }
And in Java? Instead of closures, one uses anonymous classes. In fact, this is how they are implemented under the hood in C#. Here the same example, in Java:
for (Integer item : list) { final int tempItem = item; printers.add(new Action(){ public void doAction() { // can't reference item here because it's not final. // this would have been a compilation error // system.out.println(item); System.out.println(tempItem); }); } ...
Notice it’s impossible to make the mistake and capture the loop variable instead of a copy of it, because Java requires it to be final. So … less powerful perhaps than C#, but more predictable. As a side note, Resharper catches the ill-advised capturing of local variables and warns about it.
I myself rather prefer the magic of C#, because it does save a lot of the trouble. Lambdas, properties, auto-typing variables… all these are so convenient it’s addictive. But I have to give Java a bit of credit, as the explicit way of doing stuff sometimes teaches you things that you just wouldn’t have learn cruising away in C# land.
Another Alara Reborn draft, this time a Naya deck with some 5-color & bombs.
Check out this lucky Esper walkthrough (Alara Reborn).
A new Magic set has been released, check out my new draft walkthrough.