Tech

Tech

The Real Pain of Software Development [part 2]

Around eight years ago I wrote a blog post about Repetitive Strain Injury entitled The Real Pain of Software Development [part 1]. I soon learned the lesson that it’s a bad idea to have “Part 1” in any blog post unless you’ve already written part 2. But here I am, eight years later, finally getting around to part 2. But better late than never! The original reason that led me to write about this topic was a period of debilitating pain I went through when coding. Too many long hours at the keyboard took their toll on me...

Professional ASP.NET MVC 3 is available!

I hate code samples in technical books! No seriously, this is bile I’m not afraid to give a permalink to (nor am I afraid to end a sentence with a preposition, so there!). Even the shortest code samples are a pain to type in. And if they show anything reasonably interesting, they’re probably too long to type in. Of course, nobody actually types in the sample code, they grab the code from the companion CD (blech!) or download zip files containing the code from the companion website. With Professional ASP.NET MVC 3 (print edition | kindle edition)...

Presentation Tips Learned From My (Many) Mistakes

One aspect of my job that I love is being able to go in front of other developers, my peers, and give presentations on the technologies that my team and I build. I’m very fortunate to be able to do so, especially given the intense stage fright I used to have. But over time, through giving multiple presentations, the stage fright has subsided to mere abject horror levels. Even so, I’m still nowhere near the numbers of much more polished and experienced speakers such as my cohort, Scott Hanselman. Always looking for the silver lining, I’ve...

Copying Files Over Remote Desktop

Here’s a handy tip I just recently learned from the new intern on our team (see, you can learn something from anyone on any given day). I’ve long known you could access your local drives from a remote machine. For example, start up a remote desktop dialog. Then expand the dialog by clicking on Options, then check the Local Resources tab. Make sure Clipboard is checked, and then hit the More… button. Now you can select a local disk to be shared with the remote machine. For example, in...

Honeypot Captcha

I was thinking about alternative ways to block comment spam the other day and it occurred to me that there’s potentially a simpler solution than the Invisible Captcha approach I wrote about. The Invisible Captcha control plays upon the fact that most comment spam bots don’t evaluate javascript. However there’s another particular behavioral trait that bots have that can be exploited due to the bots inability to support another browser facility. You see, comment spam bots love form fields. When they encounter a form field, they go into a berserker frenzy (+2 to strength, +2 hp per level, etc...) trying to...

Twitter Solves the Chat Usability Problem

Ok, this will be my last post on Twitter for the time being. My last two posts on the subject pointed out flaws with it, so I thought I’d follow up with something positive. A lot of people just don’t get Twitter, dismissing it as hype. I was firmly in that camp until I tried it, and now am a total Twit (Twitter addict). This morning as I stepped into the shower, I was wondering why Twitter has such a hold. Jeff Atwood calls it the combination of blogging and IM. But I had this nagging feeling that I’ve used...

Insert Code for Windows Live Writer

Several pople have asked me recently about the nice code syntax highlighting in my blog. For example: public string Test() { //Look at the pretty colors return "Yay!"; } A long time ago, I wrote about using http://www.manoli.net/csharpformat/ for converting code to HTML. But these days, I use Omar Shahine’s Insert Code for Windows Live Writer plugin for, you guessed it, Windows Live Writer. This plugin just happens to use the Manoli code to perform syntax highlighting. I recommend downloading and referencing the CSS stylesheet from the Manoli site and making sure to uncheck the Embed StyleSheet option in the plugin. The...

How to Harvest Emails With Google And Protect Yours From Spammers

Just something I noticed today. A lot of people (I may even be guilty of this) publish their emails on the web using the following format: name at gmail dot com Substitute gmail dot com with your favorite email domain. The problem with this approach is that it is trivially easy to harvest email addresses in this format with Google. First, do a search for the following text (include the quotes): "* at * dot com" Now, all you need to do is run a regular expression over the results. For example, using your favorite regular...

Rhino Mocks 3.0 Released!

Ayende just announced the release of Rhino Mocks 3.0. The downloads are located here. If you aren’t subscribed to Ayende’s blog, I highly recommend it. This guy never sleeps and churns out code like a tornado. Ever since I discovered mocking frameworks in general, and especially Rhino Mocks, mocking has become an essential part of my unit testing toolkit. A while ago I wrote a short intro demonstrating how to write unit tests for events defined by an interface. This small example shows the usefulness of something like Rhino Mocks. If you’re wondering what the difference between a mocks, stubs, and fakes, be...

Geek Slap Fight - Get Rid of WWW

Forget flame wars. They’re so USENET. The new way of geek fighting is much more subtle. Recently Scott Hanselman wrote a post on the SEO implications of URL standardization which Jeff Atwood followed up with his post on URL Rewriting to prevent Duplicate URLs. Jeff makes it known that he prefers that his blog be referenced with the “www.” in the front. I think that’s an unnecessary three characters that is quite dated. Yes, we know your blog is on the World Wide Web. The World Wide Web is no longer a nice new shiny bauble. You can...

Identicons as Graphical Digital Fingerprints

How do you uniquely identify a person, without divulging the identity of that person? For example, given a set of personal artifacts, how would I arrange the set of artifacts grouped by the person to which they belonged? The answer is quite easy, isn’t it (especially given the title of this blog post and the image to the right)? You can look at the fingerprints on the items. Unless you happened to have a file that mapped the fingerprints to individuals, you won’t know who the comb and mirror belong to, for example, only that they do belong to the same person and...

The Misuse of the Space Shuttle Analogy

Jeff Atwood writes a great post about The Last Responsible Moment. Take a second to read it and come back here. I’ll wait. In the comments, someone named Steve makes this comment: This is madness. Today’s minds have been overly affected by short attention span music videos, video games, film edits that skip around every .4 seconds, etc. People are no longer able to focus and hold a thought, hence their "requirements" never settle down, hence "agile development", extreme coding, etc. I wonder what methodology the space shuttle folks use. You shouldn’t humor this stuff, it’s a serious...

Role Playing Via Skype

So Adam Kinney isn’t quite as ga-ga over Oblivion as I. Understandable. As he points out, it is missing the key ingredient of social interaction with other real humans. Now why would you want to interact with other humans when you have the computer? ;) I suppose it is true that conversation via a drop down list isn’t doesn’t produce quite as stimulating a conversation. What if the AI reaches the point that a game like Oblivion is indistinguishable from an online multi-player game? Would that be as satisfying? I digress. As Adam states, I don't...

Google Print Is Still A Good Idea

I say to you that the VCR is to the American film producer and the American public as the Boston strangler is to the woman home alone. -- Jack Valenti, former head of the MPAA I know that Dave Winer has dismissed Google Print as a bad idea, but Dave is often hit or miss with his opinions. However I was surprised to see Dare’s criticism of the effort. Yes it is true that Google’s “Do No Evil” motto is pure marketing schtick, and now that they are a large corporation, they can be just as evil as any other...

Google Has The Answer To Life The Universe and Everything

Try searching for the following search term in Google... The Answer To Life The Universe and Everything Or just click on this link.

Trillian Wikipedia Integration

I'm chatting with my buddy Micah who will ask me a question and then annoyingly answer it himself immediately after. For example, he asked me how FireFox picks up an icon from web pages. I replied that there's a favicon protocol but that I didn't know the details. He then proceeded to explain how to format the link tag properly. Apparently the latest version of Trillian will highlight words with links to their definition in Wikipedia. So as you chat with your friends, you become a living breathing dictionary. That's a rather nice feature for IM conversations.

10 Unwritten Rules for a Consultant to Live By

Now I've never been a consultant myself, but I have friends who have been consultants. Namely Kyle. What do you think of these rules? [Via DonXML Demsak's Grok This] You work for the client, not the consulting firm.  No matter who cuts the payroll check, the client is the one paying for your services.  Do the right thing for the client, not the consulting firm (or anyone else). Your network of consultants is your most important asset. Consultants should keep a blacklist of firms and other consultants that should be avoided, and why.  Share this list with your network of...

The Real Pain Of Software Development [part 1]

UPDATE: I finally followed up with part 2, only 8 years later. When you ask the average programmer what problems plague the practice of building software, you’ll probably hear responses such as: The impedance mismatch between relational databases and object oriented code. The difficulty of writing secure code. Managing complexity and requirement changes.. Certainly, these are all worthy problems to tackle, but the problem that comes to my mind is how much pain I’m in when I write code and how few people really understand this. I hope to write a series of articles about typing pain...