The Dreaded CISPA is Back

My 2 Cents on SXSW 2013

Size

I hadn’t been to a conference so large (whether you’re counting people or land area covered) since Microsoft’s PDC in 2001–and that was held at Staples Center in Los Angeles.

Sessions

Even though I only attended Interactive (they have Music and Film too), there were a ton of choices of sessions across a wide variety of technical, creative and other disciplines.  In addition the technical topics I was looking for, I got to learn about the quantified self movement, 3-D printing, wearable computing and entrepreneurship.

Swag

Between the vendors in the exhibit hall and all the companies there recruiting new people, I’ve never gotten so much free stuff in my entire life.

Keynotes

I’d attended keynote speeches at conferences before, but hadn’t seen keynote interviews before.  Elon Musk and Al Gore were both entertaining and thought-provoking.  While it wasn’t billed as a keynote, the best solo talk I heard during the entire conference was Phil Libin’s Chaotic Good.

Panels

Many sessions weren’t just a single person speaking, but a group speaking in front of an audience.  Making it Rain in Non-Techy Markets was the best panel I attended during the conference.  While I’m not an entrepreneur (yet), all four panelists gave really helpful advice.

People

I met people from all over the world at this conference.  Just on the rides to and from the convention center each morning and evening I met people from the Netherlands, Australia and Italy–as well as from all over the U.S.  In the airport on the way back, I met 3 people from a company that happens to be across the parking lot from mine!

Quite a few people I met were founders or co-founders of their own companies.  I heard a number of start-up pitches and met a venture capitalist who was in town looking for companies to invest in.

The locals who were brave enough to stay in town for South By were very friendly and helpful.  One guy even gave a couple of us a ride to the convention center when our shuttle was running late.

Traffic

Speaking of shuttles, R & R Limousine and Bus (the exclusive shuttle provider between hotels and SXSW venues) did a pretty poor job serving my hotel (one of two close to the airport).  When we didn’t resort to bumming rides from strangers or calling cabs, we usually ended up waiting a long time for our to show up.  The traffic did us no favors either.  Between the construction on the roads and street closures, it took a long time to get in and out of downtown.

Overall

SXSW Interactive 2013 was a great (if tiring) time.  I really enjoyed Austin as a town.  It has a buzz, an energy to it unlike any city I’ve ever visited.  I hope to go back–if not for SXSW 2014, then a different time of year to enjoy the rest of Austin.

Replicating Folder Structures in New Environments with MSBuild

I recently received the task of modifying an existing MSBuild script to copy configuration files from one location to another while preserving all but the top levels of their original folder structure.  Completing this task required a refresher in MSBuild well-known metadata and task batching (among other things), so I’m recounting my process here for future reference.

The config files that needed copying were already collected into an item via a CreateItem task.  Since we’re using MSBuild 4.0 though, I replaced it with the simpler ItemGroup.  CreateItem has been deprecated for awhile, but can still be used.  There is a bit of debate over the precise differences between CreateItem and ItemGroup, but for me the bottom line is the same (or superior) functionality with less XML.

Creating a new folder on the fly is easy enough with the MakeDir task.  There’s no need to manually check whether or not the directory you’re trying to create already exists or not.  The task just works.

The trickiest part of  this task was figuring out what combination of well-known metadata needed to go in the DestinationFiles attribute of the Copy task to achieve the desired result.  The answer ended up looking like this:

<Copy SourceFiles="@(ConfigFiles)" DestinationFiles="$(OutDir)_Config\$(Environment)\%(ConfigFiles.RecursiveDir)%(ConfigFiles.Filename)%(ConfigFiles.Extension)" />

The key bit of metadata is the RecursiveDir part.  Since the ItemGroup that builds the file collection uses the ** wildcard, and it covered all the original folder structure I needed, putting after the new “root” destination and before the file names gave me the result I wanted.  Another reason that well-known metadata was vital to the task is that all the files have the same name (Web.config), so the easiest way to differentiate them for the purpose of copying was their location in the folder structure.

In addition to the links above, this book by Sayed Ibrahim Hashimi was very helpful.  In a previous job where configuration management was a much larger part of my role, I referred to it (and sedodream.com) on a daily basis.

Fixing MVC Sitemap Errors

When attempting to manually test a .NET MVC application, I got the following exception from Visual Studio:
MvcSiteMapException

Looking at the inner exception revealed this message:

An item with the same key has already been added.

The sitemap file for our application is pretty long (over 1300 lines of XML), but a co-worker pointed me to the potential culprit right away. There was a sitemap node near the end of the file that had empty strings for its controller and action attributes. As far as I can tell, this generates the default url for the site’s home page. Since it already exists, this results in the exception that’s thrown. Removing the sitemap node resolved our issue.  A couple of threads that I checked on stackoverflow (here and here) provide other possible causes for the error.

Identifying All Bad Mappings with AutoMapper

One of the long-running annoyances we’ve had with our test of AutoMapper configuration validity on my current project is that a test failure only revealed the first mapping that was wrong. I haven’t figured out why this is the case, but I’ve come up with a work-around that displays all the necessary information.

Because the exception thrown if one or more incorrect mappings is found is AutoMapperConfigurationException, my revised test catches that exception in order to print the source type, destination type, and the list of unmapped property names. Re-throwing the exception at the end ensures that the test still reports a failure. The XUnit test which demonstrates this is available as a GitHub gist. If you’re using NUnit or MSTest in your application, minor revisions to this test will give you the same results.

Ours At Last

After about two weeks of homelessness (a.k.a. living in my wife’s condo and hotels), we finally completed the settlement process on our shiny new townhouse around 3 pm this afternoon. Less than two hours later, we’d spent some of the profit left over from the sale of my old townhouse on new furniture for the main level. Between working full-time, preparing a house to sell, and buying a new one, the past four months have been incredibly busy. It still won’t be slowing down anytime soon. Tomorrow is move-in day, since PODS is coming to pick up their storage unit at noon. There’s still Verizon FIOS to install, furniture deliveries to accept, more furniture and electronics to buy (not to mention a new washer and dryer). I’ll be glad when we’re finally settled in so we can invite some friends to hang out.

Our new neighborhood is still in the process of being built, but what we’ve seen so far of where we’ll be living looks great. I’m looking forward to getting to know our new neighbors.

Fastest Realtor in the East?

I didn’t think a house could be sold in just 4 days, but I was wrong. We got a list price, all-cash offer on the house yesterday. Many thanks to our realtor and friend Karane Campbell. I couldn’t recommend her more highly. She priced the place perfectly and worked hard on the three interested parties to get us the best price.

First-Time Home Seller

Since my wife and I are buying a new place together, I’m selling the townhouse we currently live in. If you’re looking to move into Montgomery County, Maryland you won’t find a better value.

The $285,900 list price gets you a 3-level interior unit townhouse with 2300 square feet of living space; 4 bedrooms, 3 1/2 baths, 2 fireplaces, and a fully-finished walkout basement. The $125 monthly homeowners’ association dues cover your water bill, assigned parking space, trash, recycling, maintenance of community common areas and snow removal. Whether you work in DC, Maryland or northern Virginia, this location puts them well within reach. Metro’s Red Line is a 10-minute walk from the front door. The Beltway and Route 29 are just minutes away by car. I’ve had career opportunities in each of these areas over my 14 years here and having these transit options made it a lot easier than it might have been otherwise.

When it comes to shopping, dining, or entertainment, this area is hard to beat. Wheaton Plaza is just around the corner. The area’s newest Costco store will soon be open there. There are multiple CVS pharmacies, a Target and a Giant Food store. A brand-new Safeway is also scheduled to open within a year. There a few good Thai and Vietnamese restaurants within a short drive or a walk. Everything that downtown Silver Spring has to offer is a short drive (or two Metro stops) away.

If you’re into exercise, this area has you covered there too. LA Fitness has a facility in the Wheaton Plaza complex. The paved trails of the Sligo Creek Parkway are not far away either if you run or cycle.

Contact our realtor, Karane Campbell at (240) 393-8906 if you’re interested in finding out more.

MLS# MC7968156

How to Be Black

I finished reading this provocatively-titled book a couple of days ago. I expected Baratunde Thurston’s memoir to have its funny moments (he worked for The Onion until recently) and it did. I was not expecting the deep insights about black identity I found throughout the book. I also wasn’t expecting to see as much of myself in the author (beyond the unpleasant childhood experiences I had as a result of not fitting the stereotypes of what black kids are supposed to do and be). It was a pleasant surprise to discover that Thurston and I have Washington Post internships in common (as does my friend Sandro, one of the handful of other black computer scientists I know).

I was also pleasantly surprised to discover that Thurston’s interest in technology was inspired (at least in part) by his mother, who made a living writing COBOL for the Office of the Comptroller of the Currency.  One of the other technologists that blogs whom I admire greatly, raganwald, was inspired into his career by his mother as well.

If you enjoy stories about people destroying stereotypes in general (or stereotypes of black people in particular), How to Be Black is well worth reading.

Visual Studio & TFS Behavior Tweaks

One of a few long-running annoyances I’ve had with every version of TFS is one of the default behaviors on check-in. The default is to resolve an open item on check-in, which is virtually never the case the first (or second, or third, etc) time you check in code to resolve a bug or implement new functionality. Fortunately, Edsquared has the solution.

After making this long-overdue change in my development environment, I exported the keys for VS2010 and VS2012 as registration entry files below:

Feel free to use them in your environment.

Proudly powered by WordPress
Theme: Esquire by Matthew Buchanan.