Archive for December, 2008

Triple Shot Links # 14

srp_poster

I’m getting ready for a quiet New Year’s Eve at home with the family. This will be the first one in recent memory where I may actually remember what happened the next morning.

  1. Create Your Own Motivator Poster – I’m a big fan of the humorous anti-motivational posters that you can find on places like despair.com, so I was thrilled to discover a site that allowed you to design your own. I pulled the SRS example shown to the side from an elegant code post by Jarod Ferguson.
  2. Ten Things to Retire in 2009 – Jimmy Bogard kicks off the retrospective post season right with his round-up of annoying developer trends from 2008 that he would like to see disappear in the new year. My personal favorite is LINQ 2 Your Mom (#5) where he bemoans some of the LINQ abominations that have recently surfaced. Mom jokes (not the nice kind) are staple where I work and I nearly spit out my coffee laughing when I read it.
  3. SSL Spoofing Now Possible…. RUN FOR THE HILLS! – A great explanation of how SSL spoofing works, what can be done about it, and whether or not we should be concerned. The short answer is…probably not.

Popularity: 5% [?]

Finding a Good Cheap Home for Side Projects with Unfuddle

If you’re looking for an external, non-open source home for your code or a light-weight, web-based project management tool, I highly recommend using Unfuddle.

Actually, up until recently I wasn’t all that crazy about this site. We had been using it at work for the last year as a project management tool for external clients who wanted to integrate with our web services and it seemed rather limited and clunky when compared to JIRA, the most excellent issue tracking tool we use internally (there were various internal constraints that prevented us from using JIRA externally).

It wasn’t really until I started searching for an external location for my DosPecesCreation repository, the project I’ve been working on in my spare time recently, that I gained a new appreciation for Unfuddle.

Most of the free options for externally hosted repositories out there seem to be limited to open source projects, but Unfuddle offers a private plan for free that provides an unlimited number of Subversion or Git repositories along with 1 associated project for issue tracking and access for 2 people.

By moving my code from a local repository to unfuddle, I was not only able to work from multiple computers without the headaches involved in using a tool like Live Sync (formerly FolderShare) in conjunction with SVN, but I was also able to offload much of the CSS and HTML work to my wife. Before she had been sending me email approximations of the changes she wanted, but with a quick 5 minute tutorial on TortoiseSVN along with some automated scripts and shortcuts to set up her Rails environment, she was able to make the changes directly herself.

Of course from my lovely stakeholder’s perspective, that that mostly just meant that I now had more time to work on the now rather large list of programming-related feature requests that she had thought up for version 2.0 of the site.

Luckily, Unfuddle has helped with this too. It dramatically increased my ability to organize and group tasks while adding only a minimal amount of overhead. The last thing I want when I am working on a project in my free time is anything remotely heavy weight in terms of process.

While this minimalist approach might not work as well in heavily regulated corporate environments, it fits beautifully for small, agile teams and especially for small 1-2 developer projects.

Here’s a screenshot of the current tickets broken down by milestones (which we decided to base upon 2 week release cycles). As you’ll notice, I’ll be spending some nights in the near future working on caching and implementing all of YSlow’s suggestions in order to speed up the site a bit.

DPC_Unfuddle

I had a sneaking suspicion that my nights would be busy for quite some time, but now thanks to Unfuddle I have a much clearer picture of the extent of my servitude.

Looks like I’ll have free time again sometime in the fall of 2014…Thanks unfuddle!

Popularity: 7% [?]

Triple Shot Links # 13

self_clicking_next_button_closeup_vistaHere are a few links to distract you from all the holiday family dysfunction.

  1. IT Industry Revolutionised By Labour Saving Device – Leon Bambrick (a.k.a Secret Geek) serves up a wickedly funny post that pokes fun at SysAdmins…<excerpt>”The ’self-clicking’ “next” button is set to revolutionize how computer users ‘Get Things Done’ — but a wave of fear is sweeping an industry facing wide spread redundancy. System Administrators are expected to be the hardest hit, with over 90% of their duties now offloaded to the clever button”</excerpt>
  2. Resolution Randomizer – Thanks to this handy little SilverLight app, I don’t have to waste any effort thinking about resolutions this year. Top on my list now is to “Never again try drinking cocktails in the bathroom”.  Finally, a resolution I have a chance of keeping.
  3. Work on what you use and share the rest – DHH, the Grand Poohbah of Rails, shares some surprising news that Merb will be merged into Rails 3. One of the major criticism of Rails is that it is too much of a monolithic framework, which means that it is not possible to substitute in your favorite view engine or data access frameworks like it is in Django. Merb is an alternative Ruby based MVC framework that is based on a plugin model, so this seems like a pretty smart move on the part of the Rails team.

Popularity: 5% [?]

Look What Santa Brought

Apparently someone tipped Santa off that I like the TV show the Office. His elf spies are everywhere!

Happy Holidays from CaffeinatedCoder and his little pre-caffeinated helper Sofia. She is also modeling one of her Christmas presents in the picture above, a most excellent pair of cow pajamas.

Popularity: 5% [?]

DosPecesCreations: Some Initial Thoughts on Building My First Rails App

I’ve spent most of my free time over the last 3 months (…and by free time I mean after everyone else has gone to bed) building DosPecesCreations.com, which is a small e-commerce application for my wife’s new jewelry business.

dospeces

I am a .NET developer by day, but I wrote the app in Ruby on Rails. I already mentioned some of my initial impressions about working with Rails, but since I just reached a new milestone by having finished and deployed version 1.0 of the app, I thought I would take a few moments to share some further reflections on the topic.

Why did I choose Rails?

Mostly practical reasons.

My hosting provider runs on a LAMP stack and the only options available to me were PHP or Rails. I suppose I could have moved to a .NET hosting site, but I’ve had good experiences with PrecisionEffect and like the idea of balancing my .NET experience with side projects that are built using other platforms.

I’ve  customized my blog, which runs on WordPress, enough to have already developed a distaste for PHP so that left Rails. I know that I’m 4-5 years late to the Rails party and that the cool kids have all moved on to more cutting edge things, but better late than never.

Am I glad I chose Ruby on Rails?

Definitely.

Don’t worry, I haven’t found religion. I’m not going to start spouting off about how Rails is so technically or artistically superior to .NET or other alternative web frameworks.

The main reason that I am glad I did the project in Rails is because it was a rejuvenating experience to immerse myself in a very different programming paradigm for a while. The simple act of starting over from a technical perspective allowed me to once again enter into that ‘hungry-and-excited-to-learn’ mode, a mind set which is very difficult to sustain when you stick to the same technology year after year.

I’m convinced that most of the annoying exuberance from early Rubyists had more to do with the psychology behind this experience than anything else.

Don’t get me wrong. I think Rails is a very innovative framework, but I’m pretty sure I would have felt the same level of excitement if I had worked in Django, Merb, or [insert new fangled web framework here] instead.

Was I able to develop DosPecesCreations faster in Rails than I would have been able to do in.NET?

Absolutely NOT.

Don’t tell my wife this, but I’m pretty sure I could have finished the whole thing in half the time if I had used .NET instead.

Before you start flaming me, I fully attribute this slowness to the newbie tax.

Anyone who has ever been burned by a clueless CIO that has trashed an IT department’s reputation by promising stakeholders extravagant productivity gains as justification for upgrading to the latest and greatest technology andor language knows about the dangers of this often forgotten tax.

The dirty truth is that your productivity is going to take an initial nose dive as you get acclimated to any new language, tool, or technology. It doesn’t matter if you are moving from Assembly language to Ruby++++, it’s going to take some time and patience before you see any dividends.

This initial learning curve slow down is exacerbated in the case of Rails by the fact that the documentation is terrible compared to .NET. Partly this is because no open source documentation that is maintained mostly by programmers who by their very nature hate documentation is ever going to compete with what legions of well paid technical writers hired by Microsoft can produce. It also doesn’t help that the Rails community plays much much faster and looser when it comes to backwards compatibility than Microsoft, thus making much of the existing free blogosphere documentation stale. The fact that Ruby was created in Japan and much of its primary documentation was never translated just doesn’t help either.

With that being said, I do think that if I were developing in Rails full time, then after a few months I would be able to whip out web applications with Rails much faster than I otherwise would with .NET.

This shouldn’t be much of a surprise since Rails is a high level DSL for web applications that relies heavily on the notion of convention over configuration to streamline development. Once again, not always a benefit for newbies since it often decreases discoverability, but it definitely speeds things up once you get the hang of it.

Finally, a shameless sales pitch on behalf of the spousal unit

Are you currently in the dog house with your significant other for playing World of Warcraft too late last night or trying to read your twitter feed on your smart phone while she was telling you something “important” or simply for working too much overtime? Why not bribe…er… show her how much you love her with a surprise gift of earrings, a necklace, or a bracelet

Each item is a unique creation from my wife and is very reasonably priced, which means you’ll have money left over for that that new solid state hard drive you’ve been wanting.

Even if you’re not currently in trouble with your wife, it is probably only a matter of time. If you’re reading this blog, then you’re probably both a guy and a geek, which means that the odds are stacked heavily against you.

Face it, you might as well start sucking up now so she’ll go easier on you later when the inevitable happens and you screw up. In fact, you may have already done it and she is just waiting for you to figure it out.

Most importantly, by purchasing jewelry from DosPecesCreations you will will keep my wife busy at night, thereby freeing up time for me to blog more. See? Win win win…

P.S.: Enter ‘SPCDLV’ for a coupon code and your shipping will be free.

Popularity: 7% [?]

Triple Shot Links # 12

What better way to unwind after a long day of dealing with annoying car salesmen than to catch up on a little blog reading? Having no car payments was nice while it lasted. Dang icy roads…sigh.

  1. The Other Half of ‘Artists Ship – A great postessay by Paul Graham about the hidden costs of excessive controls within organizations, especially when it comes to the productivity and morale of developers. Having personally had my spirit crushed by a number of Sarbanes-Oxley Nazis at my last job, I particularly appreciated his example of how SOX regulations have single-handedly destroyed the US IPO market.
  2. Reginald Braythwayt’s resume – Whenever I felt the urge to feel vastly inferior about my career accomplishments as a developer, I used to peruse Scott Hanselman’s resume. Now I have a new tool to serve all of my self-esteem flagellation needs.
  3. What’s the Value of a Big Bonus? – I love psychological research that challenges common sense. This NY Times article outlines a few studies done that suggest that higher compensation can actually lead to poorer performance when it comes to jobs that require higher cognitive skills. The possible reason? With high compensation comes high expectations, which leads to extreme stress, which then undermines performance. It’s a Zen thing…

Popularity: 5% [?]

Triple Shot Links # 11

Only 6 more days until Christmas and 5 more days until I start shopping. Here are some good reads to keep you busy while you procrastinate on your shopping.

  1. Oxite – Oh Dear Lord Why?! - Oxite is blogging engine built on the new MS MVC Framework that Microsoft recently released as a sample app. The Alt.NET community in general has been ripping into it for being a hodge-podge of anti-patterns, but Karl Seguin’s post is perhaps the most brutal and detailed I’ve seen. It’s entertaining in a car-wreck sort of way. 
  2. Solid State Drive: Enhance developers’ productivity – Patrick Smacchia posted some benchmark results that he did with his new solid state laptop and it kicked the crap out of his desktop. Santa, this is all I want for xmas…I promise I’ll stop trying to hack into the naughty-nice data warehouse…please?!?
  3. Hanselminutes: Behind the Scenes – StackOverflow and Jeff Atwood – Part 2 – I listened to the first half of this episode on the way to work this morning and it was pretty entertaining. It was basically an out take of the conversation that took place after the interview with the StackOverflow team. I was particularly riveted by the follow up conversation on why StackOverflow was ignoring so many security best practices when it came to their physical architecture. Like Scott, I also come from a banking background and was really surprised when Jeff Atwood originally described their setup. To be fair, the shoestring budget of startups definitely places restrictions on what can realistically be done.

Popularity: 5% [?]

Curing Cancer, Preventing Global Warming, and Achieving World Peace by Migrating from VSS to SVN

I admit that the title is slightly misleading. There will obviously never be meaningful peace between the Microtards and Macophiles.

Nevertheless, if you are currently languishing under an oppressive Visual Source Safe regime, then I hope to inspire you to rally your coworkers and end the source control tyranny once and for all.

By switching from VSS to Subversion (VisualSVN Server makes it extra easy), you will be able to …

  1. Rename files within Visual Studio – I can’t believe that after all these years something as simple and basic as renaming a file within the IDE (even in VS2008) still doesn’t work correctly with VSS. Even if you manage to save the history of your file by remembering to change it first with the VSS client and then change it again in the Visual Studio, you are still likely to break either the continuous integration build or screw up one of your co-workers who happens to get the latest version while you are in the middle of doing this. Even AnkhSVN, the free open source Visual Studio plugin that provides integration for SVN, can seemlessly handle this scenario. All I can say is WTF Microsoft?
  2. TortoiseSVN Interact with the repository through Windows Explorer – I definitely recommend using TortoiseSVN when interacting with your SVN repository outside of Visual Studio. It is a Windows Explorer shell extension, so you can execute all of the source control commands by simply right clicking within a normal Windows Explorer window. Some of my co-workers were reluctant to give SVN a chance at first because they assumed that it required a substantial amount of CommandLine-Fu. While SVN does have great command line support, TortoiseSVN makes it extremely intuitive and easy to use.
  3. Use your windows password – How is it that SVN can use integrated security but VSS cannot (WTF # 2)? Not only are you forced to deal with another set of passwords for VSS, but it won’t even enforce any type of password complexity rules. As a result, most of the developers at my old job used blank passwords for 5-10 years thus making security a joke even though it was a heavily audited environment. Even if you’re not too concerned with securing your source code, you will at least appreciate having one less password to manage.
  4. Cease to worry about the repository size – Microsoft recommends that VSS database sizes not exceed 3 to 5 GB (no, it hasn’t improved at all in VSS2005) This is a rather serious limitation since the two places I’ve worked at before that have used VSS both easily surpassed that mark despite having a relatively small number of developers. Besides requiring a lot less space because revisions are stored as differentials, SVN has no inherent size limitations after which corruption starts becoming likely.
  5. No longer have to regularly duct-tape your repository – I always found it troubling that an official Microsoft best practice was to frequently run Analzye.exe, a utility whose sole purpose is to repair corrupted files. If that wasn’t bad enough, this utility takes forever to run (4 hours where I work) and requires everyone to be out of the database while it attempts to fix the corruptions that appear to happen whenever someone hits the enter key too forcefully.
  6. Retrieve files faster – The solution I work in most often has 16 projects (yes I know we need to refactor it…) and doing a ‘Get Latest Version’ in VSS was painful to say the least (often taking as much as 40-60 seconds to complete). SVN updates only take that long when I am retrieving the files for the first time. After that it only transmits files from the server that have changed so it is much faster.
  7. Branch without fear - The last time I tried creating a branch in our VSS repository, I gave up after an hour. Subversion does the same operation in about 30 seconds and it doesn’t make the disk size swell because it just creates links to existing tree structures rather than duplicating data like VSS does.
  8. Work remotely without disconnecting - When VPN‘ing into work, I always had to disconnect my solutions from VSS because any interaction slowed my work down to a crawl. SVN not only consumes less bandwidth because it only sends differentials instead of whole files across the wire, but it also stores base copies locally thus allowing you to analyze changes you’ve made without even being connected.
  9. Maintain all of your VSS revision history – I settled on Eric Lane’s enhanced version of VSSMigrate and was able to successfully convert all of our VSS version history to SVN. Eric’s enhanced version of this utility even stripped the VSS binding information from the project and solution files during the migration, thus saving quite a bit of tedious manual work. My only complaint is that it wasn’t able to convert labels over as well, so if anyone knows of another utility that does this please let me know.
  10. Group and commit changes atomically – VSS doesn’t have any way to group changes together and doesn’t allow you to commit a group atomically, which means that you will be in for a world of hurt if your transmission fails halfway through a commit. SVN will not only rollback changes to the repository if any failures occur, but the revision number schema that groups changes together is also really handy for auditing and code review purposes.
  11. BlameMore easily blame co-workers for screwups – The SVN Blame report sure does live up to its name. You aren’t sure who added that scary looking condition to a core function 3 years ago? Run the blame report and you will see a name next to each line of code so you know exactly who to go “talk” to.
  12. Use some pretty slick tools – Since SVN is the defacto standard when it comes to source control, migrating to it will open the door to a number of very slick tools. We use JIRA and Confluence, so I’m particularly excited to try Crucible, another pretty slick tool by Altassian aimed at streamlining the code review process.

There are definitely more cutting edge options out there for source control (like Git), but if you’re coming from a VSS shop and are at all worried about encountering resistance from your coworkers or boss to a migration, then Subversion is probably your best bet. It is an extremely popular, stable, usable, and cost effective option.

Most importantly, it beats the hell out of VSS.

Now, go forth and do your part to rid the world of this horrible VSS scourge.

May God have mercy on your soul…

P.S. If you want to read a rhyming ranting by me about VSS, then check out this post

Popularity: 10% [?]

Triple Shot Links # 10

I recently deployed my first Rails app into production, so I have Ruby on the brain. Here’s some interesting posts I stumbled across from the Rails world recently that .NET’ers might find interesting.

  1. The Opposite of Momentum  – An interesting perspective on the current state of Ruby on Rails according to a veteran Rubyist. The author sees the language as stagnant and offers some good technical insights into the weaknesses of the Ruby interpreter. The post also offers an interesting glimpse into how people who thrive on the cutting edge deal with the psychological hardship of suddenly becoming mainstream.
  2. The Rails Myths – This is actually a series of six posts by DHH, the creator of Rails, that seeks to address the most popular criticisms against the framework on issues ranging from reliability and deployment to usability. I included it as a balance to the first link. Although some of DHH’s arguments are definitely debatable, he rightly points out that many of the standard criticisms have been clearly addressed by newer versions of the framework or by popularization of newer, alternative plugins and tools.
  3. Why Capistrano Is Dropping Support for Windows – An interesting response by Jamis Buck, the creator of Capistrano, a popular deployment tool for Ruby on Rails. Jamis recently announced that he was dropping support for Windows. When presented with the argument in this discussion thread that there are a growing number of Rails developers on windows, Jamis reminds everyone that he isn’t getting paid to do this and will therefore chose to do whatever is intrinsically interesting to him rather than what is in the best interest of the platform. It’s a classic (and fair) open source stance, but not one that most windows and MS developers are used to confronting. However, since Open Source tools and frameworks are becoming more mainstream in the windows corporate world by the hour, it is a position that we’d all better acclimate ourselves to.

Popularity: 5% [?]

My Essential Tool List

My heart skipped a few beats the other day due to that awful hard drive clicking sound that usually precedes a hard disk failure.

So, in honor of the impending machine rebuild that I will likely face soon, I thought I would create my own essential tool list to document my current thoughts on the matter.

I am not so ambitious as to try to follow in the footsteps of Scott Hanselman with his famous ultimate tool list (which I still consult on a regular basis) and create an exhaustive survey of almost every good tool out there. Instead, I opted to only list my current tool of choice for a particular category and task.

I really like experimenting with new tools and am usually content to use any number of tools for a given task. However, I also try to simplify my life as much as possible by only keeping what I think is the best tool for a particular category of tasks installed on my computer at one time.

For example, I used to be a big fan of SlickRun and WinKey to launch my programs. But as soon as I discovered Launchy and AutoHotKey and came to the conclusion that they were better, I uninstalled SlickRun and WinKey lickety split. I still think they are both good tools, but who needs all the clutter…

I definitely welcome any suggestions for improvements to my current lineup.

Development

Code Analysis

Development Lifecycle

Debugging

Utility

MISC

Essential WebSites

Popularity: 16% [?]

Next Page »