Saturday, September 14, 2013

System76 Galago UltraPro (galu1) Review: Avoid

I've been a long-time Linux user, and a couple years ago I bought the Lemur Ultrathin from System76. It was an amazing machine, very portable very usable, and I loved it. Unfortunately a couple of months ago it lost its ability to power on - it was just around this time that System76 announced it's first real successor, the Galago UltraPro. On paper, it looks like a dream machine: clocking in at only $995 for the base model, it's got a Haswell i7 and Iris Pro Graphics, along with a 1080p screen. Unfortunately, on practice the machine just really isn't very good. I returned it.

The first thing I thought when I pulled this laptop out of the box is that this hardware truly is beautiful. The grey colouring is sleek, and it has very subtle accents of brushing giving it the look and feel of brushed steel - which is a comforting feeling when thinking about durability. It's not brushed steel or aluminum though, the official word is Magnesium Alloy and Poly-carbonate. Unfortunately, it doesn't feel as tough as my girlfriend's MacBook Air - I feel like I can very easily scratch the body of the Galago and I'm not sure (nor do I want to test) how it would fare in a drop situation. However comparing it to a standard, plasticy Dell, HP or even my previous Lemur Ultrathin it feels a bit better.

It's not all rosy, though; I'm sure anyone who's seen the promotional pictures on System76 has felt the same feeling I have - the hinge on the screen is really small and looks precarious. From using it so far, I can say that my fears have only slightly been assuaged. The screen is able to hold in any position quite securely and when closing it there's a bit of a satisfying "thunk" - its honestly really rewarding to hear - as the lid mechanism seals itself against the body of the laptop (with what I assume are magnets). But the hinge is still incredibly small, and if there's a failure point, I think that is going to be it. Another problem with the body is the screen. The actual display is beautiful, don't get my wrong, but the physical body of the screen is very thin and has a lot of flex. I think I would have liked to see a more sturdy material used in the construction of the screen's frame because there is a lot of flex and distortion when simply gently moving the screen around. It makes me worry that an accidental step would be devastating to the computer, but again, I don't want to try that.

The crisp edges of the machine definitely make it look slick, but it too suffers from a bit of the MacBook Air problem where resting your arms leads to pretty painful cutting into your skin. Using it laying in bed, on your back is my current challenge. I've found one sweet spot where my arms don't rest on the sharp edges, but once my shoulder cramps up it's an unfortunate dilemma: sit up (too lazy for that), stop programming (of course not) or deal with the pain in my forearm from the edge. I think it's obvious that I pick the third.

Where the palmrests connect with the base of the laptop also has a little "lip" - it's only a millimetre or two, but there have been a couple instances so far of my skin getting "caught" on it briefly. It was uncomfortable. I think since this is such a small lip that it will wear down over time and become a non-issue once it stops being sharp, but only time will tell.

The positioning of the fans in a block behind the screen - while a bit awkward looking - is fantastic for temperature. The laptop doesn't really get hot on the bottom, and that's awesome. Devices like the MacBook, Thinkpad Carbon and my old Lemur all seemed to have a vendetta against my testes.

Well... they're not very good. They're latptop speakers though, so that excuses most of it but honestly, since they're both beside the keyboard and physically rather large, I expected better from them. In reality, they're only moderately loud (they max out quieter than the MacBook Air) and they get a little tinny when maxed out, so it's best to keep them around 70%, I've found. In fact my girlfriend and I were trying to watch some VGHS in bed, and we had to switch to her laptop after an episode because we couldn't hear the show.

Edit: Now that I've returned the machine and am borrowing a MacBook Pro from work, holy cow were the Galago's speakers ever bad in comparison. They're just tinny and quiet

Quick Software Note: this is one of the weird speaker setups where alsa, by default puts the hdmi audio as the first device instead of the speakers - so if you're deviating from Ubuntu like I do (I use Arch), you should make sure that the PCH is set as the default device.

The first thing I did when I got this machine was to replace the harddrive that came default with my SSD. this was a frustrating experience, the harddrive slot must be accessed by removing the backplate, which isn't hard but involves removing and then replacing the 16 screws. The mSATA and RAM are underneath the keyboard, but just like my Lemur I'm relatively incapable of getting the damn thing off. You've gotta be crafty with a business card to move back the little plastic clips. I haven't actually succeeded on the Galago yet, there must be some trick to it.

This display is beautiful. There's not much more to say about this. It's 1080p in a 14" laptop, so text is crisp and clean. It ships with an .icc for best colour display. And it is matte. If you've been stuck on glossy screens for years, matte is the best thing ever. There's no reflections of the screens, and it looks good in all lighting scenarios, not just under fluorescent lights. This is the high point of the laptop. Absolutely beautiful. 10/10.

However, physically, I had issues with the design of the screen mentioned above, and I had defects with the screen which will be mentioned below in Support.

Keyboard and Clickpad

When I was initially typing this review, using this keyboard was an exercise in frustration, and I got really mad. I returned the laptop because of the keyboard - more on that in Support. If you take only one thing away from this review, take away that the keyboard is really bad and give extra considerations to that before purchasing.

I'm a programmer, so a functioning keyboard is incredibly important to me. But that's the kicker, I don't necessarily need a good keyboard, I just need one that functions. I need one that when you press a key, the Operating System registers that key as pressed and renders the appropriate ascii character on screen. The Galago keyboard does not do that.

Keys are a little tough. It takes a bit of effort to depress them, so it's a little more rigorous a typing experience than with other keyboards. The feedback on each key is really weird too: rubber domes are typically mushy, and this has that, but there's a stiffness to it. Keypresses are stiffly mushy. Describing this is causing me distress. The thing is, once you expend all the effort to depress that key (and it really doesn't feel very depressed because of the stiffness) you have no guarantee that the key will actually register. For most keys, the non-registered keys were erratic and occurred somewhat infrequently. In the case of the spacebar, there were fundamental problems with it. Essentially you can divide the spacebar into three sections: Two sections on the right and left that occupy about 25% of the spacebar, and once section in the centre that occupies about 50% of the spacebar. Only the centre section would ever register a space. Look at where your spacebar thumb rests when your fingers are home row. If you're seeing your thumb on one of the non-registering sections I hope you're drawing the truthful conclusion that with proper keyboard ergonomics you cannot type a space on this machine. It wasn't just erratic, I actively tested this and a total of half of my spacebar simply didn't work and wouldn't ever register a keypress. Support said this was a defect, I'm suspicious, more on that in support.

The clickpad might even deserve a section of its own, there's just so much to say about it. First, from a hardware perspective, the clickpad is beautiful. It is a large, expansive place, so you're never hitting the edge and it feels a lot like the glass trackpads of MacBooks. That is, there's very little friction felt when using it, which means that even after prolonged use, your finger doesn't start to hurt. Unfortunately, the software falls a bit flat on its face. The guys at xf86-input-mtrack are making some progress on multitouch support on linux, but it's not all there. For the time being, sometimes the trackpad doesn't behave exactly how I would like. Sometimes the cursor will jump to a corner of the screen unexpectedly when one of my extra fingers or palms accidentally brushes the pad when I'm using it. Dragging operations are incredibly difficult to do without a distinct button. First, you put the pointer to the first letter you want to select, sure. But then when you try to click down, the cursor moves because the button is under the touchable surface. This is exacerbated by the incredibly high-resolution screen. You have such a smaller area to actually aim for so selecting the text you want is nigh-impossible. This can be made better by enabling some of the clickpad synaptics options documented in the Arch Wiki, but it still is not as fluid, from a software perspective, as something like the Apple Trackpads.

Two finger scrolling works beautifully though, so kudos on that. The hardware also does support all manner of gestures with multiple fingers, but the software just isn't there yet.

I think this is a good time to bring up the fundamental problem with this machine, and by extension System76 in general. I have no idea who this machine is built for. It's clearly not built for people who use Linux, despite what System76 tries to say. If it was built for Linux, they would have found a machine with a Touchpad that behaved as expected under Linux. They have accepted and announced on their twitter that they're aware of the touchpad issues. These issues aren't new. Further, there's the keyboard. There's seriously absolutely no reason to ever choose this chasis based on they keyboard alone, it's even worse when they're a Linux vendor, and a vast quantity of people that use Linux and would want this machine are also programmers.

The worst part about it all is they're either looking at the whole thing with rosy-eyed glasses, or are incompetent. I hope it's the former. Even with this completely obvious, often unusable clickpad bug, before the release of the Galago isantop from System76 was on reddit gloating about how it's equal to or better than Apple's Magic Trackpad. This makes me so mad because it's just complete horseshit. There's no comparison, if you can't select text on your computer your hardware is insufficient.

Portability and Battery Life
I've got some mixed feelings about the portability of this machine. It's definitely very thin, but it has some clout to it - perhaps I've been spoiled by the MacBook Air, or perhaps I'm a wimpy white kid, but carrying this around in addition to textbooks and paper and the various board games and all my Magic the Gathering cards can make for one heavy backpack to lug around campus. Depending on your perspective, I do or do not have to carry the charger around with me. System76 gives really accurate descriptions of their real-world battery life, and this machine sits solidly at 4 1/2 hours, as promised. Whether that's enough is up to you. Obviously that gets a bit shorter if you're making use of the Iris Pro and playing games. The charger is rather clunky and the cables don't really wrap up nicely, so it's a bit of a pain to carry around if you have to.

This section is going to make some people with experience with System76 quite angry, so all I ask is that you read all the way through and then make your judgement. Support was horrible on this machine. There are two facets to support: the actual talking to the support technician, and then the physical repairing of the machine. System76 is full of nice people who are usually a delight to talk to. But it's all talk, and when it comes time to actually fix problem, the whole thing is a clusterfuck of bad support design. I'll tell my story:

As I'm sure you're aware by this point in the review, I hated the keyboard. Hated it. I knew this as soon as I opened the machine - which was on a Friday - and had the support ticket in about it before the Monday. In my support ticket I was quite furious and I said some very harshly worded things about the keyboard. All of them true of course, but harshly worded. I mentioned this tweet, which at the time had no replies and made me believe that System76 was intentionally shipping out bad keyboards when they had better ones available. The actual story on this is that the original Galago keyboard design which went out with review units didn't have a metal panel beneath the keyboard so it had more flex when you typed on it. All of the current Galago's have the keyboard with this flex-preventing panel.

Words were exchanged in the support ticket and misunderstandings were had, and I was eventually calling them condescending jackasses providing a sorry excuse for support and demanding my machine be returned. It wasn't seven minutes after that that Ian from System76 physically called my phone and chatted about the misunderstanding and what they could do about it. Kudos on the people side, but here's where the problem starts. He says "the keyboard is a little tough, but after getting used to it, it works great! Your spacebar thing sounds like a defect though. We can send you a new one" - that's great, except the keyboards were on backorder, so he would send it out in a couple weeks. Okay, cool, I guess I can wait, I want to like this machine.

A week later my screen started having problems. Any darkish colour would yield a 1cm x 5cm purple blob in the centre of the screen - unusable for watching movies. I filed a support ticket. Now support starts to fail again. He says "sure we can RMA that", and then requests that I pay shipping for the machine. For the record, it would cost me ~$65 to ship it to them, they wanted me to pay $61 for them to ship it back to me, and then at the same time, I received a request for $48 to ship the keyboard. Because of all the waiting I've done on them, I know only have about ten days before my return period expires. System76 offers a Canada warranty program for $30, which if you buy will cover shipping on warranties to Canada both ways. I didn't buy it during the initial purchase figuring if something goes wrong or I'm suspicious during the first 30 days, I can upgrade as per this tweet. I bring this up on the morning of the fifth of september, with nine days left in my return period. Ian says "I'll look into that and get back to you". I then receive no response.

After more than three days with no response I realize that they wasted all of my time with their own problems: backorders, not understanding their own policies, etc. Even if he gets back to me saying I can get the Canada shipping, there is no way I can ship it back, have them repair it, and then receive it and test it before the end of my return period in less than six days. So I file another ticket telling them that due to this I'd have to return my machine. I receive a response quite quickly after that saying "We can definitely get the shipping coverage added, and that will negate shipping on this and any future repairs. If you return the system, your shipping won't be covered."

Of course I'd love to love this system, and I tell them as such. But due to their lack of preparation, I was unable to get a proper keyboard on my system in thirty days, and if the second one turns out to be shit then I'm completely out of luck and stuck with this system. I asked if they could extend my returns period in light of this delay until after I evaluated the new keyboard, and then decide if I wanted to return the system and received no response at all, but instructions for returning my system appeared in my inbox.

Now, my system is returned and I'm out ~$140 in shipping costs. Needless to say I'm unhappy and will not be buying, nor recommending System76 to anyone.

Avoid. Avoid, avoid, avoid.

This machine is badly designed and badly supported. It's absolutely disgusting that they chose this Clevo chasis for the machine, when it's obviously so badly designed and so unusable, especially under Linux. The only reasoning I can see for them using this is greedily wanting to boast about being the "industry first" to have Iris Pro in a machine. If that's the case, then I'm even more disgusted with System76 as a company. I got penalized for being an early adopter of this machine. Please learn from my mistakes and stay far, far away.

EDIT: (Sept 23rd) - my refund was processed. Apparently 25.25 in import duties were deducted. I'm not sure if I want to bother trying to reclaim those - getting taxes back from a foreign country seems like a lot of work, and 25$ isn't very many billable hours.

Wednesday, June 5, 2013

Tools shouldn't get in the way - why I dumped ruby on rails

I'm a PHP developer, through and through. We should get that out in the open and disclosed right off the bat, because that simple fact might be argued to cast a pretty significant bias over what I'm about to say. If I say it right, however, the bias shouldn't matter.

I love PHP, to the point where I'm often made fun of. It's more than a gentle longing for a programmer's language of choice, or a carpenter's fondness for his favourite hammer - it's almost fetishized. Writing PHP makes me happy, incredibly so. Even though in my head I say "class dot method" when I'm writing "class->method" that somehow makes it more fun. The disconnect between what's happening in my head and what my hands are doing, what they're instinctively doing just seems to make the whole thing more exciting. I could gripe all day about the common problems with PHP: $needle, $haystack. Inconsistent naming of functions. Admittedly still weak implementation of many OOP concepts. But if I did, I'd only be making a show, because I don't hate these things, nor do I want to complain about them. They're the character of PHP, and it's the character of PHP that I love. I had groupwork for class last term, a smallish to medium sized application that would be fairly simple: implement a berkely db querying system that runs on the command line. Most of my classmates ran for python. Several to Java. A couple to perl. I went to PHP. There's a dirty feeling writing desktop PHP applications. It's scandalous. People disapprove. I loved it.

If you're wondering why I'm spending so much time clarifying my love for PHP, it's because of what comes next. I want to make it abundantly clear what a monumental decision it was to dump PHP, throw my years of work to the sidelines and switch to ruby on rails. The inkling had been in the back of my mind for well over a year. Ruby is the (node.js and all the new javascript backends notwithstanding) startup culture language du jour. All the buzz is around rails and the 0 to application in no time flat that many are able to achieve with it. Couple that with a modern everything-is-an-object language, with syntactic sugar to enable programmer joy and it sounds like an idealist heaven. I'd played with irb a few nights, trying to implement pseudocode algorithms (python), and see what cool shortcuts I could take with the language. It was fun, I enjoyed it, but then it fell to the backburner. I had work to do. I had projects to build. My PHP work demanded me attention, and my attention I gave.

The crucial turning point happened about a month ago now: I was at CUTC Infect, and undergraduate technology conference in Vancouver. The morning keynote was from Zach Holman, at Github, and he was an absolutely fantastic speaker. He talked a bit about startup culture at github, cracked quite a few jokes, stressed the importance of positive reinforcement and then professed his fondness of ruby. Rather ironically, he talked about how he felt when he was writing ruby and rails applications - the tools just melted into the background. He focused on problems and on solutions, not on the keystrokes and clicks and files standing between him and the implementation. I was in awe, and excited about it. This guy, who writes pretty damn fantastic code was talking about a programming utopia that I longed to be in. He stressed the unimportance of technology, how Github uses outdated versions of rails because their version works, so honestly it doesn't matter that they haven't upgraded, as long as they're still making solutions. I asked him for clarification on this point after the presentation, how can you determine what is a technology you want to learn and benefit from, and what is the drivel that you have to filter out to keep from constantly shooting at a moving target. He was a little stumped at this, he said he kind of just knew, that perhaps after using a certain tool or set of tools for long enough you begin to understand what you actually need and you look for things to fill that need.

Clearly, I had a need. I loved to program, and I hate setting up my environment for programming. I hate worrying about servers, and IDEs and config files. I just like to write code that solves problems. I needed my tools to fade to the background. I needed ruby.

The night of the conference Facebook sponsored a Hackathon. My team didn't end up winning, and why we didn't end up winning really isn't the point (collaboration is hard, especially when you don't know your team), the point was one of the problems I had during the hackathon. We were essentially building the Nexus Q, a webservice that would allow connected Android applications to request YouTube videos, then everyone present could upvote and downvote everything in the queue, determining what was to be played. My job was to implement the webservice and frontend. I was still fidgeting from Zach's presentation: I wanted to build this in rails, but I at least had some tact. I knew this wasn't the time. I had next to no knowledge of how to implement things in the rails framework, and an all-night, time-constrained hackathon is not the time to learn a new framework. So I turned to PHP, and started implementing a REST API. From scratch. I didn't pull any frameworks or helpers, or crawl github for something already implemented, I just implemented the webservice because that was what I knew how to do, and dammit I was going to do it. I

It was slow-going. I needed ruby.

I got back from Vancouver both motivated and demotivated. I would have liked to win the hackathon, and their cash prize, and the trip to Facebook but life doesn't always go your way. I was motivated to make life go my way. I was going to learn ruby. I was going to rebuild my sites in rails. I was going to learn this framework and then all my tools would fade into the background, just like they do at Github. Just like they do for Holman.

For about the first half of the month, I was working extremely diligently toward this goal: after my full-time job writing code, I would come home and put in another 8 hours digging through the framework. I would stick my hands in and try to make it work. I used the same method I used when I initially learned PHP: find something I want to do, try to implement it, fail, and then read online about how to actually implement it. Instead of imagining things to implement, I just took my site already built in PHP, and started porting it, page-by-page, feature-by-feature to rails. It did not go well. I didn't often use frameworks in PHP, but at work I write in MVC, so MVC frameworks didn't seem all that foreign to me. Everything in rails seemed foreign though. Rails was so opinionated about everything it did. There was an asset pipeline, and that was how you were supposed to render assets. I spent hours (tens of, maybe?) trying to figure out and deal with a strong_parameters error, that I didn't know existed. Hindsight is 20/20, but I was probably learning wrong. In the moment, however, I just got increasingly more frustrated.

I'm quite belligerent when it comes to developing software. I truly think that programmers are modern-day magicians. We start with nothing, sit down at a terminal and then after some undisclosed amount of time and a healthy amount of "fuck"s, software is born. Out of nothing, we create something that solves a problem or does something cool. I've also learned that when confronted with any problem, given enough time to break it down any good programmer can solve it. It might take years, but it's solvable. You just need time. So I continued my attempts at rails, but to make progress even quicker, I'd give myself a larger carrot.

I try to develop a lot of software in my free time - I love writing code, so it seems like a pretty good use of my free time. Due to this, I'll almost constantly think up new ideas for projects and, in the past, I would have begun building them. However, I was determined to learn rails, so I told myself: "Any project I build, I will build it in rails. Then I'll be able to go from nothing to full applications in no time flat, and the tools will fade away". So I did "rails new SuperRadProject" and "rails new ThisWillChangeTheWorldWhenItsBuilt" each week. None of them got off the ground at all. The combination of the unknown structure of rails as a framework, and the completely foreign syntax and idioms of ruby prevented me from ever progressing very far. And the frustration continued to build.

"How could this be? I've given this all my time and effort and I've barely progressed! It's been a month, and I don't feel any closer!". My backlog of projects only grew and grew until it was uncountably large. I hadn't actually built anything I love since I started this whole rails fiasco. But if only I could learn I would build applications so quickly. The realization hit me when I was talking with the friend with whom I share a VPS. I'd tried, and failed, to set up rails with lighttpd (his webserver of choice), so I asked for help. He tried, and was finding it difficult to do in a way that didn't feel like a hack. It all came over me like a flood: this tool is in my way and needs to be removed. Sure, ruby and rails have some great syntactic sugar and can enhance developer joy, but they are doing nothing for my developer joy. When was the last time I was happy? When I was writing PHP. I don't have issues running PHP on my webserver. I don't have issues with mass assignment of parameters in PHP. And I most certainly don't have an issue with trying to figure out what exactly that block of ruby code is doing when it doesn't have any curly braces or semicolons anywhere. The thing that I realized, probably a month too late, is that I grossly interpreted the message of the keynote. In pursuit of the tool that got out of the way, I shoved all the tools directly in the way. My pursuit of rails wasn't about expanding my horizons or personal development growth, no matter how many times I told myself it was. My pursuit of rails was a juvenille attempt to be exactly like those cool guys at startups who implement things quickly and with joy. I was childishly trying to be exactly like Zach Holman because he told some funny jokes while extolling the virtues of his tool that got out of the way. However, it came full circle: PHP was a language that my hands spoke, even when my brain talked differently. PHP was the language that got out of the way.

I have no doubt ruby is a fantastic language, and may have many benefits over PHP for some. However, it has no benefits for me because after this month I can say that even with all these cool features of ruby and all the questionable things the PHP developers hacked into the language over its years of growth that frankly,  I don't really like ruby. I love PHP. And that's alright.

Thursday, May 2, 2013

SiN CTL Week 1: FGT vs Defiance!

This post concerns the SiN Community Team League. For more information on the league you can visit the SiN Gaming website (you need an account to view things there)

After losing 4-4 (we were dq'd for not enough players) in the pre-season match, FGT got its shit together this week and all showed up to the first match of the season. It's now a single elimination bracket, so everything was on the line this week. All games are embedded below, so you can take a gander at all of them. There will be spoilers afterwards, so if you want to watch, do that before scrolling all the way down.

Game 4 (in two parts)

We pulled out a win! Without going to an ace match no less. This unfortunately meant that our MVP from last week, Buttwolf, didn't get fielded today, but we can put him out next week. It also unfortunately means that I'm still the only player on the team who has pulled off zero wins in the season thus far.

Results are compiled on Sunday and that's when the bracket is advanced, so the next game isn't until next week.


Monday, April 29, 2013

Crayons: FGT Open BETA 1 Prizes

Requested by FXOSirRobin who took third place in the tournament. He asked for a crossover of Adventure Time and SC2. We delivered.
It's been a while since the FGT Open BETA 1 (the second has just come and gone) so this post is much later than it deserves to be, but delays are delays and I didn't want to post this before each of the recipients had received their prize in the mail. Spoilers, and all that. Who wants to see it online before you get to open the real thing in the mail and experience the surprise?

Another one of the prizes went to Zoku, who requested, verbatim: "a marine pooping on an infestor". The Terran in me was happy to oblige this request - my roomate informed me that I was too gratuitous in the depiction - I disagree, thought it was just right.

Expect to see the same for BETA 2, once winners have received their prizes! It's a lot of fun! If you want to keep up with events like these (and maybe even win your own crayon drawing), subscribe to the FGT newsletter and we'll send you and email when a new event is going on, so you can try your hand at winning your very own prize.

Tuesday, April 23, 2013

[FGT] Open BETA 2

Tonight we had another fantastic tournament with the FGT Open BETA! Congrats to LoLliPoP who took away first place. Not to forget the honourable mentions of ProfFrink who took home second, Sheepit who took third and honourable mention DavidtheDude who took fourth place but game an extremely entertaining third/fourth place match (if you only watch two games, watch those).

You can watch each individual cast on youtube here:

Or you can view the whole thing in its entirety on twitch:

Thanks to everyone who came out and tuned in, we'll be sure to do this again soon! To keep updated on events like this be sure to sign up to the FGT mailing list here:

Tuesday, March 12, 2013

HoTS Day 1: Widowmines are fantastic

Hots was released today, and after school I got about sixteen multiplayer games in. I'm not interested in the campaign, I've never even started the WoL campaign; I bought both games for the multiplayer. And after getting a small taste of the mulitplayer, I have only one clear thought about it: this game is awesome.

On the surface, perhaps Blizzard didn't add an incredible amount of content to the game, just a few units per race, but, at least for terran, the entire feel of play has changed radically, for the better. At the heart of this, I think it's the widowmine. The first thing that the widowmine does is gives terran a view of the map that previously only belonged to Zerg and Protoss with Overlords and observers respectively. I can now, spiritually, poop creep on my opponents third and I can see when armies pass certain, arbitrary thresholds on the map. This alone makes me feel so much more in control of the game as a Terran. I can see everything, full units, not just red dots as per sensor towers, and I can put them in any arbitrary location, as opposed to Xel'Naga towers.

Even further on that point, unquestionably my favourite new maps is Neo Planet S. When Proleague first came on months ago I saw Neo Planet S and turned to my roomate: "If this map was on ladder, I would literally jizz myself". Now it is on ladder, and it's everything I've dreamed of and more. The best thing about Neo Planet S is that there are no Xel'Naga's. The second game of HoTS I played was on this map (you can check out the replay here) and even though I played badly focusing on new units and what to build and what to do, I still felt a good deal more in control of the game without Xel'Nagas. The map didn't dictate where I should scout, I dictated where I should scout. And if I don't want to scout, that's fine, it's a choice to keep my units at home for defense, one I can easily justify. Not putting a unit at the Xel'Naga when I can look at the minimap and pull back before it gets me? That's not justifiable: that's bad. And maps shouldn't dictate a way for every player to play on every map - each player should interpret a map different based on race, matchup and playstyle. And that's exactly what Planet S gives us. This map also brought out my love of the widowmine - it seems like this map was designed for the widwomine. There's two common paths to cross the map, the higher and the lower one. Widowmines can go on both of those and help take out pieces of army, give vision. There's metagaming to be played here - will there be a mine there? Should I take a different, longer path? In maps like Daybreak and especially Ohana, there's generally very little  thought into which path one would take moving across the map. It's just take towers, a-move and go. This thought onto pathing on Planet S is such a huge deal in where you should take your third too: depending on where your opponent has shown that he likes to go around will determine where you should get your third. Do you go up on the ridge or on the lowground? Both are roughly equidistant from the natural, but the ridge one could prove difficult if your opponent manages a siege on the lowground between your natural and the third, so a meching opponent would be a count against it. Just the fact that those thoughts now must go through players' heads on a ladder map is fantastic.

And widowmines - sheesh these things seem like they might be nerfed later on but I absolutely love them for defense. I've heard people say things like widowmine drops and army incorporation is great but I haven't been able to make that work for me yet - but what I have been doing is using widowmines in my main to prevent ling runbys/marine assualts or muta flocks flying in. In fact on that very same game in Neo Planet S, I scouted mutas across the map and I had neither an engineering bay, many marines or any thors.

I thought I was screwed, but I looked at myself having about six widowmines and I thought "well, lets see what this new unit can do".

I was fine. But I was only fine because my opponent clumped his mutas up the whole time and biffed some control - and that is how the game should be. If I a-move into banelings with a pile of marines, I deserve to lose my whole army. But if I can split and trade cost-efficiently the game becomes more mechanically intensive and exponentially more interesting. Now I don't feel as bad about overcontrolling my army vs zerg: I know he'll have to do the same with his in my base.

I haven't played many games vs protoss at this point in the game (they've all been Terran and Zerg for some reason), but I'm not sure if I'd want to include widowmines in my main against protoss in the case of warpprism harass. Typically protosses drop in some zealots, usually with charge, in which case the friendly fire from my mines would do more damage than the actual attack would have done. However, I do think that widowmines have a place in holding off gateway aggression (I so intensely want to be able to use mech TvP) - and I'm eager to try that when the time comes, sending out widowmines in possible pylon/warpin paths and seeing what I can get done/what information I can get.

TvT is fantastic now with widowmines because the terran army has to be careful for more reasons than just tanks - the game is a literal minefield. Sending 1 marine ahead of your army just got so much more important (it's something that I always intend to do as it's good practice, but never had enough negative reinforcement to consistently do it - I'm sure widowmines will provide this negative reinforcement. A lot.).

That's how one terran completely stomped me on ladder [replay here](again on Neo Planet S, have I mentioned that I love this map?).

I haven't been this excited about Starcraft 2 for a long time - I hope this isn't just a "it's new" feeling. I hope this sticks, because if this is how I'm going to feel about playing HoTS, I am excited for the upcoming season.

Thanks for reading, if you liked what you saw here at all consider subscribing to my twitch channel where I stream relatively often or checking out the FGTstarcraft clan site I developed. I also exist on Google+

Tuesday, February 12, 2013

Microsoft Phone Interview Experience

Today I had my brief phone interview with Microsoft - it was a relieving experience. I say relieving, because I was fretting over it, when I really shouldn't have been; it went quite well. I'll list some of the questions below so if that's what you're interested just scroll down until you see them, otherwise I'll give you a bit of context for the interview.

I'm currently a freshman in first year computing science, and my only real programming experience started in high school in a Java CS course. However, I did very well in that course, completing the entire three year curriculum in the first three months of my first year in High School. I don't want this to come off as a boast however, because I really don't feel this should reflect on my skill, but on the inadequacies of the content covered in the course--but I digress, that's content for another day's moaning. I spent the remainder of those two and a half years (mostly) playing games and (sporadically) applying my theoretical programming knowledge to the practical implementation of a forum website. Upon graduating, I immediately enrolled in a computing science program where I feel, admittedly, a bit out of place. I was expecting everyone around me to have diverse and extensive personal projects, with coding experience down to when they were 4 or 5 years old playing around in DOS like I read about on the internet. In practicality, these are people who are, in general, average students who got into programming for any number of reasons and often hadn't touched any amount of software development before university. This was a confidence booster for me, as I had personal projects on my resume and they did not - which should make up for my deficiencies where actual years of computing experience completed is concerned.

It should be noted that these last couple months have seen my dive hard into web development (the result of which is and also do some development properly instead of the spaghetti code I had written previously. MVC, TDD, OO and Agile aren't buzzwords anymore; I actually understand what all of them mean and their practical implementations in real software, which I would say was the biggest helper in my interview. In terms of actually getting the interview, Microsoft held a Q&A session with their engineers and PMs about the hiring process and accepted resumes on the spot - that's how I got my in. But on to the actual interview:

The interview was pretty frustrating, honestly. I felt like I nailed some answers perfectly, but my answers to others were wish-washy and poorly thought out. However, her response to each question was and identically toned "Okay, great". Toward the end it actually started to become relatively grating as I almost felt it was condescending and mocking in nature. I know it wasn't, but stress can do crazy things to the brain. At one point in the interview I actually answered a question very concisely and really not up to the spec that the question should have fufilled, but she said "Okay, great" and started to move on anyway. I interrupted and asked "Was that answer sufficient or would you like me to elaborate on it" and she said "Oh please do elaborate". I get that she was trying to be a foil to get my thought process down on paper, but the lack of feedback actually felt like a brick wall at times. I don't recall all of the specific questions I was asked, but I'll try to transcribe the more important and larger ones below:

  • Describe an assignment or project you've worked on and troubles you had in creating it. Outline the solution.
  • How would you test a pen?
  • Explain your method of software development and how to start a project.
  • Explain how you test software.
  • Explain the internet to a kindergarten student.
Overall the questions were pretty standard fare that I'd seen elsewhere on the internet. Just before the interview I actually came across the "explain the internet to a young student" question and prepared, what I thought was, a pretty clever and succinct answer to it. She actually went out of her way at the end of the interview to mention that she'd never heard my explanation before and thought it was pretty good. Essentially what I did is laid out a set of numbered desks with students drawing pictures at them. The desks were servers and the numbers were domain names/IPs. The student could ask to see another students drawing and the teacher would walk over to the desk, take a picture of the drawing and show the copy to the requester. This is the obvious HTTP protocol for fetching a copy of the document. My analogy doesn't really acknowledge that the internet exists outside of web browsers and that there's far more to the series of tubes, but I'm not sure that's relevant to a kindergartener, and I feel I filled the spec of the question pretty sufficiently.

One place that I stumbled in the interview, and I realized it as soon as I was doing it, was in the section where she asked about a problem I've had on a project. I've had my fair share of problems on projects, but often they weren't fundamental logic issues they were fighting with syntax or "it just doesn't fucking work". If I were to give advice to someone going into my same position again it would be this:

  1. Thoroughly understand testing and the practices associated with them, even if you're just applying to be a software developer. While it's more important for SDET, regular SDEs get quizzed - a lot actually - on the basics.
  2. Think about what you've done and present specific examples from code that have given you logic/developmental problems. "It just didn't fucking work" doesn't make a great conversational piece.
I'll hear back from Microsoft, they said, in a maximum of a couple weeks. I'm cautiously optimistic. I think I showed that I have the project work background and the capability of testing my code enough to overshadow the fact that I'm a first-year. Here's hoping.

UPDATE: They didn't offer me a second-round interview.