Announcing: Politics!

Hey everybody! Just a short note here to announce the launch of a new blog. I’ve been thinking about this for a while, and finally decided to bite the bullet and go ahead with politics.andrewletson.com. It’s a sociopolitical blog with the goal of allowing me to write some thought-out posts with a lot of research – and I’m also looking for other writers! In the spirit of promoting an open dialogue on the site, I’ve put out a call for other interested parties to email me and start writing their own content. If I can get that part of it to take off, I’m planning to move it off of politics.andrewletson.com and onto a cooler domain.

Anyway, that’s all for now. More news about life – including peach pies, wedding plans, and shifts in after-work habits – soon!

Dota 2 #TI4 Final Bracket – Power Rank

As some of you may know, I’ve been following The International, Valve Software’s $10 million Dota 2 tournament, fairly closely this year. The final bracket will be played out at KeyArena in Seattle, Washington this coming weekend. There are 8 teams remaining in the tournament, and I’ve decided to take some time and put together a power ranking along with some justification for my picks.

#8 – Cloud9 HyperX

Cloud9 logo

Cloud9 logo

Cloud 9 is a relatively new organization to Dota 2, but they have a lot of scene veterans on their roster. Their ocean-spanning team went through various name changes – playing as Kaipi, RattleSnake.int, and Speed Gaming – before they were picked up by this North American organization. Since then, they’ve competed in many events, but haven’t won a major tournament since their win (as Speed Gaming) over DK at MLG Columbus in November 2013. They’ve already secured their largest prize pool to date by qualifying for the bracket, but they’re sure to be looking for more here. Unfortunately, they’ve got a monster bracket ahead of them. They’ll start in the lower bracket, where one loss means elimination, playing against Na’Vi EU, who stomped them in the group stages, and it only gets tougher from there. In addition, their games in the bubble bracket last week looked really shaky; they escaped LGD by a score of 2-1, only to be stopped cold by DK. It’s especially educational to look at the last game of the day, when DK forced a GG within 20 minutes – it’s a testament to how the team can suffer from tilt as well as an example of how C9′s drafting, while often unique, can sometimes make little to no sense whatsoever. They’ll need to make some serious adjustments to be successful this weekend, especially in these best-of-3′s where they’ve already looked vulnerable.

It’s not all bad news for C9, though. There are definitely some big positives for them – for starters, their players have very high individual skill. bone7 is one of the premier offlaners in the scene today, perhaps most notable for his unbelievably solid Batrider play, while SingSing routinely excels at heroes like Mirana (shoot arrow, hit arrow) and, in the group stages, Meepo (?!). EternalEnvy is, of course, a top-tier carry in the scene as well; I expect to see him performing well and finding farm regardless of how the games go.

#7 – LGD Gaming

LGDAh, the first of the five Chinese teams in the final bracket this year. Dota 2 has historically been dominated by Chinese teams; in 2011 and 2012, they looked untouchable. As foreign teams have come to China to compete and Chinese teams have started traveling abroad more, though, the rest of the world has caught up in the last couple of years, perhaps most notably at last year’s International, where two European teams finished on top of the bracket.

Of course, you wouldn’t have guessed that looking at the TI4 bracket, where no less than five of the eight competing teams hail from China. However, that’s not to say they’re going to sweep first through fifth place; LGD, in particular, has looked quite shaky so far this tournament. They haven’t really been putting up the kind of results that we’ve seen from the other Chinese teams in recent tournaments, and their group stage, where they lost to every other Final Bracket team except for C9, reflects that. They were able to scrape by into the bracket by beating Team Liquid in the bubble bracket, but they then promptly dropped a series to C9, making them the first team in the lower bracket this year.

LGD’s definitely a talented team, but they’ve really struggled in not just this tournament, but other recent Chinese tournaments. They’ve definitely had flashes of brilliance, including their win in the D2L Season 4 at the beginning of this year, but they really haven’t had that breakthrough moment yet. With the field at this year’s International as strong as it’s looking right now, they’ll probably have to keep waiting.

#6 – Natus Vincere EU

Na'Vi logo

Na’Vi logo

Na’Vi’s been a favorite in the Dota 2 scene since they captured the hearts of fans everywhere in June 2011, taking home the $1 million prize in the first iteration of The International over what was then a very dominant Chinese scene. Since then, they’ve been a team of offs and ons, sometimes demolishing their competition and making impressive tournament runs (they placed second at The International in both 2012 and 2013). While it seems like Na’Vi always seems to find their stride in the year’s premier tournaments, they’re going up against a very solid lineup of teams this year. In addition, they had a fairly weak group stage compared to other teams, finishing with a record of 8-7 in Group Stage 2 and then getting swept by Newbee in Group Stage 3. This loss means they will end up starting from the lower bracket, where one series loss will knock them out of the tournament.

However, not only does Na’Vi have a history of making deep runs in the top tournaments despite earlier results, we’ve seen them in situations just like this one before.  In 2012, they barely scraped into the main event bracket, finishing at the bottom of qualifying teams for their group. Despite the shaky group stage, they would go on to take second in the tournament. Their raw stats this year would seem to put them near the bottom of the list for taking the tournament, but the intangibles, as well as past performance on the big stage, give them a boost here.

5. Newbee

Newbee logo

Newbee logo

I had a really hard time with this pick, to be honest. Newbee’s been one of the big powerhouses of Chinese Dota 2 along with IG and DK in the recent months. Their all-star lineup, including former member of LGD and Newbee captain xiao8, 3 former players from TongFu’s 4th place team at The International 2013 (they were the highest-placing Chinese team last year), and former IG carry Hao, has been solid, most notably going undefeated in the Chinese MarsTV Dota 2 League, where they stomped every other Chinese team handily. Keep in mind, too, that those results are less than a month old.

On the other hand, Newbee has looked really inconsistent at The International 4. In Group Stage 2, they dropped games to really strange opponents (Fnatic, Titan, and Empire among them), and looked shaky in some of their wins. They did pick up a win against IG and LGD, but lost to the rest of the teams who qualified for the main event. However, during the bubble bracket, they looked absolutely invincible – they made Na’Vi look silly, and took a very convincing 2-1 series win from IG to qualify for the winners’ bracket. Even so, they’ve got a long road ahead of them; their first opponent is top-ranked Vici Gaming, and that will be a challenge, especially since Vici will be scrimming with DK to prepare for the main event. I wanted to rank Newbee higher, especially after seeing their performance earlier this week, but I just can’t after some more careful analysis.

#4 – Invictus Gaming

Invictus Gaming logo

Invictus Gaming logo

Oh, iG. As we get closer to the top of the list, I find myself having to write more and more about Chinese teams – and with good reason. They’ve shown themselves to be Dota 2 powerhouses both in and out of China in recent months. Invictus Gaming is no exception to this rule, having wrecked their way through ESL One less than a month ago, defeating Evil Geniuses in the finals there. They also won WPC 2014, a mostly-Chinese tournament, demolishing DK 4-1 in the finals.

This is also a good moment for me to talk a little bit about the shift in the Chinese metagame over the course of the last year. When most Dota 2 fans think “Chinese Dota”, they think a farm-heavy, lategame-oriented lineup that can overcome early disadvantages to be unstoppable in long games. To be fair to those fans, this does have some basis in fact – that style of low-risk Dota was how iG won The International 2012. However, interestingly, that perception has become increasingly inaccurate as time goes on, and iG is certainly part of that metagame shift. ChuaN has been an absolute terror in some games as a roaming Mirana, and iG hasn’t been afraid to draft push strats either (although if you want to talk about Chinese push strats, look no further than Newbee, who have had some of the fastest games on record at this International). Couple this aggressive play with Ferrari_430, one of the best (if not THE best) solo mid players in the world, and iG has found themselves in a prime spot to compete for the championship this year.

That’s not all, though. If you look back, Invictus Gaming has been a championship organization for years. In 2012, they took home the Aegis of the Immortal at The International 2, and since then they’ve had a remarkably stable roster with only one player change. They have quite a history of domination that can’t be denied, and that might just serve them well here.

So, given all of this praise, why don’t I rank them higher? To find the answer, we have to look to the bracket. After their (perhaps surprising) 2-1 loss to Newbee in the bubble bracket, they’ve found themselves in the lower bracket heading into KeyArena and will be facing off against LGD. While I don’t expect that to be much of a challenge for them given past results (they’re 13-4 against LGD in 2014), it’s the road they have to travel that worries me. While any given upper bracket team only has to play two best-of-3 series to make the grand finals, iG has to play four, and if they lose once they will be eliminated. With this year’s field as stacked as it is, iG has a lot to overcome if they want to take home the championship.

#3 – DK

DK logo

DK logo

The top three were perhaps the most difficult picks for me. All three teams remaining have really performed well in the group stage, which made it really tough to take a guess where they might end up. I ended up putting DK in rank 3, though.

DK’s been a formidable foe especially in the last month or so, taking three big Chinese tournament wins over Newbee in the finals. They didn’t look unbeatable in those tournaments, but they did look extraordinarily solid. They haven’t just dominated in China, though; in April, they came to Russia and won StarLadder Season 9. They then followed up by taking second to EG in the hard-fought finals of The Summit. Needless to say, they will definitely be a team to watch at KeyArena.

That said, though, they haven’t had the best tournament so far at TI4. In the group stages, they did place quite highly, but they had a very shaky Day 1. They were able to pull it together and claim a top seed for the bubble brackets, and they did end up looking absolutely unstoppable in their 2-0 win over Cloud 9, but that first day still has me wondering.

Speaking of that win over Cloud 9, I wanted to talk about that a little bit. By winning that series, DK did guarantee themselves a spot in the upper bracket, yes. However, once they won the first game, Cloud 9 picked what may have been the clowniest draft yet this tournament. It makes me wonder how those games would have gone had C9 stuck with something a little more normal. I don’t mean to take away from Game 1, because that game showed just how scary DK  can be in the lategame. Burning is perhaps the single best farmer in all of Dota 2, and his tactical mastery of the game is truly amazing.

Even with their rough Day 1, I might still have ranked them #1, if it weren’t for two really key points. First, VG didn’t just beat DK in the group stages – they stomped. The final score of that game was 10-1, and the GG came out within 20 minutes. To go past this tournament, though, DK also lost The Summit finals 3-2 to EG. It was a great series, very close, but they did lose, and that has to speak for something.

#2 – Evil Geniuses

EG logo

EG logo

Going into the final bracket at KeyArena, Evil Geniuses has to be feeling a lot of pressure. They’re the last North American team left in the tournament (unless you count the two Canadians on C9), which means that most of the fans at KeyArena will likely be cheering them on. That’s a lot of hope to put on one team – will the boys in blue be able to buckle down and carry the load?

Honestly, my best guess right now is yes, they certainly will. EG’s solid play and high level of individual skill (including Arteezy’s brilliant mid play and ppd’s unparalleled support on characters like Bane and Wraith King) have really shown through in this tournament so far, and they wound up with a direct seed into the upper bracket. EG has looked near-unstoppable so far, and I don’t see them slowing down. One thing that may hurt them a little bit is the practice with other teams before the main event; I really think DK has a stronger lategame than almost any other Chinese team left in the tournament, so EG needs to be cognizant of that and adjust from practice to the bracket when it comes time to do so.

One thing that really stands out for me is the emphasis that they put on Arteezy. Both North American teams did this to a certain extent: they turned their mid player into a 1 position carry, and using their hard carry as a supplemental carry. It’s worked well for them, too; Arteezy’s had some great games, and mason’s looked amazing, especially in his games as Faceless Void and Brewmaster so far this tournament.

In addition to their results so far at The International, EG’s been playing standout Dota at other tournaments as well. They beat both DK and VG at The Summit, and have also had other good Western results including a win at the D2L Western Challenge and a second-place finish at ESL One Frankfurt. Evil Geniuses is definitely one of the favorites to take home the championship this year.

#1 – Vici Gaming

Vici Gaming logo

Vici Gaming logo

Vici Gaming, like EG, has looked nearly flawless so far this tournament. This actually came as a bit of a surprise to me, as I had pegged DK, iG, and Newbee as the current Chinese powerhouses. Despite that, they stomped through the group stage, posting results like a 20 minute, 10-1 beatdown of DK on their way to the best record across all 16 teams. Their aggressive strategies and great team coordination throughout the entire group stage put them at the top of my list.

However, these results don’t necessarily mean the rest of the tournament will be sunshine and rainbows. VG has posted a lackluster 20-24 combined record against the rest of the upper bracket teams since the beginning of the year. This has been reflected in their recent tournament results – their last major tournament victory was back in December 2013, and since then they’ve been placing 3rd or lower. They’re going to have to maintain their focus and keep playing as well as they did in the group stages to close this one out.

Wrapping Up

There’s a really strong field at The International this year. Any of these eight teams definitely have a shot at taking home the close-to-$5 million first prize, but only one will actually pull it off. Regardless of who wins, though, we’ll be seeing a lot of great Dota 2 at KeyArena this weekend.

Very traveling. Such miles. Wow.

Over the last couple of weeks, I’ve been doing a lot of driving. I’ve been traveling quite a bit recently, and I’ve barely had time to breathe! Still, I’ve had tons of fun and many great experiences.

Traveling to Wisconsin…and more!

Over Memorial Day weekend, Sarah and I drove to a camp outside of Madison, Wisconsin for the Midwest Morris Ale, a gathering of Morris dancers that lasted all weekend. It was about a 15 hour drive, all told, so I was pretty tired at the end of it, but we still had a great time. It was a very full couple of days touring around the Madison area with dancing (and local brews) lasting all night at the campground. I don’t dance myself, but I do play music for the dancers. Usually, I’m up pretty late playing for them, but this year was different. I couldn’t make it even to 1 am! Still, it was a great time; I’m definitely looking forward to next year, if it doesn’t conflict with the wedding.

Morris was fun, but it ultimately wouldn’t last forever; on Monday, we made our way back through Chicago (the traffic wasn’t bad at all – we actually made it through the city with no delay!) and onwards to Michigan. We visited my aunt and cousins there, which was a blast; turns out my cousin Noah is quite a chef. We had a delicious tofu dish as well as a fantastic artichoke dish. (I love artichokes – I just hate eating them! So much work!) I still haven’t gotten the recipe for the tofu dish, but I really want to – it was quite fantastic. Other than the food, it was a great visit; we got to catch up on a lot of things, and Sarah and I were very happy to get to sleep on the futon rather than on an air mattress in a tent. Much more comfortable!

The next day, we got to sleep in a bit, and finally headed out somewhere around noon. We made our way even further north to Bay City, where we met up with our good friend Dan. We had all met playing video games online years ago, and hadn’t ever met up in person – but it was very cool finally getting to do that. It had been a while since we’d all talked, but we fell right into a great conversation that lasted well past the time that we had expected to be back on the road. (This wasn’t necessarily a bad thing! We just couldn’t stop talking!) Eventually, we started driving again somewhere around 7 pm, and headed out towards Sarnia to cross the border. As we got closer, I was getting pretty tired, but we needed to keep going; I had to be back to work on Thursday, and that meant dropping Sarah off in Ottawa on Wednesday. My goal was to get past Toronto that night and find a hotel.

I try to avoid 5-Hour Energy shots, but sometimes I just need to keep driving. However much I dislike using them, they do a wonderful job of waking me up for another couple of hours so I can stay alert and on the road. I grabbed one before we crossed the border, and I figured that would be enough to get us past Toronto, a 3-hour drive. Unfortunately, I was wrong; about 2 hours after we crossed the border, I was completely dead tired. Couldn’t stay on the road at all. We pulled off and stopped at a hotel, where the clerk was nice enough to give us a discount for arriving at 3 in the morning (funnily enough, I had just been thinking about how nice it would be if hotels did something like that before I walked in!). 5 hours later, we were getting ready to get back on the road after a great night’s sleep – it’s amazing what sleeping in a bed does for being rested.

Anyway, we made it back to Ottawa the next day, and after only a couple short hours (unfortunately), I had to get back to traveling – this time, home to Buffalo. I made it, but it was a rough drive; over 5 hours just to get to Ottawa, and another 5 to get home.

Canada again – and Governors Ball

There wasn’t a lot of time until I had another trip to take. The very next weekend, I found myself driving back up to Ottawa – this time, starting bright and early at 3:30 in the morning. It was just a Saturday-Sunday trip, so there was a lot less driving than the last one, and by Sunday evening I was back in Buffalo.

I barely had time to breathe, though, before I was off on another trip – this time, leaving on Thursday evening to drive to New York City for the Governors Ball Music Festival. I was staying with Matt for the weekend, which was nice – we hadn’t seen each other in quite some time. It was great both to get the chance to hang out and to listen to some fantastic music. I also had the opportunity to meet another of Matt’s friends – Vinny, a crime reporter from Philadelphia, who also came in for the festival.

That Friday, the three of us got to the festival grounds a little late, but managed to get there just in time to hear Kurt Vile. Immediately after, The 1975 was playing on the stage opposite, so we moved over there – and that was the point in the day that I knew I had made a great decision to come down for the weekend. I hadn’t heard the band before, but they played a heck of a set. Very easy to listen to and appreciate. It was nice to relax after that set by getting lunch from one of the numerous food booths while listening to Bastille play in the background. Some of the food booths that I visited over the course of the weekend included Porchetta (crispy roasted pork, quite tasty), Phil’s Steaks (genuine Philly cheesesteaks, totally loaded up with meat), L’Apicio (a short rib sandwich to die for), Momofuku Milk Bar (if you haven’t had their crack pie, you really, honestly haven’t lived – there’s another branch in Toronto, which I believe I’ve mentioned before), melt bakery (I had their ice cream sandwich with chocolate cookies and malted chocolate rum ice cream – fantastic!), and Toum (I hadn’t had a shawarma sandwich in months! There aren’t any shops in Buffalo).

It was nice just to wander the festival grounds for a bit that afternoon. Randall’s Island is a pretty big area, and everything to the west of the interstate was taken up by Governors Ball. There were plenty of booths to explore, and it was great to walk around and hear the music from Julian Casablancas and the Voidz. I did end up stopping my wandering for long enough to catch Neko Case’s set, though, which was very worth it. We were close enough to have a great view of the stage, and I could tell that she was enjoying performing. It was quite a treat. After that, though, it was time to get as good a spot as we could for the closing acts of the night; Phoenix played a very energetic set on the main stage, appropriately playing “Love Like a Sunset” as the sun went down, and then it was time for OutKast.

I’m not a rap fan, and I’m certainly not an OutKast fan, but even I could appreciate what I saw – they really brought it for that night. It was a tight, high-energy set, and the crowd responded wonderfully. I was a bit dehydrated, so suffered through a headache, but I still found myself singing along to songs like “The Whole World” and “Roses” near the end of the night.

Saturday was even better; even though it was quite hot out, I stayed a lot better hydrated. We split up a bit more than we did on Friday, and I caught great performances from Fitz and the Tantrums (they’re just as good live as they are recorded – such great energy! They really got the crowd into the music, which was great), Disclosure, and The Glitch Mob before making my way closer to the main stage to hear The Strokes‘ set. They were great – played all sorts of songs that got the crowd pumped up, and finished off their set with an encore of – what else – “New York City Cops”. That wasn’t the end of the day, though – before catching Jack White’s headliner show, I stopped by to listen to Sleigh Bells, a band that I hadn’t heard of before. I was quite impressed with their set, but once it was over it was time to go see Jack White, the artist that I had most been looking forward to that day. I wasn’t particularly close to the stage, but I could still hear great. He’s really a musical talent, and it showed at this performance – getting to hear music from his White Stripes days all the way up to new songs from his new album Lazaretto (which, as my friend Drew showed me, is a work of art in and of itself) was really neat.

Finally, Sunday rolled around, and it was time to finish off the festival. We got into the island a bit late, but were in plenty of time to get great spots for Frank Turner. It seemed like there weren’t as many people there as there were for some other acts at the beginning of the set, but the crowd picked up fast, which was a good thing – he played the cleanest, most high-energy, most involved set (in my opinion) of the entire festival. The crowd really responded well, and even managed to work in some “advanced crowd moves” (as Mr. Turner put it) on “Recovery“. Absolutely a great way to open up my last day in New York City.

After that set, I wandered for a bit, sitting back on the grass to listen to The Head and the Heart. The next act up on the main stage was Foster The People, which I wasn’t extraordinarily excited for – still, I managed to get pretty close to the stage (although still back a few rows from where the rest of my group had set up camp). Although I wasn’t expecting much, I was absolutely blown away by the energy – one of the drummers, especially, was really into it. I honestly think their concert was far better than the cuts of the same songs on their albums. Plus, they brought out Spencer Ludwig, the trumpeter from Capital Cities, which was really awesome. I think he really added a lot to the songs he played on. It was quite a busy crowd for Foster The People, but it was nothing compared to the hour and a half of standing before Vampire Weekend started their set; everyone was packed in like sardines. I barely had room to move my arms. The crowd surged forward when the band came out onto the stage – I actually ended up extraordinarily close to the stage. It didn’t seem particularly safe that everyone continued to try to push forward, but hey, who am I to judge, right?

Vampire Weekend was an amazing band with which to cap off the weekend. At the end of the show – and after 3 encores! – Ezra (the lead singer, for those who don’t know) stepped off to the side of the stage and threw a fistful of $2 bills over the crowd (“for luck”). Amazingly, I actually got one of them! I’m not sure what I’m going to end up doing with it, but still – it’s a great souvenir to have brought back from Gov Ball.

Finally Home

After all of that driving, I ended up putting a total of over 3600 miles on the car in only three weeks. Needless to say, it was nice to have last weekend off – the time to relax was much needed! Since I’ve gotten back, I’ve taken the time to work on a few other projects on my plate, most notably FastInviter – which I’ve completely finished up at this point. I’d definitely urge you to check that out; I’m very proud of the work I’ve done on it! I’m actually planning on writing a sort of “development post-mortem” on my process for that soon where I talk about my process and how it’s evolved, as well as the lessons I’ve learned, so be sure to check that out when I publish it!

Installing Apache 2.4 with PHP 5.4 on CentOS 6.5

Recently, we were looking into how to install Apache 2.4 and PHP 5.4 with PHP-FPM on our CentOS boxes, as PHP 5.3 with Apache 2.2 was feeling a bit outdated. Since CentOS 7 isn’t quite out yet, we put together a process to install these on our CentOS 6.5 servers.

The process is a little involved, but it really works well. You can find it after the break. Special thanks to Geekpeek for providing prebuilt Apache 2.4 RPM’s for CentOS!

Keep in mind that I tried to write this guide to be as accessible as possible, but it does assume some level of familiarity with command-line Linux.

Continue reading

The ring I proposed with

My busy life this spring

I really have been meaning to get back into the swing of things with blogging for a few weeks now; unfortunately, I haven’t had the time, between work and my off-work-hours projects like FastInviter or one of the things I’m working on with Matt. Plus, I’m starting to pick up some new technologies – recently I’ve had cause to look into both nginx (for hosting) and Laravel (for a PHP framework), so I’ve been kept on my toes trying to figure everything out. Although it’s been a very busy time, it’s been fun too.

One nice thing about this looking into new technology is that I’ve gotten a chance to get back into XenServer a little bit as well. Recently, we’ve been looking into doing high-availability VM’s with XenServer pools, and that has been really cool. One of the recent big pushes has been for us to look into virtualization, and getting to dig even deeper than before into what XenServer can do has been really nice for me. In our test environment, we’ve got two servers in a pool and a separate NFS datastore – and it’s all working together really well. I’m excited to see where that takes us.

FastInviter has been going pretty well, too. I’ve been so busy that I haven’t had a ton of time to get things going with it, but I did manage to finish up the management interface, so if you’re interested in taking a look at that it’s still live and being developed. I’m hoping to have the entire project finished by the end of the month, time permitting. It’s got an SSL cert on it now, too, so if you’re interested in cool stuff like that, I really recommend checking it out. (I got the cert for free through StartSSL – I’m keeping it with them for a year, but the revoke/rekey fees scare me. Still trying to decide whether I want to move to a more traditional cert provider or not).

That about wraps up what’s new with tech, but my life’s been really busy recently as well. I took a nice trip to Toronto this last weekend to spend some time with Sarah. We had a lot of fun on Saturday – visited Momofuku’s milk bar to buy some pie and cookies that morning (thanks to Drew for telling me about it!), but not before we had made it to the Chapters bookstore nearby (we had gotten to Momofuku a bit before they opened, so had to do some wandering). As it turned out, that Chapters was going out of business, so they had huge discounts on everything – I walked out with 3 brand new, hardcover books for a total of less than $10 – I paid only 47 cents for one of them!

Sculpture outside Momofuku

There’s a really cool sculpture outside Momofuku. It goes all the way up the building!

That evening, we had a fantastic dinner at Donatello – it was honestly the best Italian food I’ve ever had. I wouldn’t recommend it if you’re on a budget, but the server was amazing and the food was great as well. We both had stuff from their nightly list of specials, so I can’t really recommend any of their menu items specifically, but it was still really tasty!

I would be remiss if I didn’t mention our short excursion to David’s Tea. It’s a really nice tea shop with tons of different flavors – plus some wonderful tea accessories. I ended up getting a teapot and some cups (they came as a great bundle deal) as well as a nice cup of Chocolate Macaroon tea. It was just as tasty as it sounds – and it’s also their tea of the month online, so probably a good time to grab it!

Finally, we capped the night off with some poutine from Smoke’s Poutinerie. We ate it out in Yonge-Dundas Square – less than a block from our hotel – and enjoyed the lights in the square.

That was the point in the night at which I proposed to her.

It's a ring. Not sure what else to say! :D

It’s a ring. Not sure what else to say! :D

I think Sarah immediately said something like “Are you serious?” Then she said yes, which, of course, made me really happy – the best moment of my life to date, honestly.

Sarah told me today that happiness was sitting in the square, sharing some poutine, and getting proposed to. We agree on a lot of stuff, but that’s one thing I disagree with her on – happiness has gotta be hearing her say yes and getting to slide that ring on her finger. There’s no other word that can describe that.

Anyway, that was Toronto. We’re gonna try and cross the border next weekend, now that we have a list of documents to get together, and hopefully everything will go well there. I’m hoping for the best – we’ve got plans to go to the Midwest Morris Ale at the end of this month, and I’d hate to have those thrown off!

Life’s been pretty good this month so far, and I’m excited to see what the rest of it brings. So far, as I was getting ready to post this blog, I found out that I was awarded Employee of the Month at Mainstreethost. That was a very exciting thing for me – I love my job there and I’m excited to do more there. I’m also looking forward to seeing Sarah again next weekend. Even if the border guys don’t let us through (although they should, with the amount of documentation we have), it’s a wonderful thing to get to see her.

Anyway, it’s getting late here, and I have work in the morning. Another busy day ahead of me, but that’s okay.

Putting the “fast” back in FastInviter

As you may have heard, I’ve been developing a new tool recently. It’s called FastInviter, and is publicly available at both its website as well as in a GitHub repository. I’ve been having a lot of fun developing it, but I hit a big snag along the way that made it seem…well, more like SlowInviter, to be honest. I wanted to talk a bit about that snag and how I managed to keep FastInviter running speedily.

Finishing Last in the Relay Race

A few days ago, I was working on email integration for FastInviter. Basically, I wanted the system to email someone when they created their events. Due to my Internet plan, unfortunately, I couldn’t send email locally – the IP address showed up on some spam blacklists, meaning that if I tried to send to, for example, a Hotmail address, I got an immediate bounceback email saying that the spam filter rejected my mail. I tried adjusting my domain’s MX record to allow my server to send, but no dice there either. The last option I had was to send through another company’s SMTP servers.

One of the nice things about CodeIgniter, the PHP framework I use, is that it’s very easy to configure relaying mail through SMTP, even with encryption (I manage my email through Windows Live Domains, and the live.com SMTP servers require TLS encryption). I got everything set up in CodeIgniter, added an MX record to my domain so that the live.com servers could relay mail for me, created an event (an action set up to trigger an email alert), and…

waited for forty seconds for the page to load. Finally, it timed out, telling me that the remote server terminated the request. Turns out it was just taking far too long to talk to Live’s SMTP server, so the email I was trying to send never even made it out of my network. Relaying using CodeIgniter seemed out of the question.

Catching Up

I didn’t really know what to do at this point – I had pretty much exhausted all my avenues of delivery, at least that I could think of. I even tried having PHP handle the whole process without even getting CodeIgniter involved, but that led to more errors and timeouts. I had almost given up, but decided to try one more thing – setting up a SMTP server on my local server as I originally planned, but instead of sending out emails directly, instead using it as a relay to send my mail to the Live.com servers.

My IIS 6 SMTP server

Despite running on Windows Server 2012, I find myself still using IIS 6.0 for SMTP services. I mean, yes, it works, but does anyone else find it strange that we’re using something from ages ago for this?

The procedure for doing so is a bit interesting. I configured my SMTP server as I would normally (set it up as a relay only for local mail, point it at the right directory, so on and so forth), and then went into the “Delivery” tab. In here, I had to set up the account that I had created for FastInviter to send via the Live.com server, enable TLS encryption, set the TCP port, and then add smtp.live.com as a smart host. By doing so, I basically told my server “hey, if you get mail that you’re supposed to be sending, just relay it to Live.com with the provided credentials.”

Configuring a smart host for FastInviter

In the “Advanced Delivery” option, just add the SMTP relay in as a smart host.

Now, the path of an email should be, as I saw it, initially getting sent from FastInviter, being received by the local server, and then getting relayed through the Live.com SMTP server. All that was left was to test it.

Speeding FastInviter Up

The test worked better than I had ever dreamed. FastInviter was loading in under a second. Having email routed locally first meant that there was no delay between the email being sent and the email being received by my server in order to relay it – any delay would be handled on the back end, where the end user wouldn’t even see it.

In addition to that, all of my problems connecting to the SMTP relay at Live.com were resolved. Having the connection handled through a local SMTP server simply made everything run way more smoothly. Combining this with my already-fast page load times made me feel like I was ready for anything.

FastInviter's speed on GTMetrix - a 0.65 second load time!

0.65 seconds on GT Metrix. It doesn’t get much faster.

Crossing the Finish Line

I know there’s more I could do to speed things up with FastInviter. For starters, I’m still using CDN hosted jQuery and CSS – if I bring those down and host them locally, eliminating external connections, I should be able to make the site even faster. My major concern right now is how it’ll behave once I get a bunch of events and guests going at the same time – how will the system handle that? Will my database server be able to keep up with the load? (I’ll be doing another post soon on my network architecture and how my DB server is set up). Either way, FastInviter has so far been a very fun project, and I’m looking forward to solving those problems if they do end up materializing.

Helping Out

I’ve taken steps to solve the problems outlined above, but there’s always going to be something new to improve. FastInviter has a live GitHub repository; if you’re interested in helping out, feel free to make changes and file a pull request! It’d be really cool to see some collaboration start cropping up on this project.