she swears <i>geek</i> is a term of endearment

Setting up Asp Classic on IIS 7 Vista

May 19th, 2007 Rusty

Out of the box, IIS 7 does not have ASP enabled.  To enable asp classic on IIS 7.0

  • go to Start > Control Panel > Programs and Features
  • On the left of the window, notice “Turn Windows features on or off”.  Click that
  • Wait for a very long time
  • Expand Internet Information Services > World Wide Web Services > Application Development Features
  • Check “ASP” (while you’re in there, you may want to set up your ftp or authentication features… )
  • Wait while it installs the necessary stuff
  • Go to Start > Control Panel > Administrative Tools > Internet Information Services (IIS) Manager
  • Restart IIS ( you can also still use: Start > Run “iisreset” )

ASP should now work!

Agile Development in Atlanta

May 6th, 2007 Rusty

I’m truly struggling to find an Agile Community in Atlanta.  Quite some time ago (2005), I discovered the [tags]Agile Atlanta[/tags] User Group and attended a meeting.  Stacia Broderick presented Scrum to the group.  It really was a great meeting but I haven’t attended one since.  I check the website frequently but it is rarely updated.  They have had a few meetings and at one time gathered some folks to inject some leadership into the group but it hasn’t really seemed to gain any momentum.  I certainly don’t fault anyone for this as I experienced the challenge of starting the C# User Group many years ago.  There were meetings when only 3 of us showed up.  Then there were times when the room was packed and we had no presenter (so we just winged it).  …but I hope to see something spark soon.

I am participating in a few user groups at the moment.  My schedule is pretty stretched so I can’t take on another responsibility at the moment.   However, if nothing has happened by, say October, I may try to build an Agile Software Development Community in Atlanta.  I’d love to hear some feedback and get some contact information for people who would be interested.  Leave me a comment here or email me at rusty -at- pwg -dot- com or rustyzarse -at - gmail -dot- com.

I am personally a Scrum practitioner but I have read up on Crystal Clear and Feature Driven Development as well.  I use Rally Agile Project Management Software in my daily development.  We use Test Driven Development (TDD), Pair-Programming, the daily scrum, Continuous Integration, Reflective Review and Time-boxed, Story-centric iterative release planning.  However, we are learning like everyone else and adjusting constantly.  I would love to find like-minded agile enthusiasts to collaborate with so we can grow the Atlanta Agile Community!

Ruby Tools for the Windows Programmer

May 6th, 2007 Rusty

I am digging into Ruby. Unfortunately, every Ruby programmer I know uses a mac so I don’t have someone to recommend a good IDE. I’m looking for that productive experience, not a text editor experience. My days of feeling cool because I develop in Notepad are over. I’m not giving up intellisense, even if I have to write the module that provides it. I’ll keep a running list of the tools I try and how it works out here. If anyone has comments to share, please do! As I learn, I’lll keep adding information to this post, although I may migrate it to a persistent page if things go well and it becomes valuable. I will try to maintain the context of being a ruby newbie as I add details so other newbies can find relevance.
SciTE - Looks promising and very simple (which is good). Came with Ruby. next…

Ride-Me - looks very comfy for a VS.Net guy. Blew up stating: “ride-me can’t find your ruby folder”. Google Ride-Me Group Post indicates this might be due to having Instant Rails installed, which I do. Not ready to delete that right now. next…

Free-Ride - lofty goals listed on the home page. Looks like another potential winner. FAQ includes note about a Windows bug that slipped into the last build and a link to the post about how to fix it. I love the community support this is suggestive of. Unfortunately, the install failed to add the start menu shortcut.  You have to execute run.bat in the root to launch it.  Its now throwing a similar error to Ride-Me when I try to set preferences.  It cannot find or execute ‘c:\ruby\bin/ruby.exe’.  I tried adding the trailing slash which fixed the message but still throws and error.  I’ll keep you posted

The best programming language

May 5th, 2007 Rusty

What is the best programming language today?

That is the basis for the discussion at the next Atlanta Web Entrepreneurs Meetup. While I’m sure its just a general discussion about options, and the pros and cons for each, the title is consistent with typical IT behavior. People tend to choose a technology and then they stick to their guns. This becomes more pronounced the longer the group invests in a technology choice or the longer an individual invests in their expertise on one or a set of languages or products. Its a common software anti-pattern that should be avoided.
For years I have been voluntarily confined to the technologies produced by Microsoft. This has never represented a hindrance for me as Microsoft has consistently produced among the best platforms and extraordinary support plus amazing tools for developing within their frameworks. We had C++ and VB then ASP and Com, then, of course, the .Net Framework and ASP.Net. Recently .Net has expanded tremendously to include higher level abstractions for presentation, service integration and data access. The tools and frameworks continue to keep pace with the industry while the next gen products push the envelop and create new opportunity for innovation. I believe a business who chooses Microsoft software development technologies is making a cost effective strategy decision as they have enterprise level product support, robust tools and available features, a thriving community and a stable, evolving platform. As I said, being Microsoft-centric has never held me back.

Recently I have been using non-Microsoft tools to satisfy some of my business needs. For example, this blog is a WordPress blog. I was using DasBlog but found the WordPress features and community to be undeniably more advanced. WordPress is a php app and I had rarely used php before. I’d previously installed php apps for things like Time tracking and Wiki’s. At that time I found the installs to be difficult and unreliable. Remember that I am using Windows and you might understand why these things didn’t work very well. It isn’t that Windows is more complicated than Linux, quite the contrary, but the products were usually written on and for Linux and the permeating attitude that Windows sucks creates a mental obstacle for the people who developed these applications. I still find php documentation that states, “why would you want to install this on Windows?” in response to, “I’m having trouble with my install on Windows.” That isn’t veru helpful. I installed three php ticketing systems on my Windows IIS server with not a single one of them working well enough to be viable. If I had a Linux box lying around, these free apps would have worked out of the box zip. These particular apps were mostly two or more years old. However, more recently, times have changed.

WordPress installed perfectly and I found more than enough documentation online to help me get MySQL and PHP running on my Windows development server. No attitude, no holier-than-thou nepotism. In fact, it is amazing how supportive and philanthropic the WordPress, PHP and MySQL user communities are today.

Then there’s Ruby. Ruby is this new, contagious, viral explosion of software development advancement and growth. Its a language but its more than that. Imagine if someone were truly passionate about a thing and he decided he thought he could merge all the best parts of all the various alternatives he was presently using. Imagine if this person were a theoretical purist with deep knowledge of modern industry principles and he undertook this personal dream in his spare time without the potential corruption of a time-constrained client. Imagine he then donated this work to the public domain, hoping for nothing more then that his creation would improve the lives of people like him who loved his art. Imagine this person comes from a culture where “I” usually means “with the approval of the group”. Yukihiro “matz” Matsumoto
is this person and what has resulted is truly remarkable. I dunno, maybe he’s just a smart marketer who figured out how to play on the fantasies of software developers everywhere. Regardless, its silly to ignore this phenomenon.

In a recent environment I was in, there was blanketed animosity for Microsoft technologies from the non-software dev departments yet the landscape of anything not Microsoft was completely locked down and inaccessible. If you wanted to learn about Linux or Java or anything that wasn’t part of your Visual Studio image you would have to set it up at home, learn on your free time and prove your worthiness before anyone would entertain your capability to diverge from the approved path. In reality, this passive-aggressive culture was an insurmountable obstacle to expanding your horizons and resulted in people just continuing to work around the problem rather then embracing a solution. To further magnify the situation, technologies were chosen without the input of all affected parties and then they were not allowed to touch various aspects of these systems, expecting to work within their isolated interface and leave the internals to the experts. This is a job-security related anti-pattern whereby certain people keep certain things to themselves to retain artificial value in the organization.

That is one side of things but the other side is pure ignorance. Not knowing what is out there is just as bad as not being allowed to touch it. Branch out, learn and try new things. You’ll either find something valuable or you’ll learn new techniques you can apply to your previous platforms.

The short of all this is never lock-in to one technology without evaluating it constantly and banging its virtues up against the alternatives. It pays to limit how many diverging solutions you maintain but that shouldn’t preclude investigating better, more cost-effective solutions

Technology Lock-in should be punishable by physical beatings.

Technology Anti-Patterns

May 5th, 2007 Rusty

Software Design Patterns are simply established and well-documented ways to solve common business problems that have been given a title. Any software developer worth their salt who wishes to advance themself, and the quality of their work, must make themself familiar with the gang of four (GoF) design patterns and the related literature applying them in the technology of their choice. If you think, “I am sure someone has had this general problem before,” then you can probably find a design pattern that fits well. This will save you time in designing the overall solution and provide excellent documentation regarding how the solution works. You can simply state that something implements the “Chain of Responsibility” design pattern” and the basic principles you used to design the system are externally understood (and documented and accepted). That’s down right profound and the primary reason to use them in your work. However, their is a dark side to every goodness…

AntiPatterns

Anti Patterns are patterns frequently used in enterprise software development that are not beneficial to the product, the development team or the company behind the software, not to mention the software development community. How many times have you heard of a new leader taking over an IT department and moving everyone from one platform to another without an objective cause? Or have you ever been told, “we use ‘x’ for that here,” when you proposed a better or more cost-effective solution? Finally, we all cringe when someone pastes code from one place to another because it’s just easier and faster then refactoring it into a reusable structure. Fortunately, people are starting to document these as well and the result is both humorous and frightening (and so, soooooo familiar).

I’ll try to keep this table updated as I find more. After, I’ll explain my favorites!

Antipattern Description
Blob A large class with too many attributes and is the “heart” of the system
Poltergeists Unnecessary classes and too much abstraction
Spaghetti code Program code that has no structure (lots of goto statements)
Stovepipe systems Applications are unique and isolated
Wolf ticket A technology that claims openness, but has no conformance standard test
Continuous obsolescence The attempt to use the latest release
Cut-and-paste Software errors are duplicated
Golden hammer Forcing everything to fit a selected tool

Go lden Hammer - This is where a decision is made to use a tool and then that tool becomes the beginning of every design discussion and decision. Let’s just use a search tool as an example (I can talk about this now because it won’t get me fired). Let’s call that tool Starteca. Let’s say Starteca is a great tool for indexing documents and is purchased to power a document-centric website. Then this tool is decreed as required to power all other website searches, forcing every piece of data to be pushed to some document format. Finally, all data access must go through Starteca until developers are spending the majority of their time trying to figure out how to program around data updates proprietary to Starteca and you end up with a bunch of apps that been completely spider-webbed around Starteca. Suggesting using a database gets you immediately transfered to QA. If a business client asks for a web-based email client: “we’ll use Starteca for that!”. If they need a data cube for analyzing user behavior: Starteca. An email client: starteca. A coffee machine: starteca. Their car washed: starteca…

Email submission support ticketing system compatible with IIS

May 2nd, 2007 Rusty

I am trying to find a simple ticketing / issue tracking system that allows pop3 ticket creation that is compatible with MS IIS.

I’ve used RT (as a ticket creator, not an admin ) and want exactly this functionality.  I found osTicket and eTicket, both of which support the feature (they are basically the same).  However, they appear to require Perl, which I have installed (ActivePerl), but the pop admin changes fail to save.

I will continue to search but it seams as though this basic functionality would be a given.  Unfortuntely, it is not easy to find.  I have been debating setting up an Linux/Apache server for a while but I have one problem, I am responsible for administering and managing all installs.  I have little experience with Linux and I am not really overwhelmed with free time to learn a new platform.

If anyone knows of a simple ticketing system that can retrieve tickets via pop3 and is known to run under IIS, please let me know.

I don’t need much, just simple ticketing.  Hell, I could probably build one faster then I can configure a new linux server.   Then the questions becomes, is it more work to maintain the code or more work to maintain the server?

Search engine presentation missing the magic bullet

May 1st, 2007 Rusty

John Sherrod’s SEO Presentation apparently was just basic SEO.  The title of the talk was, in fact, “Practical SEO for Successful Online Businesses, ” but I suppose some people were there with their laptops ready, ftp’d into their website, waiting for the drop.  One person said, “presentation skills lacking.”  Well, pal, seams I should say, “social skills lacking.”  Another complained that he couldn’t jot things down.  Sorry your hand couldn’t move fast enough to notate 5 years of experience in a Thursday evening presentation.  Aparently he was too busy trying to write down everything on every slide to write down the terms he didn’t understand.  He also complained about that.

Yet another stated “Basic SEO but hit on a few cool point.”  This gentleman is in internet marketing, himself. He operates SEO-centric websites.  He should know some things about tweaking the algorythm.  He also likes to link to himself.  Its gotten him to number three for his own name.  Not bad. 

Problem is, folks, I heard non of you speak up when John was there speaking and Mike passed out note cards for you to write down your questions.  “Write them down,” he said, “so you won’t forget them, and ask them at the end.”  If you had questions or didn’t understnad something, why are you now complaining that you are still without answers?  You had an opportunity to ask the speaker and resolve these issues.  You chose not to ask.  I’m terribly sorry but you are pointing that accusatory finger the wrong direction. 

Finally, the discussion of SEO is not like the discussion of writing a blog.  Its a very broad subject with lots of techniques and philosophy but not very many objective, black and white solutions.  If you didn’t understand that SEO is not something you do to a site but it is an architectural tenet of building them, then you were too busy telling yourself, “already know about links, already know about headers, already know about title tags, already know about meta, ” to actually get the point.  The magic bullet was in there but you were too high on your horse to hear it.  He said, “you don’t have to implement every trick andevery technique, you just have to out perform number 1.”  Its the philosphy of: do what is effective and nothing more.

…and if you can’t hear the speaker, move to the front of the room, you bafoon!  The whole front row was empty, except for me, and I am pretty sure I took a shower that week…

I am not trying to be abrasive.  However, I am annoyed that people will go to a free almost free event where the speaker is not compensated in any way to network with peers in the industry and then act like a bunch of pompus a-holes.  Most importantly, when you attend a networking event, network, be vocal, speak up and contribute.  If you sit back and say nothing and then comment spam the speaker, you are wasting valuable space in the room.

Of course, John, the Curly Headed Bozo, indicated he was not nearly as upset as I was.

Silverlite is the bridge to a better web

May 1st, 2007 Rusty

Skinkers integrates Microsoft Silverlight with peer-to-peer delivery to transform live interactive desktop TV” - so Silverlite will provide rich UI including video (flash-killer)

Some exerpts from the article: “…deliver interactive web video experiences that blend media, graphics, and animation… Silverlight’s support for web standards… cross-platform… user’s PC will join the “cloud” of peer-to-peer nodes.” (flash-killer)

I have wanted to develop in Flash about as long as I have been building websites.  The problems are 

  1. it’s a different design paradym (can’t jump right in like I can with every other programming language)
  2. it’s difficult to integrate live, real business data and resources
    1. I’ve heard that it can be done with Flex
      1. Flex is incredibly expensive if it is part of a larger solution
      2. There isn’t nearly the support available to mitigate the technology risk
    2. I’ve never actually seen someone use Flex outside of a demo
  3. Its proprietary, and disconnected (you have to recompile your swf and redeploy the binary.  I hate keeping binaries in my source tree!)

So I have never used flash for more then a slide show.  That doesn’t mean flash isn’t fantastic for eye candy but how do we wrap eye candy around our business data?

(suggestions, advice welcome)

Silverlite promises to integrate with the C# or VB.Net lifecycle experience.  You write C# code to emit Silverlite.  I’m sure XAML plays a role, as well.  More importantly, it can be data bound.  The above example indicates that clients are connecting via a browser plug-in to run a streaming video app that also happens to connect to other clients to share streaming distribution.  That means somewhere there is a runtime data store of client IP addresses and connection details.  There must be two way communication and workflow execution happening.  This is really exciting (flash-killer), not just because it’s a proven integration and deployment pattern (flash-killer), but because it opens up that forbidden world of rich, beautiful UI. 

I am mildy interested in WPF but I can’t see that as a right now investment.  My Vista laptop is a little, um, finicky.  OK, it sucks.  I won’t connect after sleep, it hangs alot, it needs frequent reboot…   but its a Dell, what more would you expect?  The point is, no one real can use your extraordinary WPF interface right now.  Unless your job is to impress VC or potential clients at a technology trade show, so what?  who cares?  I have to develop features, not flash (there’s that word, again).  I’m not saying that those software engineers who are learning WPF right now won’t be worth 20% more then their non-WPC counterparts but I am saying that business decisions are made based on recognizable revenue.  If you have some money you need to spend, invest in a WPF prototype project rather then another piece of software you’ll never use or a Server that is ten times what you’ll need before it costs a quarter as much.  You know who you are big business with departmental budgets!  Go blow that money on a pilot project to investigate new interface technology and bring your team and your image up to the cutting edge. 

Back to the point…  WPF is tomorrows interface butanything I can load in a browser is here NOW.  I don’t have to wait on operating system adoption or framework downloads.  If I can get a flash-like experience on what is presently installed on users’ systems and integrate that rich experience with my present and ongoing server solution investments, sign me up!  Wack meets practical.  Finally…

I’ll be honest, I love the way flash looks.  I just hate how it plays with others, or doesn’t.  For years I have waited for Macromedia to innovate further and provide better tools, better support and a better product.  I’m still waiting.  I hope Flash comes out with their version to keep the competition on their toes and the industry on the forward path.  However, I’ll be sprinting down the Silverlite trail, hoping to Gates that this one takes us out of our html rut.