Martin Fowler, a Software Development Soothsayer

February 26th, 2010 § 0 comments § permalink

What Agile really means to the future of software development
Martin will call upon his more than 20 years of software industry experience to talk about how the history of the software also serves as a roadmap for what to expect in the future.

Martin had three very drastically different mini talks rather than a single long presentation. I really liked this approach since it helped keep my short attention span.

I. Continuous Integration and Continuous Deployment
His presentation comparing Feature Branching and Continuous Integration was just a regurjitation from his older articles, discussions from other presenters at other events, and a book he recommended by Paul M. Duvall. I won’t bore you with it.

Something that caught my eye was Continuous Deployment and what he called the “build pipeline.” He had an awesome flowchart/diagram to explain this, but I’ll try and do it with a list. I’ll include the tools I currently use in our development environment at work, if they apply.

  • Commit Task – usually kicks off a full build of the main stream on a build server, not a local machine
    • Compile: Visual Studio
    • Tests: NUnit
    • Assemble: NAnt
    • Code Analysis: NCover and FxCop
  • Artifact Repository – this can be a file share to maintain each build version from the Commit task above
    • Binaries: CruiseControl.NET
    • Reports: NUnit, NCover, and FxCop
    • Metadata: I have no idea what this is, any ideas?
  • Acceptance Task – of a specific version in the Artifact Repository
    • Configure Environment
    • Deploy Binaries
    • Smoke Test
    • Acceptance Tests (customer focused)
  • Performance Task – of a specific version in the Artifact Repository
    • Configure Environment
    • Deploy Binaries
    • Smoke Test
    • Performance Tests
  • Deploy Task – of a specific version in the Artifact Repository
    • Configure Environment
    • Deploy Binaries
    • Smoke Test
    • Run

I’ve got the Commit Task and Artifact Repository down to a science at my job and it’s a good reassurance that I’m doing this right! I’m going to see what it’s going to take to get the rest of the “build pipeline” implemented. I’ll also see if Cruise is something that will work for us.

I already have so many books I’ve started reading and not finished, but Martin recommended another interesting one that’s still classified as a “Rough Cut”: Continuous Delivery by Dave Farley & Jez Humble.

II. Domain Specific Languages
I forgot my Hydrocodone in the car and my right-bottom part of my mouth was throbbing. The last time I took a pill was lunch and it’s been the longest stretch. I was a little distracted by that, so sorry for the significantly reduced notes.

Martin had an awesome explanation (in his book) about how to get from code configuration to XML configuration and then finally to a DSL configuration represented in Ruby. SO CLEAN! I really need to finish reading my books instead of starting new ones.

“XML is like violence. If it’s not working, you’re not using enough.”

Martin as also quite impressed about the possibilities of DSLs and the impact of Language Workbenches. He recommended us to watch this video from Intentional Software.

“If you try to solve a problem with regular expressions, you end up with two problems”

III. Controversial Topic: Diversity, Women & African American in Software Development
Although there were no slides, I didn’t really like this talk and I found it quite inappropriate. It is definitely a heated topic and should be discussed, but I don’t think this is the right forum. I’ll leave this topic alone.

FeedBurner Migration Confusion

February 20th, 2010 § 0 comments § permalink

Some of you may know that Google will end FTP publishing support for Blogger. Well I’ve decided to move to WordPress and to do that, I need to update my FeedBurner’s original source. Sounds easy right?

Here are my assumptions and below are some screenshots that show why I failed:

  • thomasnguyencom[at] is my FeedBurner account email address
  • Since I did the migration a while back, it will show up when I look at “My Feeds”

No Feeds?!

  1. After I signed in (via using thomasnguyencom[@] As you can see, no feeds show up.
  2. My first choice was to try and migrate my old account, but as you can see I already did this back in the day.
  3. The only other choice I had to do was to add my account again, but no success.
  4. I did some research and found out that my Google-FeedBurner account used the email account associated with my old Feedburner account – contact[at]
  5. After transferring the account to thomasnguyencom[at], everything is now just fine and dandy.
  6. YAY!

Please note Google, I can only sign in with my contact[at] email for FeedBurner, not GMail, or anything else Google related. It’s a confusing configuration.

Deny Yourself Access to a Domain Name.

November 23rd, 2009 § 0 comments § permalink

Well, why the hell would I want to do that?

We’re moving our hosting to a new hosting provider and just to make sure we don’t have any absolute URL paths, we want to blackhole ourselves from that domain.

With some instructions from Kevin, here’s what we did:Add one line:

Yeah, that’s it. Now my local machine goes to a blackhole when accessing the domains above. Awesome. Let the testing begin!

Pretty cool stuff. I just need to remember how to remove it after all this, that’s why I really posted this.

Update Version Number in a File.

September 23rd, 2009 § 0 comments § permalink

No, not an AssemblyInfo.cs file, that’s really straightforward. C’mon it’s a task that does what it says, easy.

Something I was trying to do is update the version number in, for all simple purposes, a text file – something that’s not xmlpoke-able. So I have the property ready to go and the file I want to update!

My first thoughts were to use the loadfile to get the file into a property and replace it with the version.

<loadfile file=”some.txt” property=”token-file”>



<token key=”VERSION” value=”${version}” />




Awesome, just like the sample and it echos out just fine…so now, how do I save my changes? After some digging around, I looked into the filterchain and read up on the copy task.

Seriously, copying a file now has the ability to modify the internals? Does not compute! Maybe copy, then modify. Anyway, its works now, so I can’t really complain anymore besides the hassle of finding the right task to do the job.

<copy file=”some-template.txt” tofile=”some.txt”>



<token key=”VERSION” value=”${version}” />




Now I know why James keeps telling me to get out of the XML HELL. Coding tasks in XML is just ass backwards.

Security Auditing SP2 Released

August 4th, 2009 § 0 comments § permalink

This is a huge milestone for my career as a software developer. Not because I’m finally releasing code for customers to use in production, but I’ve also been able to introduce some new shiny toys to the development team over the past few years. Since the day I started to what we call our “biggest and most complete [release] that we have done to date at Secure Vantage,” we’ve been introduced to a few tools:

  • Source control – Subversion
    • TortoiseSVN
    • VisualSVN/AnkhSVN
  • Continuous Integration – CCNet
    • Build automation
    • Test automation
    • Package automation
  • Bug and Feature Tracker – Mantis
    • Notified using RSS in Outlook

You might be thinking, shouldn’t every successful software development team already have this in place to start with? Well, we didn’t and I made it a point to get it setup before I got too deep into code. Now, some of you might be wondering what we used before, but I’ll leave that to the previous development team to answer that. I joined the team on a green-field development project, most of which is the only C# we have. I was able to introduce new tools in order to help me track my progress and deliver products with confidence. Now, everyone on the development team is onboard with these tools.

As for Subversion since I have a vivid memory of a project in a Software Engineering course: Foozy, Team Foo. The project went very well, it worked during the demo and we had it well documented and even added a CD cover with a picture of everyone on the team. After the demo, we sat down with to discuss our process. I didn’t think of it much at the time, but process, tools, and techniques are king! He asked us what we used for source control and I completely freaked. We passed our code around on a USB stick and in his class we learned about all the source control tools available to us. I pulled the USB stick from my pocket and showed him, this is what we used. He definitely didn’t find it as amusing as I did.

Now, if you don’t know, I took a few courses from Venkat Subramanium, a pretty well known polyglot in the software development world, and I learned a lot about software development, best practices, and even picked up a few books just because of him. Who knew we have such a great asset at the University of Houston? GO COOGS! Anyway, I made it a point to use process, tools, and techniques I learned from his classes for the rest of my software development career.

Since then, and even more so while working at Secure Vantage, I’ve got pretty anal with software development. Especially about doing things the right way versus just getting things done, but it’s hard when we as a team have committed to a delivery date. I just follow that cost-quality-time triangle thing (what’s that called again?) and guess what always gets dropped first. I think I’ve been able to counteract that out with the Pareto Principle. On top of that, in the last few weeks I’ve been able to knock out a lot of those bugs put in the backburner to get where we’re at today. =)

So that’s cool, but what’s next for me? I definitely know I’m nowhere near complete. I’m going to have to start figuring out a way to manage the branching strategy, but I’m reading and hearing about so many different things it’s so overwhelming. For now, I’m just going to try my best and keep things as simple as possible. This is a new frontier for me, and I hope I’m ready for it. I need to get back to reading blogs, articles, and books again. I’ve fallen off that boat for far too long.

Oh, and today is my half-birthday!

Where Am I?

You are currently browsing the Development category at thomas nguyen.