Locker Room Talk

I love boobs. I love talking about sex and sharing a nudge and a wink about that hot guy or girl that just walked by. When my friends and I gather around the firepit and drink a few beers, we inevitably chat about who and what we find attractive. Of course we do. We’re human and if we didn’t find other humans attractive the world would be a very sparsely populated place. With the rainy season starting now I’m loving how the fall fashions are coming out. It’s boot season people. Woohoo!

What we don’t talk about around that firepit after a few beers is sexually assaulting people. Because it’s fucking wrong. We have never had a fireside chat about how we grabbed someone by the crotch or tonsel-jockeyed them out of the blue because it’s fucking wrong, and we’re not scum-sucking shitbags. I know we’ve never talked about this because if we had then my friends and I would have had a very awkward conversation that would have likely led to us not being friends anymore. Because it’s fucking wrong.

I’m hugely sex positive. People are beautiful and sexy and hot (and they’d better be because as a society we spend more on clothes and makeup than we do on essentials). We glorify sexuality at every moment in adverts, on magazine covers, and in ourselves when we dress up in our best stuff and head out on a date. I admire and celebrate the wonderful and beautiful guys and girls out there and I’m so glad they exist because what the hell else would we talk about over beers around the firepit if they didn’t? What we don’t talk about is sexually assaulting people. Because it’s fucking wrong.

What Mr. Trump said was not “locker room talk”. It was the confession of a man with wealth and power explaining how that power granted him immunity to violate the rights of human beings more beautiful than him who found themselves in his service or even just in his proximity because of their lack of wealth and power. The saddest part is that he is not alone. I honestly don’t give a fuck about Trump. There is little he could do that would surprise me or lower my opinion of him in any way. I’m very tired of talking about him. I’m very tired of reading about him. I’d rather forget he exists.

What I do care about is the enormous number of people coming out and saying that this is no big deal. It is a huge fucking deal and a conversation we’ve needed to have for a very long time. Sure, Mr. Trump got caught on tape saying something we all knew was happening anyway (Google “Trump beauty pageants” if you didn’t). I’m not surprised about that. I’m amazed and outraged at the number of people trying to brush this off as no big deal. On the one hand I wish that tape had never surfaced because now 40% of the USA feels the need to justify his actions in order to defend their candidate. On the other hand I’m really glad it surfaced because this is a conversation that we’ve needed to have for a very long time.

Please don’t let this terrible charade of a political process sweep non-consensual sexual assault under the table as a non-issue. It is a really important topic that we need to address. Sex-positive conversations about how humans are gorgeous and beautiful and wonderfully attractive to each other in a myriad of ways is wonderful. Talk about your hot friend or that person you saw walking down the street. Admire the work they put into their presentation or the fabulous way they walk. Finding people attractive and talking about it with your friends is healthy. Physically violating another human being or using power and money to cover up a felony is not healthy. Sexual assault is horrible and wrong and leads to millions of people being terribly scarred for the rest of their lives. Please don’t confuse a fireside chat, a lunchtime chit-chat, or locker room talk with direct physical assault. I beg you.

Walks in the Park

One of our favorite family traditions are our weekend morning walks. Every Saturday and Sunday, Meaghan, Rowen, and I get ourselves out of the house right after breakfast to take advantage of the lovely early morning weather and the best part of the day’s energy. Rain or shine we can be found doing loops of our favorite local parks and nature reserves.

This morning we had a lovely time at the Tualatin Hills Nature Park.

Terrible Experience with Frontier Communications

After moving in to our new house, Meaghan and I of course wanted internet service. Having heard some positive things about Frontier, and enticed by their 150/150 FioS service we decided to give them a shot. What transpired was an awful experience spanning over two weeks and involving over ten hours of wasted time. The installation didn’t ever get completed.

It all began with a rather normal phone call to their sales department. I described the services we wanted and we scheduled a date for installation. I was a little disappointed at the nine-hour service window, “we’ll be there somewhere between 8am and 5pm”, but they agreed to come on a Saturday so we just resigned to being home for the day.

First Failed Install

The technician never showed up. We got a phone call on Saturday morning indicating that there was a problem with our order. Apparently the salesperson reactivated service for the previous homeowners instead of setting us up as a new account. An hour on the phone with a customer service rep and we had a new installation date of Tuesday. We’d now been without internet service for a week. Tuesday was another nine-hour service window, but Meaghan kindly agreed to be the one to stay home.

Second Failed Install

At around two o’clock we got the phone call to say that the tech was fifteen minutes away. Unfortunately, upon arrival we found out he was the wrong kind of tech. Apparently he can only do copper cable service and since we’d ordered their optical fiber FioS service there was nothing he could do. He confirmed that the order clearly stated fiber optic service, gave some story about dispatch making a mistake and drove away.

I then spent the next two hours just trying to get in touch with their customer service. I was bounced between three different departments each with a twenty minute hold period. The last person I talked to explained they couldn’t help me, said they would transfer me to a fourth person. I was cut off during the hold while being transferred. That’s when I took to twitter:

It turns out that @AskFrontier actually wanted to help. Unfortunately they clocked out shortly after 4pm PST and said they would continue in the morning. By now I was pissed, and I made it pretty clear:

Fuck these guys. Seriously. They are a terrible company to work with. I spoke with “Bill” the next morning (when he finally actually called me back) and basically told him to scrap the whole order.

The conclusion is that we called ComCast who sent out a technician and had us up and running within 24 hours. They arrived ten minutes into the one-hour window of 10:00-11:00 as promised and were thoroughly professional. Very well done, Comcast.

What could Frontier have done differently?

Everyone makes mistakes. I understand that. However, here is a company that has screwed up our order twice and instead of going the extra mile to help us out basically pushed us off as though they didn’t care. On the Tuesday where the wrong tech showed up and I wasted half of my afternoon on the phone, all they would have had to do is either call me back right away or send out a technician that evening. Pay the guy for an hour of overtime, get us some fiber service and you’ve won a customer for the next four decades. Instead they treated us like garbage and I won’t forget it. If you ever ask my advice about whether to work with Frontier on anything, immediately assume that my answer is NO.

Feedback as a Sales Opportunity; A Despicable Practice

Frontier contacted me this morning to ask if I would complete a survey reviewing the service we received. To add insult to injury they used both the email content and the landing page for the survey as an opportunity to up-sell new services. I had to close two pop-up overlay dialogs just to get rid of the ads for new service that were thrust in my face. Seriously, fuck these guys.

Here is the content of the review I submitted:

I had a terrible experience. Two failed attempts to do an install.

Attempt #1: Order was entered wrong by sales. Instead of adding us as new customers, they instead reactivated services for the previous house owners.

Attempt #2: Wrong technician was dispatched. Copper technician came for fiber install.

Both days completed wasted due to an 8 hour install window with only 30 minutes notice of arrival.

Wasted many hours with customer support on the phone, on email, and over twitter:

Complete waste of time with this company. Would not want to ever work with Frontier again.

ComCast completed the install for us within 24 hours, with a one hour install window. Wanted to give Frontier a chance but got to say that their terrible customer service made ComCast look amazing!


I had a terrible experience that left an awful taste in my mouth. I in no way felt special in my dealings with Frontier and they have soured any relationship we might have moving forward. I would highly advise anyone working at Frontier with a vested interest in their future to review their customer support, sales, and dispatch service departments. They need a lot of work.

New Job, New House

I didn’t get a chance to post this yesterday, so I’m going to do so now. As an addendum, my first day with CrowdCompass went great. I was so busy and by the end of the day my brain was so full that I just zoned out on the ride home. Met a ton of great people and absorbed a large amount of new information. More fire-hose drinking today, I think.

We sign away out house this evening. I’m going straight to the broker’s office from work. Then it’s just a matter of a few days before we sign the paperwork for our new house. It’s all moving very quickly, but I’m happy to report that everything continues to go smoothly.

from yesterday:

This morning I’m riding the MAX downtown to start my first day at CrowdCompass. I’ve had a gret few days to unwind and relax since I left ARRIS. I enjoyed spending a few days with my family, reading books, playing games, and generally just unwinding. Of course with the pending house move and a desire to study up for my new job it hasn’t all been leisure and play, but sufficient to help me feel relaxed and ready to go.

The house move is coming along well. We’ve passed both inspections and appraisals now. All that remains is to sign the closing paperwork and move all of our stuff. We’re hoping to be all moved in by the middle of June. It has been an enjoyable process so far. We’ve encountered very few headaches and been fortunate enough to avoid most of the pitfalls buyers and sellers seem to run into. I think we read the market pretty well and I felt a lot more prepared this second time around.

The new house is beautiful. Both Meg and I are very excited about the location. It is very close to a number of greenspaces, some great schools for Rowen, and still provides a good commute downtown for me. We have gained a great yard with plenty space for Rowen to play, and a nice outdoor grilling space where we can sit and enjoy some outdoor meals this summer.

On the inside there is enough room for us all to create the living spaces we would like. Meg will finally get a dedicated craft and art room and I have a lovely adjoining space for my piano. It’s a great win for us and we’re very excited to move in and get settled.

The new job is going to be a great challenge for me. It’s in an entirely unfamiliar technology stack. I’ve worked most of my career on Windows in the Microsoft suite of software development tools and technologies. This is in completely the opposite world. I’ll be developing in linux and on a MacBook Pro in Ruby, Go, Python, Java, Android, and iOS. Rather than the Azure cloud host I’m more familiar with it will be hosted with Amazon Web Services. While this may seem like an odd move, I’m completely excited to start developing in a completely new suite of technologies. Many of the fundamentals transfer in their entirety so it’s not like I’m starting completely from scratch and I’ve already come up to speed on some of the new stuff in just the few days I took off between jobs. Cloud principles between Azure and AWS are very similar and both Ruby on Rails and Web API host REST web services in similar ways. There will be a lot of learning around frameworks and best practices but I’ll come up to speed quick enough. I love learning new things so the excitement alone of diving into something I don’t know will carry me through.

The new commute will take a little getting used to. I was used to a 15-20 minute drive to ARRIS. This new ride will be about double that but the majority (30 minutes) will be on public transport. I’m hoping to capitalize on that time to get some work done and perhaps even write here a little more often than I have been. :)

I have some work to do yet on determining which MAX station I want to catch the train from. While the stations closer in take a little less time to get there, by catching a train a little further out I have better options for parking and a better chance of getting a seat. I’ll have to experiment with different stations and routes to see what works out best and might just change it up once in a while to keep some variety in there.

One option I’m curious about is riding my bike to the Sunset Transit Center. I’m nervous about leaving my bike at a public transit garage, just because I’d hate for it to get vandalized. I’m also nervous about the fact that I’m not eighteen any more and don’t have the same stamina I used to have. It would be about a five mile ride, which isn’t that far on a bike but is still a fair slog compared with the cushy “drive everywhere” lifestyle I’m accustomed to. I’m sure if I just slogged through it for a few weeks that I’d get into the sort of shape that doesn’t consider it to be a slog. I’ll have to test out the route and see how many busy roads it involves. I’ll be much more inclined to consider it if it’s on backroads more than busy highways.

Vacation (kinda)

I took a few days off between Arris and starting with CrowdCompass. Since we’re already planning to travel in July and are just finishing up buying a new house, we didn’t plan to go anywhere. I’m just taking the days to unwind a bit, help around the house while I can, and study up for my new position. I’ve got a stack of books on my desk that I’m slowly working through and I’m practicing on my Mac and Ubuntu machines to get my linux muscle memory back a bit. I’ve used them in the past for development, but it’s that day-in-day-out twitch memory that will take a little bit of time to come back.

In addition to the OS I’ve giving myself a primer on Ruby, Python, and AWS. All technologies I’ve poked at in the past, but areas that could also use some refinement and practice. It’s rewarding to be learning new things again and I’d forgotten the fun of just building basic algorithms in new languages.

Tomorrow will be my last day before I start fresh with the new job. I’m feeling fairly well prepared and ready to go. Never seems like long enough when you take time off though. I could always use “just one more day.”

Rowen has enjoyed me being here a bit more. We’ve got to spend some time together during the days and go out on a few more family dates than usual. I’ll likely be busy for these first couple of months while I get myself established in my new role so it’s good for us to get to spend a bit of time together now.

Heading in a New Direction

Four years ago when I joined Arris it was at the beginning of a turnaround. While the corporation itself was a behemoth, the group I joined contained only a handful of people. Since then I’ve watched it grow to more than a hundred people spread over more than ten sites across three different continents. I’ve learned lots of new technologies, met a ton of great people, and made several solid friendships that will live on long beyond my tenure. I helped deliver two solid cloud-based solutions that have the potential to drastically improve the experience of the individual cable subscriber over the coming years.

However, all things come to an end and so it is with my time there. A lot has changed since I joined and for the last few months I’ve felt that I needed to make a change. I’ve always believed that if you aren’t having fun with what you’re doing then it’s time to change something so I updated my resume and began the process of getting myself back into the market.

Portland is a great town and it didn’t take long at all before I was knee-deep in conversations about several exciting opportunities. I can safely report that the technology industry here in town is alive and well. I had the privilege of touring several great workspaces, meeting their teams, and learning about their business, and I thank everyone I met for taking the time out of their schedules to entertain the possibility of me joining their teams.


I am now proud to announce that next week I shall be starting a new career with CrowdCompass.I had a phenomenal recruiting experience from start to finish and the more I learned about their business and their people, the more I got the sense that this was absolutely the right move for me. CrowdCompass provide turnkey solutions for event management backed by cutting-edge apps for modern mobile devices. As soon as I saw the offering I could see the value it would have added at several events I’ve attended and my brain soon started seeing the possibilities for new ways it could be extended even further. I’ve got new technologies to learn, a new team to meet, and I couldn’t be more excited to get started.

I’m taking this week to unwind, relax, and prepare myself for my new role. I’ve got a stack of books to read, a backlog of professional snooker to watch online, oh and a house move to plan (did I mention we bought a new house, too!) so it should be a nice relaxing few days. More to come on the house. For now, I’m excited to tell everyone about my new professional role and live in that special space “between jobs”.

Open House Weekend Away

We listed our house for sale on Thursday this week. In just three short days we’ve had a fantastic amount of activity. Our realtor, Sara Gray, has been superb in helping us through the process of getting our home ready for sale. She recommended hosting an open house on both Saturday and Sunday afternoon for which Meg, Ro, and I packed up the cats and checked into a luxury hotel in downtown Portland. While a train of people have been busily viewing our house, and hopefully preparing massive cash offers, we’ve been enjoying the sights and attractions in the city. The hotel have been incredibly welcoming of our two cats, Dougal and Lucy, and even added their names to their greeting sign out front. Shortly after check-in they delivered a pet bed, a cat toy, and some other useful pet maintenance items. Much appreciated by two travelers who have just spent a few hours in the car with two crying cats and a three year old. Our arrival reminded me how much I appreciate both valet parking and bellhops.


Friday night was capped with a great meal at Rock Bottom. Within walking distance of our hotel, Meaghan and I took the opportunity to enjoy a few well-earned drinks (well, we think so!) while superstar Rowen ordered a build-your-own ice-cream sundae. We pretty much collapsed into bed right afterwards. The cats weren’t exactly happy to be in the bathroom all night, but it was a big improvement over their mini-jail-cell cat carriers and Lucy quickly appreciated the cat bed that the hotel loaned to us.


We started Saturday morning with breakfast at Mother’s Bistro where enjoyed pancakes, bacon, and hot cocoa. Definitely the start to the morning that we needed. We had a big day of adventure ahead of us. Since Rowen had never been to OMSI and since our hotel was just across the Hawthorne bridge we decided this would be a great opportunity to introduce her to the joys of the Portland science palace. Drink up that hot cocoa baby girl and prepare for your mind to be blown!


OMSI was full of its usual magic and was magnified more so when viewed through Rowen’s fresh perspective. One of our favorite areas was a sand pit that used a clever combination of a camera and a projector to overlay a topographic display upon the sand. The camera sensed the depth of the sand while the projector lit the surface with an accurate topographic representation. Digging valleys and piling sand into mountains, caused the topography to update in near real-time. Rowen very quickly understood the actions necessary to create islands, bays, and finally, as a special project, her volcano.


Our Planetarium show, Laser Robot Rock, was a brand new experience for all of us. I’d actually expected the explore-the-universe style shows that I’d seen there in the past, whereas this was a laser show accompanied by kid-style techno music. Not what I’d gone in hoping for but we had a good time nonetheless. Rowen was just thrilled to be there with us and was pointing out every time a new color or animation appeared on the huge overhead dome. We definitely have to go back for the moon and stars one though, if not just for me but because I spent most of the morning preparing Rowen for what she was going to see and now I feel I should really deliver. Oh, and yeah, because it’s my favorite thing at OMSI. That too.


A few hours later and we were pretty worn out. Time to head back to the hotel and rest for a bit. Our suite was very comfortable and provided ample space for us each to have our own area. Rowen invented a game wherein she could only step upon the orange hexagons found in the carpet design. Every few tours she would stop and dance in the mirror. She’s such a happy kid. The cats weren’t quite as in love with their accommodations, but given the alternative of sitting in their pet carriers while we drove from open house to open house it was certainly a tolerable option. Fortunately they both adapted fast enough to use the litter box right away and didn’t create any messes for the whole weekend. Thankful for little wins here.


Rowen’s sofa bed actually turned out to be more comfortable than our master bed. You never know what you’re going to get with a +1 sleeping arrangement in a hotel room but the Hotel Monaco knocked it out of the park. Rather than using the sofa cushions for the mattress, the entire base of the sofa folded out similar to the sleeper sofas in hospital postnatal care rooms (for those of you who have had that experience). Excuse the messy bed in the shot below (sorry, Meg). Didn’t take the chance to capture this first night and checkout came around far too quickly this morning.


Tonight as I type up the tales from our adventures I’m eagerly awaiting a call from our realtor hoping for good news about an offer on our house. We’ve had various snippets and updates from Sara as the weekend has progressed but we’re just now at the point where we need to decide. Last I heard we had a solid offer for a few thousand over our initial asking price. There have been rumors of a larger offer in the wings, but so far no confirmation. I’m happy to see that we got so much activity and honestly I’d be happy to get our asking price. That said, I’m understandably a little nervous. This is a big life decision and not one we undertake lightly. Fingers and toes crossed for good news!


Progress towards the core

This shot of the galaxy map shows my progress towards the galactic core. The red icon marked Ida Dhor shows my home base in populated space, whereas the blue marker indicates my current location in the galaxy. I’m guessing I’m about a third of the way there.

If I were to take a direct route without any sightseeing I could probably make it in another week or so of play, but where’s the fun in that? With the sort of distractions that require investigation in a galaxy so filled with wonder I’ll be lucky to make it before the end of April!

Learning to run

I’ve never been a runner. I can run and even sprint short distance of course, but it’s not a pretty sight and I rarely achieve anything beyond panting and cramps.

Lately I’ve been trying to change that. Together with a few friends from work, I’m trying to lose weight and get into better shape as part of a friendly “biggest loser” competition. For the first few weeks I was able to lose a pound or two a week by simply cutting down on beer and fried food, and working out a few times a week on an elliptical trainer.

However, my body and my boredom quickly adapted and so I went looking for something else. That’s when it hit me. Like a mighty homage to Forrest Gump I suddenly felt the urge to run. My loving wife supported me as we bought a treadmill and for the last month I’ve been working out a few times a week using interval training to try to build stamina enough to run for more than a few minutes at a time.

I still end up a sweaty mess at the end, but I am actually getting better. I can now go for two minutes at a time running before dropping back to a fast walk to recover, and for the first time in my life I don’t completely hate it.

NDepend – Beyond Static Analysis

I work on a large software project in the cable and telecommunications space. We have a team of developers about 50 in size that is growing every month. What once started as a simple .NET web application has since grown into a large multi-tenant Azure-hosted enterprise solution with over 100 projects, 7 builds, and a host of different technologies and patterns. We’ve got a skilled team and everyone has been working hard to keep the quality and consistency high, but as with any software project things will eventually slip past the radar and start to cause problems.

One tool that I have employed successfully in the past to help find and catalog these issues is NDepend. Using the new version 6 I was able to pull together reports to assist our development teams identify potential problem areas and add tech debt items to our backlog to address them before they grew too big. NDepend is a big tool and from the moment you first open it up and point it at a project it starts presenting all manner of data and visualizations. This can be a little daunting at first but once you start to break it down the data quickly becomes useful.

VisualNDepend       AnalyzeAssemblies

The first step is to run VisualNDepend.exe. This launches the main studio and displays the start page. From there it is a simple journey of selecting Analyze a set of .NET assemblies and either browsing to a build folder or selecting a Visual Studio solution file. A dialog displaying the list of assemblies that will be analyzed contains a big play button and a check-box marked “Build Report.” Press the button and you’re off to the races.


Once analysis is complete, a web browser opens showing the main report as well as a dialog for NDepend beginners. This describes some common destinations to begin analysis such as viewing the NDepend dashboard, showing the interactive graph, or browsing code rules. Description are provided for each to help understand what information is being provided and how it can be used.


I begin by reviewing the application metrics. These are some fun statistics that provide a good idea of the size and scope of a project. Counts such as the number of source files, namespaces, and method count frame the maintenance discussion. Knowing how many source files is useful later in the analysis cycle when reviewing rules violations to understand mentally how many issues might exist per physical file for example. Not that warnings will be evenly distributed across files but it give a good human metric of the scope of potential issues.


The metrics above represents our largest solution. We have several other smaller solutions but for this analysis I focused primarily on our core project. At 67,000 lines of code it represents almost two-thirds of the project team’s .NET assets. A thousand source files may not seem like a lot on the surface but we definitely feel that count when it comes time to refactor. Below the application metrics is a section that summarizes the results of NDepend’s rules analysis. Rules are the primary mechanism for detecting and categorizing potential issues during the analysis cycle and the summary pairs well with the metrics section to give an idea of the size of potential problems.


For a project our size, 92 violations isn’t that bad. The colored boxes in the top-left show a breakdown of the rules by severity and in our case 55 passed, 80 had warnings, and the remaining 12 represent rules for more serious issues. The total number of rules violated as 92 is derived from the sum of the warnings and errors; 80 + 12 = 92.

From here I will usually move into the visualizations before digging into rules further. I find at the start of the analysis cycle that I like to get my arms around the scale of the report. Fortunately NDepend provides several options for visualizing the solution from a variety of different perspectives. The browser report contains links to four such visualizations: the dependency graph, dependency matrix, tree-map metric view, and a chart showing abstractness vs. instability.


I start at the right. The abstractness vs. instability graph grades each assembly based upon these two factors. Assemblies that are abstract and stable or concrete and unstable define the edges of a theoretical green zone along with assemblies that are a good combination of both. Assemblies that are both stable and concrete occupy the zone of pain, where assemblies that are abstract and unstable occupy the zone of uselessness. While the verbiage is a bit stark for some audiences, technically minded folks will often see this as a quick-look for assemblies with confused responsibilities.

For the most part our project’s assemblies occupy the edges of the yellow band. There are a few in the zone of pain that could use attention but for the most part everything looks OK. It’s a nice gut-check for separation of concerns. The assemblies in the zone of pain are generated assemblies from SQL metal. Generated ORM layers typically result in knotted masses of code, but since they are generated they don’t suffer the usual maintenance drawbacks.

Class and method names have been blurred (by me) deliberately.


The next diagram I review is the dependency matrix. This shows references between pairs of assemblies. Larger numbers don’t necessarily represent bad news but it does point to an area to examine. When I see a high count between a pair I will dig in a little further to understand if it is really necessary and see if there are opportunities to break responsibilities and dependence down a little. Core libraries, ORM assemblies, and interface layers are often highly coupled as they provide hook points that many different parts of the system interact with. In addition to looking for problems I’ll use this grid to validate boxes I expect to be empty, in cases where pairs of assemblies should explicitly not reference each other. This snapshot is from the preview included in the browser report. However, there is a full and interactive dependency matrix included in the main NDepend studio as well.

dependency matrix

Once I’ve reviewed the overview information, I dive into the main NDepend studio and head to the queries and rules explorer. This contains the meat of the actionable information for my role. The rules engine searches code that violates one or more high level programming principles. The explorer allows you to not only review these exceptions but also create and manage a custom set of rules that more closely matches the practices of your particular development team.

NDepend comes with a large set of built-in rules that can be used as examples for building out your own custom suite. I’ll usually start by reviewing the built-in set of rules to guide me towards any particular problem spots in the code. The dashboard panel shows an overview similar to that in the browser report but this time the code rules section includes more information as well as interactive links. The option for “Recent Violations Only” is an invaluable feature that allows you to review only the violations that have occurred in the most recent refactor. This is a good way to see if attempted fixes are in fact introducing new problems of their own.


From this view we can see that there are 361 critical violations of 12 rules. There are considerably more in the warning category, but consider that this analysis includes a lot of generated code. Code generators don’t expect anyone messing with the code they generate and as such often violate common principles that would otherwise make the code more difficult to manage. To focus our analysis I opened the Project Properties dialog and removed a few assemblies from the analysis.

Project Properties

Trimming out some test assemblies and generated code focuses the analysis on the core of our functionality. This lets me focus on the most important issues for us to address.


Clicking on any of the links in this panel applies a filter to the Queries and Rules Explorer panel. I start here to dig into critical violations first. These are typically, but not always, issues that should be addressed right away.


Selecting a rule opens the rule editor window. This contains the rule script as well as a list of methods that are found to be in violation of the selected rule. I selected the “Methods too complex – critical” rule. The script at the top is the NDepend definition for the rule. The dialog below shows the method that was found to be in violation.

The class and method names have been blurred (by me) deliberately.


While I can’t share the code, needless to say this was a very large method with far too many responsibilities. It became a prime candidate for refactor and was squashed within just a couple of days. Interestingly this method was built to support unit testing. It’s purpose was to reset a large object and the reset path wasn’t necessary for our production run-time, only for the tests. We moved the method to its appropriate location in a test support assembly, simplifying our core project.

The rule script is easy to modify if you disagree with the severity of a rule or would like to make it stricter or more relaxed. In the example above the rule is searching for methods with one of three traits:

  • Cyclomatic complexity > 30
  • IL Cyclomatic complexity > 60    (because IL is chatty)
  • IL Nesting Depth > 6

While some of this may seem a bit daunting it’s pretty easy to start changing values and seeing the effects. One exercise I found helped me in learning what these metrics mean was to take a method I considered to be a great example and move values around until it violated or failed to violate particular rules. In the example above the method was flagged because of its IL cyclomatic complexity. It has a value of 75 where the rule is looking for anything greater than 60. Changing the rule in the editor to look for values greater than 90 removes the violation from the list in real time. In this way it is easy to experiment with the effects of different rule settings.


The editor comes with a real-time parser and syntax highlighter, so if you mess things up it’s easy to see how to correct it. Here I’ve changed 60 to NotANumber. The editor highlights the issue and provides a description in the error list indicating that ‘NotANumber’ does not exist in the current context. This hints at another feature of the editor, which is the ability to use variables as well as literals within these rules. The editor comes with Intellisense and auto-complete so exploring the available methods is easy.


Here I’ve done something silly that I don’t recommend but it shows off the power of the editor. The rule now looks for methods where the IL Cyclometic Complexity is greater than the number of assemblies being analyzed.

In this overview I’ve only scratched the surface and can’t hope to cover all of the features that are available. I’ve been an NDepend user for over a decade and have still only used a small amount of what’s there. As with every architect I’ve customized my process and workflow to exploit the tools I need when I need them. NDepend provides me with guidance towards problems, focusing my review attention so that I can use the small time slices I have available to look at the largest issues first. The tool can be integrated much more deeply, replacing or augmenting other static analysis solutions. At a previous company we chained ND analysis into our continuous integration cycle with the results of critical rule violations being routed to me. It certainly simplified the weekly code review meetings I was having with our offshore teams. It all depends upon the situation and project to determine how the workflow can be best assisted.

The usual disclaimers apply. My views are my own and do not represent that of my employer. I’ve known the author of NDepend for over ten years and can attest that he delivers a very high quality product and provides great support. I am not compensated for my words but he has always been kind enough to provide me with evaluation copies of the software, for which I am very thankful.

If you’re curious about what NDepend could do on your projects, I encourage you to get involved with a free trial and …


Hawaii Day Five – Pineapples and Chinese Hats

The Dole plantation was established around 65 years ago as a fruit stand. It became famous for its pineapples and as part of the ever expanding Dole empire. These days it is a popular tourist attraction on Oahu. We got an early start this morning and beat the traffic to arrive just as it opened and be first in line for Dole whip, their signature pineapple ice-cream. We sat and ate our cups and cones with spoons and licks while looking out over the plantation grounds. The day was off to a good start.

As we exited the main pavilion Rowen noticed a stand offering face painting and temporary tattoos. We just had to stop and get one. After a few minutes of careful deliberation Rowen selected a sparkly tattoo of a cupcake to go on her forearm. The lady running the stand was kind and patient. Rowen sat still the whole time as she shared stories of our adventures over the last few days.


Appropriately inked we went in search of our next adventure. We had heard of a train called The Pineapple Express that toured the plantation grounds so of course we had to give it a try. I went in search of tickets while mummy and Rowen played in a life-sized pineapple house. On the way to the train we came across a gum tree. It’s trunk was smooth and the surface streaked with many different colors. Rowen observed it carefully and a little cautiously.

People filed onto the train as we all shuffled forward. Finally reaching the front of the line Rowen handed the conductor our tickets and we were ushered to our seats. The ride was superb. We saw vast fields where pineapples are grown, several fields growing sugar cane, and numerous orchards filled with trees bearing all kinds of fruit, many of which were unfamiliar. A narration accompanied the tour providing fun facts interspersed with musical interludes. It didn’t take long before Rowen was dancing along with the music and looking out of the side of her carriage as the sights drifted by.


The views were spectacular. Vast fields of red volcanic soil framed by distant mountains that rose into the clouds. Although we were only a few minutes from the bustling pavilion at the center of the plantation, the landscape quickly became calm and tranquil with only the sounds of the train and our fellow passengers around us.

Jack Fruit is a type of fig that is thought to have originated in India. It also bears the honor of being the largest tree-borne fruit. Breadfruit apparently gets its name from its potato-like flavor that is similar to freshly baked bread, or so Wikipedia informs me.

Despite being a tourist attraction the plantation is beautifully maintained and must yield an impressive amount of produce. The train ride lasted for twenty minutes and we passed field after field of food the entire time.

After the train we went to feed the fish in the Koi pond but not before our little pineapple posed for a photograph.

The fish are crazy. Throwing them some fish food results in a complete feeding frenzy. They jump and swim all over each other in an attempt to be first to the food. It’s a bit like watching humans shopping in the opening hours of Black Friday.

The morning soon gave way to afternoon and we decided to get back on the road soon. First we got some lunch to prepare us for the drive back. Rowen played a few more times in the pineapple house running back and forth to our table to get bites of food.

Just as we were about to leave Rowen found a chicken that was just wandering around in the parking lot and decided to make friends with it. The chicken wasn’t sure and kept trotting just out of reach. I explained that the chicken was where our lunch came from, which only seemed to spur her on.

We had originally intended to continue driving north to find some of the famous beaches on the north shore but Rowen was starting to look really tired and so instead we decided to start heading back to our resort for nap-time. It wasn’t ten minutes into the drive when all went quiet in the back and we turned to find that she had fallen asleep in her car seat. Figuring that this gave us a few more options and concerned that she might not transfer out of the car well we continued back towards our resort in Waikiki but cooked up a new plan to go to a state park on the eastern shore should Rowen stay asleep long enough as to not be exhausted when we got there. Sure enough she stayed asleep for almost an hour and soon we were approaching Kualoa park, home to the famous Chinaman’s Hat or Mokoli’i in Hawaiian.

The beach at Kualoa is a short one but Rowen quickly made the most of it, plopping down in the sand and starting to dig. She was singing as she filled her bucket, the picture of happiness. We asked her if she’d like to go in the water but she said she was just happy looking at the ocean and digging with her shovel. Can’t argue with that.


I watched Rowen while Meaghan went snorkeling. The weather was a little overcast at the park, which provided some nice relief from the otherwise unforgiving sun. Having dug a sufficiently satisfying amount of sand, Rowen wanted to join Meaghan in the water and soon they were running up the shore away from the waves. Rowen has become much more confident in the water but she still doesn’t like the feeling of the waves pushing her when she’s standing on the edge of the shore.

After another fabulous afternoon at the beach we once again packed up the car and headed back towards civilization. It was happenstance that led us to the east coast park but I’m really glad it worked out that way. The views were amazing and the breeze and cloud cover let us be outside without increasing our risk of getting sunburned. We slather on sunblock on a pretty regular cadence but this is Hawaii after all and we burn easy.

We ended the night once again at Jimmy Buffets. We both like the drinks there and Rowen loves the live music. Tomorrow we’re going to take a break from being in the car and walk down to the nearby Kuhio beach early in the morning. In the evening we have tickets to the Luau just outside the Hilton Hawaiian Village only a few minutes from our resort. We’ll probably take an easy afternoon maybe just hanging out by the pool. Then again it’s been fun just seeing where the days take us.

Hawaii Day Four – The Aquarium and a Walk

We decided to have a slower day today and since the aquarium didn’t open until 9 o’clock it worked out well to hang out in our suite for a couple of hours. Ro got to watch some TV and started writing notes to people at home to tell them all about the things we’ve done here in Hawaii. We still got out early enough to have some shade on the streets during our walk to the aquarium. It’s a nice one mile trek down Kalakaua avenue with shade offered by tall shops and hotels and plenty to see along the way, including Kuhio beach. Kuhio is the prime beach for the Marriot and has a great man-made bay with a concrete barrier just at the surface of the water. The barrier breaks the crests of the waves to form a calm bay for swimming without blocking the view of the ocean. We’re going to come back early on Sunday to beat the sun and the crowds.


We did get rained on slightly but not enough to worry about and it was a nice break from the hot sun. If the showers had become stronger we could have found shelter under these banyan trees. Left to her own devices Rowen would have cooled off in the fountains. She has had just as much fun playing in the fountains outside our resort as playing on the beach.


The aquarium was great. Rowen ran from display to display exclaiming “oh, my my,” her new favorite phrase, and “mommy, daddy, look at these fish” elongating the end of her sentence in the shape of her excitement. We started by looking for nemo among the colorful tropical fish. Rowen found the clown fish first and called us both over to see.


They had lots of different types of jellyfish. Rowen has learned about jellyfish and many other marine life from some of her shows on TV. It was great for her to get to see them in person. I think it really helped her connect some of the observations that she had heard but really needed to see.


Of course the seahorses were fascinating. Who couldn’t love such a unique being. We stopped and watched them curling their tails around the grass for a good ten minutes. They are one of my favorites at aquariums because they are so unique. For Rowen, it tied in to a show she had watched about bioflourescence. Sometimes you just have to see it.


I caught this quick video of a seahorse in action.

Next we found this giant trevally. He was half the size of Rowen and just sat there right next to the glass looking at us as we looked right back. I took the rare opportunity to get a family selfie.

Our final indoor exhibit was a tank with a lion fish and some coral shrimp.


Outside we got to touch some sea creatures. Rowen wasn’t sure about the prickly ones but she was fascinated by the little hermit crabs. She got shy at the last minute when it was her turn to let the crab crawl on her palm but she was fascinated to watch it scamper across daddy’s fingers, especially the way it led with one claw when first emerging from its shell to make sure coming out was safe. We talked about how we have to leave shells on the beach for the hermit crabs to use for homes.


Just as we were exiting the aquarium I spotted this gecko hiding on a tree. His camouflage was amazing and again helped to tie in with a show Rowen watches. The Wild Kratts have a show on geckos where they gather the creature power and are able to camouflage themselves and crawl up the sides of a tree. This morning presented so much material experiences for Rowen I’m not sure she was really able to absorb them all. She was running around and jumping and singing by the end though so pedagogical concerns aside it was clear she had a great time.

We finished our tour by seeing a couple of monk seals playing and swimming. Just as we were about to leave it began to rain really hard so we hid in the gift shop for a few minutes to let it pass. The walk back saw encounters with more fountains and since Rowen had done such a good job with all of the walking this morning we let her sit in her stroller and eat some rainbow shave ice.

Despite having already walked three miles so far this morning, Ro decided her legs were feeling good again and that this time she would help by pushing her empty stroller. She did a pretty good job for the most part, almost going in a straight line at one point. It didn’t make for the fastest return home but at least we had fun. She’s becoming a real ham in front of the camera. I got this shot after she had declared she was going to pose. I’ve no idea where she gets this from.

During Rowen’s nap I took the opportunity to get in another sightseeing walk. I’ve been really enjoying just wandering around and taking everything in. Some of it is reminiscing about places I used to walk around when we lived here, but so much has changed and there is so much to see I like just taking random streets and seeing what I can find.



This rack of huge surfboards is all along the side of the Outrigger Reef hotel. I remember walking by them the last time Meg and I were here. Still cool to see though. It’s the Hawaii equivalent of the huge bike racks we have in Portland.

This evening we went to dinner at a restaurant very close to where we were staying called The Yardhouse. We were all pretty tired after a pretty busy day (so much for a slow one!) so we figured that something close to home made sense in case we pooped out early. Ro wore the new dress I bought her again and was charming everyone with her manners and cute dancing as usual. Here she is pointing out the turtles in our resort lobby. She insists we each touch one as we walk by.

There was a short wait to get a table at the restaurant. Fortunately there was more live music and hula dancing right outside so we sat on the grass to sit and listen while waiting.

It was anything but a quiet day, which is why I’m writing this blog post a day late, but we had a great time and I’m really glad we were able to fit everything in. I have some more videos of Rowen in the pool from when we visited this afternoon and I’m hoping to get those transferred, edited, and posted soon. The underwater camera doesn’t have the ability to instantly upload like the iPhone so its a little more work to get those ready for sharing.

Today (Saturday) we’re heading to the Dole plantation for pineapple ice-cream and to ride on the train. Then we’re going to continue on to the North Shore to see some of the beaches there. I’ll write all about it tonight.

Hawaii Day Three – I could get used to this

This morning we had intended to go to Hanauma Bay, a beautiful natural bay on the East coast of Hawaii where you can swim alongside marine life that is part of a living coral reef. We set our clocks early and arrived at the park a little after eight o’clock only to find the beach was closed due to fears of the potential tsunami sent by the recent earthquake in Chili. So we drove back to our resort and returned again to the nearby Waikiki beach instead. The water was a little choppier than usual but still very enjoyable. Our early start meant we still got a great spot and soon enough we were building sandcastles and bobbing up and down in the waves. Every time we visit the beach Rowen gets a bit more confident in the water. She’s starting to angle her body parallel to the surface when she goes to kick and paddle now and she’s even getting the hang of floating on her back. It’s amazing to watch the progression day by day. All of that playing in the sand and the sun takes its toll however and we soon found ourselves heading back to our rooms for a nice afternoon nap.


We decided to take it easy this afternoon and so we drove to the Ala Moana shopping mall to just browse and mosey around a bit. One of our first stops was at the Disney store where after much deliberation Rowen picked out a Doc McStuffins doll. She had a blast running around the store looking at all of the costumes and toys. While I don’t like the intense marketing philosophy behind Disney’s stores I can’t argue with their effectiveness. Rowen was in heaven just flitting from display to display, excitedly waving us over to see every discovery. Her favorite part was the walk-in princess castle with a pink and white checkered floor. She spent more than half of her time in the store just walking through the archway entrances and dancing in front of the long hall of mirrors.


After a little more shopping, during which we acquired a new pair of shoes for Meaghan, we took the elevators to the top floor and went in search of Bubba Gump’s Shrimp Company. They served us a feast including pizza for Rowen, ribs for daddy, and the fish and chips for mummy. We adults additionally ordered more fruity drinks. We had been working hard in the hot sun after all! Meg got a lava flow while I stuck with the blue hawaiian that served me so well last night. Because she had been so well behaved all day, and partly because we just love her to death, Rowen got a build-your-own ice-cream sundae for dessert. She got the hang of it pretty quickly, although she’d already eaten most of the sprinkles from the little container before she even took the first bite of her ice-cream.


Most of the drive home was serenaded by Doc McStuffins who sings a song if you touch her tummy. I don’t think mummy realized this when we first bought it. Despite hearing it only a few hundred times, we’re already starting to learn the words. I think we might be singing them in our sleep tonight. Ro couldn’t get enough of it and tonight Doc McStuffins is sleeping in the bed next to hers, all snuggled in tight. I’m sure after she gets a good rest that she’ll sing her song a few more times tomorrow. Sorry mummy, I kinda knew it sang when we were in the store but I didn’t want to say anything because I thought you might veto it if you knew.


Tomorrow we’re thinking of heading to the Waikiki Aquarium and just spending some time hanging by the pool. We’ve been going at a fair pace every since we arrived and figured we could use a bit of a slower day to help Ro keep her feet on the ground. She’s been a real trooper so far but we don’t want to push it. I’ve found a way to share videos of Rowen swimming so more on that soon, but for now I’m going to head to bed. It’s been another great day where we used every minute.

Hawaii Day Two – Now can we go to a beach?

For the last fourty eight hours, Rowen has expressed only a single request “now can we go to a beach?” It must feel so strange to her that we spend all of this time in preparation and travel to get to Hawaii but then fail to run straight down to the beach immediately upon arrival. It is clear that we’re doing it wrong. I took this picture as we ate breakfast and listened to pirate music. I think it says it all.

We started today’s adventure today with a visit to  the fountains across the street from our resort. Ro had a great time running back and forth through the water. Meaghan took the opportunity for a civilized moment to grab coffee and begin the day at a more leisurely pace.

With one drenched Rowen and a now slightly more awake mummy, we reacquired our car from the valet (a service I’d love to see continue in my regular life) and headed over to Walmart. Rowen again questioned our decision making process given that the beach was far closer and infinitely more fun, yet she remained a trooper and helped us to acquire all of the supplies we’d need for our room.

The supply run had taken up a good portion of the morning however, and Rowen was showing signs of needing sleep so we decided it was time for a nap. While Rowen slept, I got the chance to walk around and snap some photos of the surrounding area. Due to the manner in which I held my camera, my face kept getting in the way of the shots.

Finally, after an eternity of patience and a very long afternoon nap she asked her question one final time: “Mummy, daddy, now can we please go to a beach?” She was not disappointed.

Whilst at Walmart we had acquired a new set of sand toys as well as a large inflatable gecko for Rowen to sit on while in the ocean. It spent a good fifteen minutes being dragged around our suite roaring at us. Rowen insists it is not a gecko, but is in fact a dinosaur that says ROAARRR!

I wasn’t able to get any pictures at the beach as I left my phone at the resort to avoid getting it wet. I did manage to get some videos on my waterproof camera, but without access to a full laptop (I’m blogging on my iPad) I can’t transfer or upload them. Might try to use one of the lobby computers tomorrow.

The beach was fantastic. We built sandcastles and swam in the ocean. Rowen was swimming on her own for a good thirty minutes and spent at least another thirty riding around on the back of her gecko. What amazed me most is how confident she is becoming in the water. Twice her head went underwater unexpectedly and instead of panicking she just spit out whatever she had inhaled and then took deep breaths until she felt under control. I’m in awe at her ability to both listen and keep cool under pressure.

Having thoroughly enjoyed the beach we decided upon Jimmy Buffet’s for dinner. Meaghan and I have some great memories from the last time we were here. They have amazing cocktails and we love the live music. Rowen couldn’t help but charm our waitress. She’s been practicing saying “Aloha” all afternoon and unleashed the cuteness with wild abandon. Mummy and Daddy enjoyed their fruity adult drinks while Rowen clapped after every song for the live music. She was winning over the crowd pretty quickly in her new Hawaiian dress, spreading “Aloha” with whomever would listen.

Upon returning to our suite she graced us with her interpretation of Polynesian dance. I think she’s been watching the Hula girls and I even see a little Haka in there. The smile says it all.

Tomorrow we’re heading to Hanauma Bay to literally “swim with the fishes.” Doubtful that I’ll take my phone with me but I’m hoping to get some great shots with the underwater camera. For now “Aloha, and bring me another Mai Tai please!”

Hawaii Day One – Early Mornings and Lots of Waiting

Rowen did exceptionally well today. Considering that I woke her up in the middle of the night, 04:30 to be exact, and then proceeded to take her through the hurry-up-and-wait exercise that is air travel. She was a superstar. No tantrums, no tears, she just followed directions, held onto my hand, and charmed everyone we came into contact with. By the time we landed in Honolulu I was beaming from ear to ear as several of our fellow passengers complemented her for outstanding behavior, in some cases better behavior than some of the adults on the plane.

It was still the middle of the morning when we arrived in Honolulu according to island time. Yet our bodies and minds were still operating three hours ahead on west coast time. It was clear that we needed to stop for food and rest soon lest we see dissent in the ranks. Fortunately the car rental experience, including the shuttle over there and then inexplicably slow paperwork process didn’t break us. A short but fast drive down H1 soon saw us at our destination, availing ourselves of valet parking and pulling our bags the last few yards of the journey up to our room.

When I say room, I mean suite, and when I say suite I mean “this place is freaking awesome!” Separate bedrooms so that we don’t disturb Rowen and even separate bathrooms to boot. Add a living space, kitchen, and full laundry. We could actually live here, let alone just visit for a few days.

First things first we got Rowen fed, changed, and down for her nap. I ordered room service for us grown-ups while Rowen slept off her epic journey. Like a trooper she was out within a few minutes thanks to some keen assistance from mummy.

One successful nap later, with a short one for daddy too, and we were ready to go in search of adventure. We started with a visit to the pool. Thanks to the exclusive nature of the resort it wasn’t crowded at all. Rowen was swimming up and down all by herself. Can’t imagine where she got that independence. *wink* She even jumped in from the side of the pool after insisting neither Meg nor I catch her. Predictably she sank a good ways under the water following the jump but she didn’t cry, she just surfaced, blew out the water like we’ve taught her to do, and took slow deep breaths until she felt stable again. Love that kid. Seriously, she blows me away with how composed she can be.

After our fun at the pool we set upon a quest to find some kid’s mac and cheese for Rowen and fruity cocktails for Meg and me. We settled on dining at the cheesecake factory because despite being a chain we could visit in Portland it was close to our hotel and fulfiled both of the primary objectives. We left with three satisfied customers, one junior mac and cheese fan and two adults who appreciated a pina colada and pineapple mojito to cool off in the tropical sun.

This evening we took our first foray to the beach. Rowen still can’t believe the whole island is pretty much one big beach so we figured we’d start by showing the one closest to our resort. She was tickled to find that we could walk to the sand and the sea in just a few minutes. It didn’t take long before her shoes were off and she was running up and down through the waves squealing with delight. A longer trip to the beach, armed with sand tools is one of the primary goals for tomorrow. We’re thinking of starting with a grocery run in the morning since the amount of sunscreen alone that will be needed to keep this pale family from burning is rather absurd. We’ll need a temporary set of sand tools too, since we neglected to pack them to save space.

We took this silly photograph in a park across the street from our resort. There were some people playing live music and hula dancers. We stopped for a while to listen.

For now, I’m loving the feeling of both being on vacation and being in a tropical climate with my awesome ladies. It’s already checked a whole bunch of boxes and this was the travel day, where I’ve been up since 3:00am PST. Next stop? More fun.

Demon Hunter

Of all the World of Warcraft expansions, I’m most excited for Legion. Not just because it is new and enticing in that way but because of the new class, the Demon Hunter. Illidan Stormrage has always been my favorite Warcraft character. I’ve listened to the Black Temple theme more times than I can count and watched Nihilum’s world first just as many. The ability to create a character and follow in the footsteps of the corrupted night elves will be like reliving the great memories from our golden era during the Burning Crusade. That expansion was the one that Meaghan and I really played and enjoyed fully together and it will always hold a special place in my heart as a result.


Bring the rain

The weather this morning was perfect. Meaghan and I took Rowen to the Beaverton Farmer’s market as is our norm on a Saturday. While the winds made it at times difficult for vendors to hold down their stalls, it meant fewer people and thinner crowds. The light breeze and threat of rain provided some relief to the relentless summer sun we’ve enjoyed this year.

I love the long hot summers. They are lovely for getting outside and soaking up the sun rays. Yet I find the early fall to be one of my favorite times of year. After so much sun the rain and wind is a welcome change.

Rowen agreed, noting that “the spray from the fountains is tickling my neck, Daddy” as she took a big bite of her donut. These are good times.

Apple Music

I signed up for Apple Music as soon as iOS 8.4 hit my phone. So far I’ve been very happy with it, although I’ve heard that others are experiencing some issues upon canceling their subscriptions. I’ll have to wait and see what the long-term experience is like for Meaghan and I but in the positive camp things have been great. I’m able to browse listening to artists and material that I likely wouldn’t ever buy or in many cases ever listen to again. It’s a nice way to stream what I’m curious about without committing money to a purchase I’d likely regret.

At work I have explored many different operas, my personal genre of choice for thinking time, and found several that are not to my tastes. Yet I have also developed appreciation for great works I never knew existed, in fact more works in a single month than in my entire operatic curiosity up to this point. That is where the power of the service lies, in letting my whimsy flutter without commitment. I had previously been a member of Spotify but am finding the Apple interface more intuitive and the library more comprehensive, for my tastes at least.

I use to have a hard time “renting” music. I grew up in an era where one built a music library, racks of vinyl, tapes, and CDs. Even as the iPod exploded, I struggled to own only the digital copy and would often buy a CD first and then rip the music to my library. iTunes Match was the first hit of the drug that really caught my attention due to its ability to provide a clean version that didn’t skip and was of unparalleled quality. It didn’t take long for the value of the physical media to yield to the trust of a digital license model. That stepping stone the paved the way for a transition to the Netflix model of renting access to media, and here I am. I’m exploring the feeling of not owning music and being OK with it. A friend of mine at work asked me how often I really go back and listen to songs again. I certainly did that a decade ago. I had favorite albums I knew so well that I can still sing most from memory and identify the song after just a few seconds of the intro. Yet in the age of digital distraction I find that I rarely go back and listen again. There is so much new content to consume that I’m more likely to just push forward into the next thing. It will be interesting to see where that leads.

For now I’m discovering the great works of Puccini and feeling unfettered with my access to music, a feeling I’m sure isn’t new to the Napster generation but one in my rule-following nature of license acquisition I haven’t known before.

Don Quixote

I recently got a bug to read the classic Don Quixote. It’s a big book and I have to wade through some chapters but I’m having a great time. It’s a sad but brilliant tale of a man so taken by the romantic tales of chivalrous knights in his beloved books that sets out into the world to prove himself one of them. What ensues are rich accounts of the history of the brave Don Quixote de la Mancha told in all the glory befitting of a great hero.

I think part of the inspiration to read of his adventures is from watching Rowen explore the world in her own brilliant imagination. I could see her charging forth at windmills, lance set as firmly as her resolve, ready to charge at those threatening giants.

Wine Journal

Moleskin now offer a wine journal. I can finally pair my love for journaling with my developing love for wine. The journal is carefully laid out with different sections for different kinds of wines as well as spirits and a set of pages with blank tabs for custom types.

I’ve tried journaling about different wines before but I never really stuck to it. I’m hoping the magic of Moleskine that helps me keep other journals will work for this too.

Kindle PaperWhite

I caved and bought myself a brand-new paperwhite this weekend. I used eBooks before or rather I’ve used my iPad as an eBook before, but this is my first Kindle. It felt superfluous to own an iPad and a Kindle, which is why I held off for so many years. Although it’s only been a few days I already love it. I’ve spent the last few nights falling asleep reading on my Kindle until my eyes could bear the weight no more.

Windows Powershell – How to Rename a Folder

I’ve recently switched over to using Powershell and while I’m liking a lot of what I see, my reflexes have yet to catch up. When I go to rename a folder my fingers want to type mv or ren. I get greeted with error text in alarming red and have to take a second to reset my brain into Powershell land. I usually add my tips to Evernote but a friend of mine recently reminded me that blogging is a nice way to share.

Rename-Item <oldname> <newname>

Additional documentation here:

EVO 2015

As always, I had a great time watching EVO 2015 on the srkevo Twitch streams. Here are some of the highlights from this year’s king of fighting tournaments:

Streaming Schedule
With eight streams this year, there was more content than I could hope to watch. I mostly stuck with the USF IV streams on Friday and then watched UMvC3, Mortal Kombat, and a little Tekken 7 on Saturday, then the finals of those games on Sunday. That left more than enough time to take breaks, get in a few workouts, and go to the park with Meg and Ro.


The 2015 SRK EVO subscription came with a new set of Twitch emoticons.


Early Pools (08:27)
The room was still mostly empty when the early pools kicked off on Friday.
PR Rog is Competing Again (08:54)
It was great to see that Eduardo Perez (aka PR Balrog) was competing again this year. There had been rumors of his retirement, but fortunately he was in attendance and ready to show us that boxer is still a competitive fighter.
Some Early Action (10:43)
A mid-morning fight featuring Gackt.
Poonkgo Defeats a Disrespectful Player (14:22)
The guy crossed the line when he took his shirt off and put it on Poongko’s shoulder.
Matsuri Winning a Match (16:20)
She played a great Chun Li. Very patient style.
Gootecks Loses to Haitani (16:39)
The look says it all.
Alex Valle Defeats Bonchan (18:36)
He beat him with solid fundamentals using Hugo. Great spacing and that standing fierce looked terrifying. Cute girl in the background with the red hair too.
Daigo Beats Ragajin in the Quarter Finals (18:47)
Luffy Defeated by Dieminion (18:56)
Luffy was sent to loser’s bracket.
PR Balrog Sent to Losers Bracket by Xian (19:32)
It was a great fight by Xian.
Winner’s Bracket (end of Day 1)
Loser’s Bracket (end of Day 1)

Timewalking Dungeons

Time-walking is a new feature in Warlords of Draenor that I’m rather excited about. In essence it allows max-level characters to go back and experience dungeons from much older content as though they were at the level for that content. It’s an awesome way to take a trip down memory lane and play the dungeons as they were meant to be enjoyed. Not only that but the dungeons reward max-level gear. You go in as a 100, get scaled down to a level 70, but receive gear appropriate for an end-game level 100 character. It’s a great way to make old content relevant again while still rewarding players for working through the dungeon content. I hope Blizz bring more dungeons into the fold. For now it’s just Burning Crusade dungeons and for a limited time only. Feels like a field trial to see how the content is received.

Two thumbs up Blizzard. What a great new feature!

1 2 3 23