Well, today I found why downloads of Overseer have significantly dropped off lately. The problem, is IE and Google Chrome have been giving nasty ‘warnings’ about the clean Overseer setup exe, like these:

Wow– that sure discourages a person from downloading! No wonder my #’s have dropped… What did I do to deserve such slanderous ‘warning’ messages? I’m not popular. I’m not iTunes. Overseer hasn’t been downloaded enough. That’s it. This is a “not popular” warning. Only those that are popular get this removed, and only those that get enough downloads get popular…How is someone supposed to get enough ‘reputation’ with IE ‘SmartScreen’ or whatever Google is using to actually remove this slanderous business-killing warning message?!? The internet is supposed to be the great equalizer– hence net neutrality and all that, but this ‘technology’ clearly favors big business over the little guy.

My only solution for now was to provide some verbiage in big green text on the download page trying to calm the fears of my potential customers– hopefully that helps. I’m also getting a code signing certificate which might help– but people are saying the red warning dialog simply changes to a yellow warning dialog with a signed executable…

It sure seems to be a bad time to be a small independent software vendor(ISV)…

UPDATE: I received my code signing certificate($365 for 5 years) and changed my build process to sign the installer exe and the exe’s inside. I just tested, and Chrome appears to have removed their warning when downloading Overseer. Unfortunately, IE still warns people when downloading or trying to run the installer– even though it’s clearly properly signed. Maybe MS will eventually change their mind, and realize I’m not such a bad guy after all…

I recently got a new laptop with Windows 8. I’ve been trying to not hate the removal of my start menu too much. One of the changes they also made, is that User-Account-Control can’t really be disabled without a registry change– and if you make that registry change, most of the Metro/Modern UI apps will no longer work! Having certain applications not run as administrator can really be a problem, however… Visual Studio needs admin access to create IIS web applications, for instance. Additionally, shelling out to cmd.exe for doing a multitude of different things will be very frustrating when you don’t have those admin privileges that are rightfully required to do administrative things…

Unfortunately, there’s no easy GUI way to tell Windows 8 to always launch applications as an administrator. You can right click on a shortcut and select ‘run as admin’ each time– or even define a shortcut and set ‘run as administrator’ on the compatibility tab– but this doesn’t work if you use start->run->’cmd.exe’, such as I do… It also doesn’t work if you’ve pinned solutions to your task bar, such as I do for Visual Studio.

Thankfully, after some searching, I found a solution. You can have any executable on your computer run as admin(assuming you have permission to do so), by adding entries to this registry key:

Simply add a new string value, paste the full path to the executable(such as c:\windows\system32\cmd.exe), and then edit the value to say ‘RUNASADMIN’. Next time you start that executable– through a shortcut, by going to start->run, through entries pinned to your taskbar, or double-clicking on an associated file in explorer, Windows 8 will actually run it as an admin, as you require.

I recently wanted to write some code that analyzed URLs to determine if the source was the same– eliminating sub-domains. For something simple like “sensiblesoftware.com” or “www.sensiblesoftware.com”, this is easy. However, what about othes countries? Something like “www.company.co.uk” or “company.co.uk”? It was clear I needed a list. Initially, I went and found the TLD/Top Level Domain list at the ICANN. It was clear by just looking at this, however, that it didn’t include individual country’s second level domains, such as “.co.uk”. This makes it difficult to use for getting the effective organization domain(which would be the ‘company’ in company.com or company.co.uk).

After looking, I eventually found a list of these, but it wasn’t formatted very nicely for use in programming, so I formatted it and I’m providing the list here– you can easily copy/paste this list into a text file for programmatic use.

Sometimes, when searching Google it takes all of 30 seconds to find an answer to a question. Other times, it can take minutes, or even hours. I’m writing this blog post, because I was just researching an issue that took me hours to figure out– and in the end, it was so simple, yet disappointing at the same time…

For the new version of Overseer, the network monitoring software I write, I was adding support for extended event logs– these are the “Applications and Services Logs” event logs below the regular ones in W2K8′s event viewer. I found I had to use the new EventLogSession/EventLogReader API. I found it required .NET 3.5, so I upgraded my software to require .NET 3.5(it was v2 compatible up to this point).

I got things working, and I was able to monitor event logs(new and old style) using the code remotely accessing Windows 2008 and Windows 7 computers. I got an error when accessing Windows XP machines(and I’m sure W2K3 machines, but I didn’t have any to test with at the time). The error was “UnauthorizedAccessException - Attempted to perform an unauthorized operation.” To most, including myself, this seems like a permissions issue– so I looked into all sorts of potential impersonation problems, etc. I scoured the web looking for anyone even having the same problem, but didn’t find it.

Eventually, I found a reference buried in some forum reply, that one of the API calls that the new EventLogSession/EventLogReader calls is Vista/W2K8+ only. That’s just great– the whole API is now Vista/W2K8+ only… Why Microsoft wouldn’t add a compatibility layer for Windows XP and Windows 2003 is beyond me… But once I found this, I at least was able to move on, realizing that I had to detect the version of Windows running on the remote machine and use the different API’s accordingly… If only Microsoft had included proper documentation clearly specifying this new API was Vista/W2K8+ only, had an error message indicating something of that sorts, or actually did the right thing and wrote a compatibility layer into it, I wouldn’t have wasted so much time on such an unproductive search.

Finding icons for your software application can be tough. There are many sources of free icons that you can easily find online with a Google search. If you’re on an incredibly tight budget, but have lots of time, this can make lots of sense. The problems with this, is the amount of time it takes to find the icons you need and often times you end up with an inconsistent look and feel in your application– your icons are often pulled from many different places, and your application looks that way.

I personally prefer to buy big sets of icons. IconShock has been selling icon sets for years, and I can highly recommend their entire icon collection which is only $299 right now– that’s over 600k icons, for only $300. That’s less than $0.0005 per icon… Or roughly 20 icons per penny. Buying icons in a set like this, it’s fairly easy to find just the right icon for every part of your application, and best of all they have the same look and feel(provided you pull from the same or a similar set).

I’ve also started to make my icons larger in my applications. Traditionally, icons are only 16×16 in menus, toolbars, etc… With higher resolutions on screens, I find it’s far best to use 24×24 icons in menus and either 24×24 or 32×3 icons in toolbars. This provides a larger area for the user to see what the icon is(showing off your snazzy new icons!), identify it with the function in your software, and click.

As some of you may know, I spend a large portion of my time contracting with a specific client. The rest of my time, I spend doing operations things, and trying to develop and promote my products, Overseer Network Monitor and Employee Scheduling Pro. The time demands of my primary contract, along with personal time demands, sometimes leaves me very little time to develop and/or promote my products. It can be quite frustrating at times. In the past 6 months or so, I’ve been doing my best to force myself to do a little bit every week. I created a whiteboard that tracks how many days it has been since my last release, blog post, sale, etc. for each of the products. As I see this number go up, I get more motivated to do something with the product so I can make a release, and therefore a blog entry, and hopefully all this will spur sales(or potentially do some marketing to make the sales # move)…

While this has been helpful to keep me from being totally idle on my products, I’ve found it’s caused a different problem. I’ll notice late in the week that a number is high, and be motivated to make a release to bring that number down to 0. So, I’ll search my feature database for something I can bang out in a couple hours or maybe a day– tops… If I have a bit more time, I’ll do a couple to make it a more substantial release… The problem with this, is I’m always pressed for time in a week– so only small enhancements get done… The exception to this rule, is when I have a customer specifically asking for features– then I focus all my development efforts on getting the list of features implemented that the specific [potential] customer requests. I feel I get a lot done in this manner, but it often spans multiple periods of my non-contract time. This is good, because I stay focused.

After noticing this pattern and doing some research online, I’ve come to the realization that I can’t continue without a little more structure. I need to start planning software releases– to create a simple schedule. I need to take some time, sit down, and choose a certain few features(big and small) to be included in a release. I then have to schedule out how long that’ll take, and get it done– accepting upfront that this will take numerous sessions– I can’t bang out a substantial release in an afternoon as I’ve been doing…

After my recent post about Google Analytics not tracking downloads accurately, I had decided to go back to counting download using a weblog parsing method. After some consideration, and the suggestion of a colleague who tracks downloads using Google Analytics himself, I’ve decided not to use that method.

The reasoning behind it, is Goal tracking in Google Analytics lets me see what traffic sources(sites and keywords) are converting best. I lose this very important marketing feature if I use the web log tracking method. Being able to track my marketing methods for Overseer Network Monitor and Employee Scheduling Pro is far more important than seeking 100% accuracy for this number.

As an alternative, I’m using a download redirect option. Now on my software websites, a user will go to the ‘download’ page to view the links to download, and click the appropriate link to download the file. This takes them to a “your download will start now” page, at which point it uses a meta http-refresh to start the download. This should work with GA better to track the downloads. I have a funnel setup to require the end user to go to the download page before the downloading page, and set a noindex meta tag on the downloading page to try to prevent Google traffic being sent directly to this page.

Using multiple monitors is great. Personally, I use 4 large 23″ widescreen LCDs on Ergotron arms. This works amazingly well, and my productivity is improved considerably by using them. I’m able to have multiple copies of Visual Studio 2010 running, and sometimes even lay them out side by side. I also have a browser on one screen, Email on another, spreadsheets for tracking misc. info shared on another, etc.

The big problem with this, comes when I’ve been couped up all winter, and spring hits… The last couple days have been a “false spring” with 60º+ weather(quite pleasant for Rochester, NY). I would love to be able to sit out on my deck and work on my laptop… The problem with that, is I’d have to make due with only one 17″ screen. That means going from 976 square inches of desktop space to around 129 square inches… That’s losing 86.8% of my desktop!

The only solution I can think of(until multiple screen laptops are a feasible reality), is finding a single task that I can do on a single screen, and simply tolerate a longer turn-around for Email responses(considering I can’t monitor it as well), etc… Unfortunately, I can’t always find such simple tasks, particularly that need to be done when the weather is nice…

So today I investigated reporting options for Employee Scheduling Pro. I had previously used Crystal Reports 2008 for Visual Studio 2008 with some success. It felt clumsy and bloated, but it worked. Overall, considering my previous experience and the ‘industry standard’ it has become, I was planning on using it.

Come to find out, Visual Studio 2010 didn’t ship with Crystal Reports as previous versions did. It included a link to Business Object’s site for a beta2 of the Crystal Reports 2010 for Visual Studio 2010. It’s still free, but is very late– it’s still not released, even though it was supposed to be released in Q4 2010 and it’s late in Q1 of 2011… Regardless, I looked at downloading this beta to evaluate if it was still useful, but I found that the redistributable is 72MB!!! In comparison, the CR2008 redistributable is roughly 17MB…. 72MB to add a few reports to an otherwise simple app? I don’t think so… In addition to this, I find that CR2010 requires .NET 4.0, which forces me to bloat my installer more and eliminate OS support(such as W2K)… I don’t know about you, but I really don’t think a 100MB+ download is acceptable for an Employee Scheduling Software tool…

Fortunately, I had a good alternative. DevExpress, which is the toolkit I’ve used for my Win Forms controls, also has a reporting control that’s actually included in my subscription. Upon investigation online, it appears XtraReports is pretty decent– and it can even import existing Crystal Reports which will be useful for other projects that I may want to upgrade in the future… In comparison, XtraReports will add a couple megabytes(even less once compressed in the installer). I’ll also have the added bonus of having a report viewer that’s skinned in the same manner as the rest of Employee Scheduling Pro.

For many reasons, many people may want to Email a text message to their cell phone. This might be used to notify themselves when their servers or websites go down– or simply to notify them of backup completion or a new sale. If you’re interested in receiving Emails when your servers or websites go down, you may want to check out Overseer, which does exactly that– it is able to send an Email to your phone when your website goes down.

If you’d like to Email a cell phone directly from your Email client, from a script, or something else, you can still do so quite easily. This has the benefit of being free for the person sending the email, but the recipient may still pay to receive the email as a text message. To send a text message to someone’s cell phone via Email, you will need to know their phone number and what cell phone carrier they use. To send a text message to a cell phone, simply send an Email to the appropriate Email address:

AT&T

phonenumber@txt.att.net

Cingular Wireless

phonenumber@mobile.mycingular.com

Cricket

phonenumber@sms.mycricket.com

Metro PCS

phonenumber@mymetropcs.com

Nextel

phonenumber@messaging.nextel.com

Sprint PCS

phonenumber@messaging.sprintpcs.com

T-Mobile

phonenumber@tmomail.net

US Cellular

phonenumber@email.uscc.net

Verizon

phonenumber@vtext.com

Virgin Mobile

phonenumber@vmobl.com

Remember to keep your EMails short, as the recipient will be receiving them on a small screen, and long Emails may be cut off or split between multiple text messages(and they’ll get charged for each one by their carrier). Also, if your carrier isn’t here, it may be here: Cell Phone Email Addresses.