I was thrown headfirst into a .NET development environment, and didn’t have time to learn the proper way to setup such a thing.
Hence, my deployment process looked like this:
- Build on a development server
- Commit my code changes
- Log into live server
- Pull down code changes
- Include any new files into the Visual Studio project
- Build the project
It worked decently, but eventually led to these problems:
- I had to take the additional step of logging into the live server every time I needed to deploy.
- Adding a second person into the mix led to problems with both people being in the main website project at the same time.
- Other people would (often) accidentally develop on the live server due to confusing their remote desktop windows.
Number 3 was the catalyst for me to make a change as that type of thing could lead to disaster.
So I asked for some advice at my favorite forum
There are much better best practices. What you want is a continuious integration server. Something like TeamCity or Jenkins.
This server will take the code from your source control, pull it, build it and perhaps push it to a server if you want.
Note this will require you to keep everything in source control, you don’t really want extra files running around.
I looked into TeamCity, and it was one of those

moments. I had finally found the proper way to deploy with .NET.
Actually getting that deployment to work ended up being a massive endeavor, probably one of the most technically challenging tasks of the quarter. It really shouldn’t have been, and if I had to do it again it would probably only take about 30 minutes, but for the first time around it took about two weeks and maybe eight hours of work.
First, I found this absolutely fantastic tutorial entitled You’re deploying it wrong! TeamCity, Subversion & Web Deploy. Of course I had to substitute Subversion (boo! hiss!) for Git, but besides that it was helpful in both understanding the general concepts of deployment, as well as the specific steps to get TeamCity to work.
Here were my steps, in a compressed format:
This was fairly straightforward, once I figured out the correct syntax. There also weren’t many parameters that needed transformation, mostly just the connection string and display of errors.
This was mostly a realization that there was a much better way to do things than manually editing the web.config every time I deployed, or just not including it at all.
Setting up Web Deploy
This actually took a lot of time, because the standard Microsoft install for Web Deploy … doesn’t actually install Web Deploy! At least, not all the components that are needed. So I hunted around on Google for people who encountered the same problem, and finally found out that you need to repair the installation and go in and select all of the components.
After that, the setup was surprisingly simple, and I was able to deploy from Visual Studio on my development server to the live server.
TeamCity Setup
There is where the bulk of my time was spent. Some challenges included:
Getting Git to work properly.
Ran into some issues with key authentication and Github.
Working directory confusion.
I thought that the Git repository had to be checked out to the same directory that the website lived, as that was my only experience with it up until that point. This actually took a good amount of time to fix as I kept trying to force TeamCity to use the actual website directory as the working directory, which was a no-no.
Making sure all the reference files were included.
For some reason, even though I included them in my Visual Studio project, they weren’t all making it to the deployment directory. One file was even refusing to be pulled from the code repository. So I added an extra step of copying in the DLL’s after each build using a command line script, which worked beautifully.
Finally, this week, I got everything setup and working smoothly. Now when I commit on my development machine, TeamCity scoops up that commit, builds the solution, and deploys it to the website directory.
It even sends me a message on Jabber telling me when the build starts and stops! #nerdjoy
Read more |
No Comments »
Via Wikipedia
Post hoc ergo propter hoc, Latin for “after this, therefore because of this,” is a logical fallacy (of the questionable cause variety) that states, “Since that event followed this one, that event must have been caused by this one.”
One of my favorite subjects we studied in high school was logical fallacies, and certain ones have stuck with me. One of those is the aforementioned Post Hoc fallacy, as that is one that seems to occur quite a lot in life – especially in the realm of information technology.
The most general variation I’ve found in that realm is A technological change was made on this day; something bad happened the following day. Therefore, the technological change is to blame.
At first, I found this extremely frustrating, and became angry and defensive whenever it came up. Now though, for the most part, I try to find it amusing instead.
It can still be difficult though, especially when it involves something more complicated that requires too much low-level technical details to actually convince someone of the case.
We recently slightly changed the way orders are processed on our website. This was planned to have been a transparent, behind-the-scenes change. Unfortunately, there ended up being visual changes to the order forms.
Suddenly, everything was the fault of this change. In fact, we even had a special meeting about it, where all of these issues were brought up. And yet: All of these issues had nothing to do with the new system! In fact, I then had to spend additional time on each of those issues to further prove that this new system wasn’t the cause.
Read more |
1 Comment »

Review
This was my fifth year attending Pubcon Las Vegas. I would say the web, search, and marketing conference maintains the same high quality it has had since I first went in 2007 — though it is beginning to show some wear in certain places after so many years.
While I consider myself to be much more focused on the design and development of the web, I think it’s essential to be fluent in the marketing side of things. No matter how semantically perfect or aesthetically beautiful a website is, in the end a company’s goal is almost always the same: Make money. Pubcon is very good at hammering home that reality, and giving me the tools I need to succeed with it.
Keynotes
I attended two of the keynotes, skipping the third as in-house enterprise SEO didn’t really apply to me. I was excited to see Leo Laporte, who I listened to back in the TechTV days, and still occasionally listen to on twit.tv. Unfortunately I found his keynote rather lacking. It felt like one long biography. He also made what I would consider to be a fairly embarrassing statement that
Search engines will be irrelevant in six months
That sounds like something a CNBC pundit would say, not a man who runs a tech podcast network.
Matt Cutts gave the keynote the next day. Matt is one of the best speakers I have ever seen, and that on top of the fact that he is basically Google embodied always makes for an excellent presentation.
Sessions
Pubcon had nine tracks this year, which seems more than in the past. One improvement I noticed, personally, was that there was only maybe one hour when I didn’t find any sessions especially interesting (at least, in their description).
Unfortunately some of the sessions still had the same problem of titles that were far too similar, and descriptions lacking enough specificity. For example there were three sessions with the following titles:
- Facebook Marketing
- Facebook Marketing
- Facebook Advertising
Now it’s fine if there are three sessions worth of information on that topic, but why not specify the difference between them? How is someone supposed to choose which one to go to? Would they benefit going to more than one? Why not have a beginner and advanced version?
Speaking of which, that is something this conference desperately needs, and is something I’ve heard echoed by many other attendees. For example, I went to a WordPress session where the second two presentations were excellent and I learned a lot of new information. Yet I almost walked out when the first slide on the first presentation was “What is a WordPress Plugin?”
Speakers
Overall, I had much better luck this year ending up in sessions where people knew what they were talking about, had good slides, and were good presenters. Although that could have just been my luck at choosing sessions.
My biggest complaint about the conference was the abuse of using presentations that were several years old.
For instance, one of my favorite presentations ever was given three years ago in a session about information architecture. Unfortunately, I then saw the exact same presentation the following year, and this year as well.
It’s a great presentation, but honestly, there’s no excuse for using the same presentation that many years in a row. I saw the same thing happen at two other sessions as well.
This is another example of where having a beginner track could be useful, as you could funnel all of those repeat presentations in there for the new attendees.
Other Observations
Lunch was improved this year, slightly, in that it didn’t take 30 minutes to get it. I did show up early each day though just in case. The quality of food was what you would expect in, say, the dining hall of a decent four-year state college. There were at least a good amount of choices.
Coffee was few and far between, which I railed about in my earlier review, until I found out they have to pay about $9 a cup at the convention center. Thankfully this year there was a Starbucks booth in the main hall, as well as a energy drink vending machine which I made liberal use of.
My friend and I noticed that a lot of the women dressed up for the conference in tight-fitting clothes and ridiculously tall high-heeled shoes. That was a bit odd.
One of the first year I went to Pubcon, I marvelled at how few Apple products there were. Maybe 10%? Compared to, say, An Event Apart which has around 90% Apple products. This year, I noted the split to be nearly even.
This conference still feels like the best value out there. $749 for three days with all those tracks.
A Few Takeaways
The Fold Is Back!
I had fun messing with some designer friends about this. Yes, we all know that people know how to scroll, that it’s not worth sacrificing information architecture or design to squeeze everything to the top of the page. But we also can assume that people still make snap judgements on a site, and that of course the information at the top is going to have priority over information at the bottom.
This is now even more true as Matt Cutts announced that Google is now valuing information “above the fold” higher. Meaning, you want to have that optimized content near the top of the page. How does Google determine the fold though? Is a huge carousel image slider taking up 75% of the height bad in the eyes of Google now, or does it only see that as a few lines of JQuery? Definitely some unanswered questions with this.
Counting Clicks Doesn’t Matter Once Someone is “On The Scent”
I liked the phrasing of this tip. Once a user is “on the scent” of the information they want, they won’t mind a few additional clicks. I heard the same thing echoed in a different way by AEA darling Jared Spool, and then heard the same thing at another sessions at Pubcon, so I feel fairly confident this is a true statement.
I consider this way of thinking to be a huge step forward towards uncluttering the home page and navigation of a website. In other words, there’s no need to cram every single click option onto the home page or drop down menus.
Make Good Use of Canonicalization
For some reason, I never fully paid attention to proper use of rel=“canonical”. I went to some good presentations about it though, and understand its importance when dealing with duplicate content, similar content, and pagination.
This is even more important recently with Google Panda and the focus on the ratio of good quality pages to poor quality pages on a site.
Schemas
Schemas were only just being picked up by Google last year. This year, it seems like the rules for them have become more standardized. I’m looking forward to starting to incorporate these into sites, where applicable.
Dupicate Content
This was one of the best sessions I attended (via Kate Morris), so I’ll just copy and paste my bulleted notes from it:
- There is no penalty for duplicate content, it just confuses Google
- Dupes is your low hanging fruit, the easiest thing to fix
- Parameters that create an ampersand count as another page
- Rel canonical those print links
- Use “site:domain.com -site:www.domain.com” to find duplicate content on subdomains
- Tell Google to ignore parameters for pages where it doesn’t matter, via Webmaster Tools
- Crawl time is limited, that’s why we care about duplicate content
- Noindex those crappy pages to limit that
Read more |
No Comments »