Skip to content

Posts from the ‘Development’ Category


Free Professional Tools for Startups: FogBugz

From Joel Spolsky and the team at Fog Creek Software comes FogBugz, probably the best bug tracking software package available.

FogBugz manages projects, tracks bugs, and even tells you when you’re going to ship. It includes an issue tracker, advanced project management and scheduling, a wiki, and customer support features like email routing and discussion groups. It is completely extensible with plug-ins and an XML API, and integrates with all major version control systems.

Other than just tracking bugs (which it does a great job of), it also supports wikis and discussion groups and tracks customer emails. I have to say though, that the coolest feature of FogBugz would have to be their use of evidence based scheduling: FogBugz tracks how you fix bugs and implement features and will report if you are on schedule to meet your release date, and what your probable release date is.

The Student and Startup edition has only one limitation that you can only have two users. In most cases, if you’re reading this, that’s probably not an issue at all. Other than that, it is a fully working version of FogBugz OnDemand (their online, Fog Creek hosted service).

The Student and Startup edition of FogBugz can be found here. It can take a little bit of digging around on the site to find, but it’s there.

View the complete list of awesome tools for developers: Free Professional Tools for Startups


Free Professional Tools for Startups

I’ve been thinking for a while now about writing about some really good free tools for developers just starting out and micro ISVs, as well as students. The truth is, there are some very decent tools out there. You just have to sift through the pile of costly alternatives. Hopefully, it’ll be a little easier if some of the items are pointed out for you.

I’ll keep adding to this list as I find, use, and enjoy more tools.


Get Application GUID at Runtime

The following “snippit” (a bit long, but meh) will retrieve your application’s GUID (which can normally be found in the AssemblyInfo file). Great for referencing your application in the event that the name might change or any other time you need to uniquely identify it.

Dim guid As String = New Guid(CType(Me.GetType.Assembly._
GetCustomAttributes(GetType(Runtime.InteropServices. _
GuidAttribute),False)(0), Runtime.InteropServices. _

Detect WHS Mode for VBScript

I write numerous little scripts that are shared and used among my coworkers, many of which are quick and easy VB scripts, many of which are run from cscript (rather than wscript). The end result? Well, often someone will see one of these script files and double-click it, which doesn’t work out to well for them and they usually get some sort of nasty error message since it’s not meant to be run in the wscript GUI mode.

“Yeah, nice script Matt. It’s full of bugs and won’t even run.” Um yeah. If you run it from the command line, the results would be much different, I assure you. So, how to tell Joe Blow that he should be running the script from the command line rather than happily double-clicking it? Use WScript.Fullname to determine the host and act from there.

My solution is pretty close to this function, and I’ll call this function pretty near the beginning of the script.

Function CScriptCheck
  If "cscript.exe" <> LCase(Right(WScript.Fullname, 11)) Then
    MsgBox "Run from a command prompt, fool!"
    WScript.Quit 1
  End If
End Function

Shorten a Path String

Here’s a very quick, easy, yet efficient way to take a long path string (for example: “C:\Users\Matt\Documents\Visual Studio 2008\Projects”) and condense it down in VB.NET. Provide a maximum width and a font to measure by, and if the string is longer, part of the string will be replaced with an ellipsis (for example: “C:\Users\Matt\…\Projects”).

LabelSourcePath.Text = ShortenPathString("C:\Users\Matt\Documents\Visual Studio 2008\Projects", LabelSourcePath.Width, LabelSourcePath.Font)

Public Function ShortenPathString(ByVal path As String, ByVal width As Integer, ByVal font As Drawing.Font) As String
    TextRenderer.MeasureText(path, font, New Drawing.Size(width, 0), TextFormatFlags.PathEllipsis Or TextFormatFlags.ModifyString)
    Return path
End Function

Just Released: Gmailer CLI

Out of my home, I’m running a file server (specifically a HP MediaSmart EX485 / Windows Home Server) that runs a weekly, automated backup of all my data to another server off-site via SFTP (WinSCP). What I didn’t have though was an easy way to have an email sent to me containing a simple “success” or “failed” message along with logs of the operation.

Aside from being able to send the email message, there were a couple other requirements that I had:

  • It had to be simple and lightweight. I’ve always been a follower of the KISS (keep it simple, stupid) mentality, and there really is no reason to over complicate anything like this. I want it to be easy for myself to use, but as well for anyone else who might need.
  • It has to be able to send email using Gmail’s SMTP servers. I don’t have my own SMTP server, and the ones provided by my ISP are severely crippled. Gmail

Well, low and behold, now introducing Gmailer CLI. Feel free to use it, as well as to make any comments or suggestions (it’s only 1.0 after all). I plan on make improvements and adding features over time, so stay posted.

Gmailer CLI