Pluralsight Review: Practical LINQ

My second Pluralsight course was Deborah Kurata’s Practical LINQ.  I’ve been familiar with LINQ since its introduction in .NET 3.5, but like I mentioned before, I wasn’t as comfortable with it as I could have been because a lot of the Intellisense looks scary.  Admittedly, that’s a pretty silly reason for not learning more about a technology, but I never had somebody explain it to me in a way that really clicks.  Between Skeet/Conery and Kurata, I’m now a lot more comfortable with LINQ.

One of the big things I liked about Practical LINQ is that I was able to see and re-create all of the code on my own.  I now have the full Pluralsight subscription which includes file downloads, but at the time, I was working off of a trial subscription.  But even if I had access to the files, I find it a lot better to type out the code myself—it helps me think about what I’m typing and reflect upon what the writer intends—and I appreciate that Kurata’s examples are that way.

My single criticism of this course is that Kurata talks too slowly.  If I had paid attention to the speed knob, I definitely would have turned it up to 1.5x.

What I’m Reading: Dependency Injection In .NET

I just finished up Mark Seemann’s opus, Dependency Injection in .NET.  This book took a lot longer than I expected and I pretty much skipped his Part IV on various dependency injection frameworks (because I’m using Ninject, which he did not cover).  This is a hefty tome at nearly 600 pages and Seemann goes into great detail on the topic of dependency injection.

My experience with dependency injection coming into the book was nil—in part because I’ve lived on the T-SQL side of the world for the past several years and probably haven’t written a non-trivial application in an object-oriented language this decade—and so I greatly appreciated the first part of the book.  When Seemann described the wrong way of n-tier development, I immediately recognized it as the way I wrote code, and I kind of cringed.  Seemann’s n-tier example included a data access layer, a business layer, and an application layer, and the wrong way had the app & business layers linked to the database layer, and the app layer linked to the business layer.  This level of tight coupling has plenty of problems that I have experienced, but I simply didn’t know how to get around issue.

This is where parts 2 & 3 of the book come in.  Throughout these parts, Seemann walks through “poor man’s DI,” manually writing code to perform dependency injection.  He discusses what a composition root is, where to put the composition root (e.g., the Global.asax for ASP.NET MVC, or the Main method for a console application), how to build injectable objects, and he even spends some effort on refactoring older code to support dependency injection.

I can recommend this book, but at least for me, I needed supplementary resources to understand the topic better.  It probably works great as a detailed manual for somebody familiar with the topic, but if you aren’t, be sure to check out videos on the topic and don’t be afraid to jump around a bit to understand where he’s going.

Did I like Borderlands?

This is a follow up to the piece I wrote a few days ago. I finished Borderlands a couple of days ago, and can now give my unadulterated opinion.

I did, indeed, like Borderlands.

The story did improve some, but it was still hardly anything to write home about. The game didn’t get appreciably harder (the final boss killed me several times, but I quickly sorted out how to beat it). As FPS games go, it’s maybe a level down from Bioshock but above Call of Duty. I’m considering getting the DLCs, but $20 seems pricey. I don’t know if I’d play the base game again — the other characters seem interesting, but I’m not sure how different they’d play. I also have the sequel on PS3 as well, once I’m finished with inFAMOUS 2 and possibly Sleeping Dogs. Oh, I should finish Watch_Dogs at some point too. Don’t even get me started on the Steam backlog I have.

Still, I liked it, and I paid $5 for it. I’ll take that any day of the week.

Pluralsight Review: Mastering C# 4.0

My first Pluralsight course was a doozy:  Jon Skeet (plus assistance from Rob Conery) on Mastering C# 4.0.  This course weighs in at nearly 12 hours, and I watched probably a third of it in total.  I have a pretty fair amount of experience with C#, so I focused mostly on the more advanced topics and the things which came out since C# 3.5.

This is an outstanding series for C# developers at all levels.  I already had some  knowledge of delegates, lambdas, and anonymous types, but Skeet + Conery really solidified that knowledge and made LINQ look a lot less scary in the process.  I have always had some level of trepidation with LINQ simply because the Intellisense looks so scary and generic.  It didn’t help that I also had no clue what Func and Action really meant.  Skeet explained these very well, pointing out that the only difference between a Func and an Action is that a Func returns a value (whose type is defined in the last parameter), while an Action returns void.

I very highly recommend this series, and they definitely earned 5 stars.

Mentoring

Paul Randal has announced that he will mentor six people over a two-month stretch.  The night before he announced this, I had incidentally been watching Jason Alba’s Management 101 and Paul’s Communications:  How to Talk, Write, Present, and Get Ahead! courses on Pluralsight.  Both of these courses covered the idea of mentoring and the importance of finding a good mentor at various points in your career.

I am at one of those points in my career now.  I have spent the past several years establishing my technical chops, and it’s time for me to take the next step.  I can see two different visions of what “the next step” entails.  My first vision is a move into a technical leadership role, running a team.  For most of my career, I’ve been a lone wolf, the only database person around.  At my current position, I am a peer but not really a lead (because we have no database leads, due to the way the organization is structured).  As a result, taking my next step might involve moving to a new company…although I do like where I work, so this might be a tough call.

My second vision is to develop further my voice in the community.  Last year, I presented at three SQL Saturdays, gave a number of local user group talks, and even helped put on the first SQL Saturday in Raleigh since 2010.  This year, my goal is to present at a dozen SQL Saturdays (current stats:  1 down, 2 officially slated, and 9 to go), as well as hosting another SQL Saturday and presenting at various Triangle area events.  I even want to go outside of my comfort zone and looking at user groups tied to other technologies and concepts, like Azure, Hadoop, and analytics.  I may never present at PASS Summit (though do trust that I’ll try…at some point…), but teaching people techniques to help them solve their technical problems is enjoyable and I’d like to develop a reputation as a great teacher.  This means pouring time and energy into building a personal brand and establishing enough trustworthiness within the community that enough people would be willing to spend some of their precious time listening to me.

These visions are not mutually exclusive and I think a mentorship with Paul Randal would help me with both.  I have thought of a few areas in which Paul could provide outstanding guidance, and I’ll list some of them here in bulleted format:

  • I want to work on my presentation skills.  As I watch other presenters, I take mental notes on good (and bad) things they do and try to integrate some of the good things into my own presentations.  I have spent some time reading blog posts about improving presentation skills as well, but being able to ask questions to an outstanding presenter (who happens to be married to an even-better presenter) would not hurt at all.
  • I mentioned above my desire to take the next step with regard to the SQL Server community.  My game plan for this year is to present at more SQL Saturday events, but once I’m presenting across the eastern third of the US and Canada, what’s the next step?  There are definitely steps between SQL Saturdays and TechEd/PASS Summit, but I don’t really have a presenter roadmap.  I’m thinking that getting more active with the virtual user group chapters would be a stepping stone, but I admit that I don’t have a good game plan yet.
  • In addition to presenting in person, I’m thinking about trying to create some shorter-length videos on various topics.  My questions here would occasionally be technical in nature (e.g., recommendations on microphones and editing software), but mostly they would be about the human element.  For example, listening to Paul present at a user group (as he did—remotely—to our Raleigh user group last month), I can pick up some differences in style versus watching his SQLskills or Pluralsight videos.  I’d like to be able to discuss these stylistic differences, improving my understanding of videos as a separate medium from in-person or remote presentations to a live audience.
  • Another avenue I have not really pursued up to this point is writing.  I was fortunate enough to be able to contribute to Tribal SQL back in 2013 and I enjoyed the experience enough that I’d like to continue writing.  I have a few ideas, but I’d love to be able to pick the brain of somebody who earns (some) money writing and ask questions about choosing topics and his writing workflow.
  • Following from my first vision, I would definitely love to discuss how to develop leadership skills.  Leadership is about a lot more than simply understanding the technical details; a lot of it is about managing products under constraints (budget, time, political capital, etc.) and keeping your team members excited and productive.  I have some questions about how to do that, and being able to ask somebody who has run development teams at Microsoft and who currently manages a team of consultants would be fantastic.
  • The last topic I’ll hit here is work/life balance.  I will need to do most of the above on my own time, outside of my day job.  I look at some of the more frenetic members of the SQL Server community and wonder how, exactly, they do it.  In Paul’s case, I see scuba, travel, reading lots and lots of books, blogging, Twitter, work, managing a team of top-shelf consultants, conferences, Pluralsight videos, and giving a lot of presentations.  By contrast, I feel like I’m treading water too many days and I don’t want my home life (i.e., the lovely and talented missus) to suffer as a result of professional improvement.  If there are any techniques or practices I can glean to become more efficient or improve that work/life balance, I absolutely want to know.

These are thoughts I scribbled down while on the tarmac in Cleveland; I think that with a mentorship in place, I could expound upon these themes as well as several more.  To me, a mentor is not someone who tells you where to go, nor even really how to get there, but rather someone who helps you develop the mental tools to figure those things out for yourself.  I know where I want to go and I have some ideas on how to get there, and I believe that getting the guidance of an experienced person at the top of my field could help me considerably in making it to “the next step.”

Weatherstripping Rejuvenated

As soon as I got back from SQL Saturday Cleveland (an event I rather enjoyed), I had to take advantage of the 72-degree weather to work on the Miata.

Today’s mini-project was around weatherstripping.  The weatherstripping on my Miata is old, but not really cracked too badly.  It is, however, not nearly as strong as it was 15 years ago, so I wanted to add a bit more insulation.  Working from this article on how to make old weatherstripping like new again, I bought some poly foam caulk backer and inserted it into the weatherstripping pieces the same as the note at the very bottom.  You only need one bag of this product and you’ll probably have about 12′ of it left over when you’re done.

I needed to find a way to fish the caulk backer through the weatherstripping pieces, and the solution I hit on was to grab a ~3″ screw with approximately 1/2″ diameter and a sharp point.  I screwed the screw into the caulk backer approximately 2″ so that it would stay firm, and that let me guide the foam through the weatherstripping piece so that I could pull it out the other side.  Use scissors to cut the foam (making sure to remove the screw) and you can stuff the insulation material without ripping the weatherstripping pieces.

I have to wait until tomorrow to see if this had any salutary effect.  Ideally, it will reduce wind noise and moderate cold air flow when the top is up, but we will see.

New Series: Pluralsight Reviews

I’ve been doing a number of book reviews lately.  The reason is that I’ve been reading a lot of technical books lately and want to share my thoughts.  Not too long ago, I signed up for Pluralsight and have gone through several of their courses, so I want to give brief reviews of these courses as I finish them.  As such, I’m starting a new ongoing series for Pluralsight course reviews.

Do I like Borderlands?

Largely on the basis of reports of 36 Chambers’ own Kevin Feasel, I spent some time playing Borderlands on PS3 thanks to a pretty fair deal ($10 for Borderlands and Borderlands 2, sans DLC) and I’m honestly not quite sure if I like it or not.

If you haven’t played Borderlands, it’s Diablo with guns. (Or Torchlight with guns, if you’re anti-Blizzard for some reason.) You shoot stuff, they drop loot, you shoot stuff better. Now, Borderlands actually loses something in the comparison to Diablo, because Diablo has an incredibly convoluted mythology and has the whole “demon killing” thing to spice it up. The plot is clearly an important part of Diablo (as it is for all Blizzard games… damn you Brood War for making me cry), and it is just as clearly not an important part of Borderlands.

Don’t get me wrong — there’s charm and style in Borderlands. Some of the dialogue is very funny and the entire game is very snarky. It’s not meant to be taken seriously, and it isn’t. The Tannis audio logs are probably the highlight of the game from a comedic standpoint (although I admittedly haven’t finished yet, so more gags could be forthcoming).

I continue this post with a caveat — I’ve never played the game multiplayer, and I understand that is where the game truly shines. Take that as you will.

The good

— The charm. It’s got a very “Red vs. Blue” style of humor (which is a brilliant show, soon to enter season 13!).

— Easy to play. The initial learning curve is somewhat steep, but you’ll break through it in no time.

— Character classes which play differently. I will say Lilith seems overpowered, but I gather that’s something of an issue with most of the character classes solo.

— Some of the characters are great. Tannis is my favorite, by far.

The bad

— Repetitiveness. So many of the quests are MMO style (“fetch that” or “kill that”) that it becomes boring.

— The combat. Very much meh. It’s typical FPS, and the skills don’t seem to differentiate well enough.

— The RPG element. Weapon proficiencies are tricky to come by, but the skills don’t seem to pay off that well. Too many of them are clearly better than others.

— Bullet sponge bosses. Very few of the bosses have been very challenging tactically. Too many are just beefier versions of existing enemies.

The irritating

— Rewards seem light for some of the quests, and at a certain point, far too much of what you find is useless (which is forgivable) and the stores all suck (which is not). I can’t remember the last time I found something worthwhile at one of the stores.

— I am tired of subtitles continually being disabled. This is a minor nitpick, perhaps, but it’s a nitpick nonetheless.

— Travel is far too inconvenient. The ability to set your own waypoints is badly missing. Fast travel doesn’t give you enough of an idea as to where you’re going unless you memorize all of the names.

— LOADING SCREENS AAAAAAAAHHHHHH

— The shield jerks are jerks.

And yet…

It’s a tremendous time sink. It really is. Unlike some modern games, you can spend as little or as much time as you want to in it. (Usually more than you want to.) The MMO style quests, for all that they do, really do give you a constant sense of gratification (even if the rewards suck). I like open world games that give you the freedom to do what you want when you want. I wish there was more to do in the world, but perhaps the sequel improves upon it.

All in all, to answer my own question, I do like the game. I don’t love it, and if I’d paid $60 for it I would have been mega-pissed. The replay value (for single players) seems limited to how radically different the classes play, and so perhaps I’ll have to wait and see how that turns out. As it is, it’s usually a pretty good time, and I guess that’s all you can ask for.