As a cost cutting measure, I will be moving this website from PowerDNN to my rack-mounted servers. I'm being forced to cut down on all unnecessary costs. Currently I pay $50/month to host this site and the WheelMUD site. I can't afford that anymore.
I wanted to give everybody a heads up that the site will be down intermittently in the next 5 days. The biggest hurdle will be the DNS servers. The DNS changes can take up to 72 hours for some people.
Just remember, this site is not going away. Don't Panic! GANGNAM STYLE!
Your invisible and friendly system administrator.
I stumbled onto WANdisco's new Subversion community site:
It has some features similar to Facebook. I already signed up and lurk there regularly.
I had somebody ask me for specs on Twitter about the modules that I would like to see. I call this list the Micro Independent Software Vendor (mISV) pack.
I don't have the time to create something like this, but I do know that there is serious interest in having an integrated solution like I outline below.
Customer Licensing Center
- Gives the ability for customers to see what licenses they currently own
- Allows admins to import sales/licensing information from external license tracker systems.
- Allows admins to match imported customers to existing accounts, or create new ones.
License Dispenser for DNN Portal
- Allows admins to setup a license dispensing system, either custom or 3rd party liscening schemes.
- Allows admins to do online activation of their software.
- Integrates with gateways like FastSpring, Plimus, eBay, and Google Checkout.
- Integrates with customer licensing center.
Opt-In Email Marketing
- Allows admins to send reminders to customers for any expiring license subscriptions.
I think this can be already be done with DataSprings Opt In Email module.
- Allows admins to integrate with their DotNetNuke portal
- Allows integration with their current version control system
There are many good stand-alone web products in this category, but I find it infuriating having to send customers to a separate web app. Heck, even a module that has the basic functions in DNN would be welcome. I created a prototype that would read tickets from JIRA. Unfortunately, I don't have the code anymore.
- Allows admins to integrate with their DotNetNuke portal
- Allows integration with the ticket/case system, and the licensing center.
Again, there are many good web and desktop solutions, but I want to see this in my DotNetNuke portal. I REALLY hate sending customers to a separate web app for this.
Robust KB App
I have found that I like InstantKB.NET a whole lot. I would love to have this integrated with DotNetNuke as well. My dream scenario would be integrate with a forum, where there would be a button for "Create KB Article" which would copy the contents of the thread and start a new article.
The integration that I had with my ecommerce DNN module (ActivePurchase) broke when I moved the site to PowerDNN. I have been fighting with this for a couple weeks now.
Here's what happened:
The part that sends the serial number did not work anymore, because the SMTP server was not on the same network. Changing the settings did not work at first. I went googling for sending emails from DNN. I got some good hits for sending email from inside DNN modules.
The API for this is fairly simple (relatively). You first make a reference to DotNetNuke.Services.Mail. Then you make a call to the Mail.SendMail() method, with the appropriate parameters. There are 5 overloads. The call from a module would look like this:
DotNetNuke.Services.Mail.Mail.SendMail(FromAddress, SendTo, "", Subject, Body, "", "", "", "", "", "")
Well, that didn't work. So now I was scratching my head.
I am using a special type of integration called a custom step, which is just an assembly in the bin directory for the DotNetNuke install. I had to go and dig into the event log that DNN keeps. There were several exceptions there. The message was that the SMTP connection needed to be authenticated. WTF??
Custom DNN modules use the SMTP settings that the administrator has setup. However, the custom step does not get treated as a module. So I had to do this:
DotNetNuke.Services.Mail.Mail.SendMail(FromAddress, SendTo, "", Subject, Body, "", "", "", "", UserName, Password)
Once I did that, the custom step started sending emails like before. YES!
Now that this is fixed, I can get my undivided attention back to PainlessSVN and SVN Backup Widget stuff.
I finally got the RSS feeds working correctly for both the company news and this blog. Look for the rss icon link on the top right of this page section. It will be to the right of the "Search" link.
I got the integration between ActivePurchase and the Infralution license generating system working now. It took most of the weekend, but that was because this was my first time doing something like this. It will probably take no more than an hour for the next product I need to integrate.
I'm writing a big HOWTO article, that will take people through the steps to make this work. This will have both screenshots and code. I started writing it, but it will take a little while to get it done. I have 2 loose ends with PainlessSVN itself, then I'm turning my attention to fixing up some pages in this site.
I already put up the download trial and buy buttons, but you'll only see them if you are logged in. I will be putting in a couple discount codes. So if you want to buy PainlessSVN at a discounted price, you'll need to watch this blog. Create an account, and you may see some other goodies.
Well, I had a hair pulling session trying to recover the passwords on my hobby site. Both my admin and host paswords got hosed, so I couldn't just login and fix them.
I first went Googling to find a winform app to help with this problem. Well, all the solutions were just modules to install on your DotNetNuke installation. Since I can't even login as host, this approach is just totally useless. Thankfully, DNN uses the ASP.NET 2.0 Membership Providers.
So, I started with Membership.Provider.RetrievePassword(). Oops, "Bad Data". Crap! I tried other account passwords with the same result. Double-Crap! I modified my little winform app, to now reset passwords. This time I used Membership.Provider.ResetPassword(). Got a new password for host, and I was able to login now. YES! I'm using .NET 2.0 for this winform app.
So if you want to get this working, here is what you need to do:
Make sure that you include the following sections from your DNN's website web.config file:
You only need the membership and machineKey sections inside system.web.
Import System.Configuration and System.Web into your project. All of the needed API calls will be under Membership.Provider namespace. You'll find a lot of samples on how to use on Google.
Anyways, I wanted to put it somewhere, so that I can find it later, WHEN I would need to do this again.
Happy New Year!
I wanted to start a new tradition of writing a letter every year. I want to mostly touch on where I was and where I'm going.
I spent last year (2007) getting ramped up on coding PainlessSVN. I also released two free utilities, SVN Backup Widget and Text File Splitter, that I created myself, and a third one, WinTivoDecode, from a friend. I've also been working with AdWords and several bloggers to spread the word about PainlessSVN. I had combined downloads of over 25K for all products. And this is not counting the two open sourced projects that I started and maintain.
I learned a lot from other micro ISV bloggers. There are so many of you out there! I'm heartened by your successes and hope to join your ranks in 2008.
Roadmap for 2008
Roadmaps are something that are fairly hard to predict when you are a one man company, especially with software. One thing that I know for certain, is that I will be changing the current tag line from "Where the command-line meets the GUI" to "Taming IT Operations." I worked in IT Operation during the first 6 years of my career, and I always enjoyed creating utilities to automate things. I want to focus my energies this year in helping IT people tame IT Operations with software.
The very first thing I want to do is release PainlessSVN Professional version 1.0. As some of you have noticed, I have pulled the beta download. I haven't received any problem reports in more than 3 weeks. I didn't see the point of having an open beta anymore.
I had a couple things holding back the release of PainlessSVN; payment system (ecommerce) and licensing. I got my payment system working just last week. I'm using a DotNetNuke (DNN) module called ActivePurchase, from Active Modules. This lets me integrate payments with the DNN framework and other useful modules for CRM and help desk. I will support PayPal when I first launch. So payment is now officially taken care of.
The second thing is licensing. I'm using Infralution for this. The actual holdup is that I want to automatically issue keys as soon as the payment is confirmed. ActivePurchase has something called Custom Actions that lets me add a custom business logic to the purchasing funnel by creating an assembly in .NET. The author is supposed to release the API docs for this tomorrow (Monday Jan 14th).
I will be releasing an extra couple editions of PainlessSVN shortly after the release of the Professional editions. These will be:
- Standard - This will have just the basics for server and repository maintenance. It will also be cheaper than the Pro edition.
- Portable - This will allow you to run PainlessSVN from your favorite USB flash drive.
I also want to release at least two new free utilities. One of them will be a text file joiner to compliment my text file splitter. The second utility is a program that I created when I needed to monitor data integrations at a contract. Its current name is NSQLAudit. It is already coded. I just need to polish for release. I might create a professional version depending on demand. I'm also open to other ideas that you will like to see implemented.
I really appreciate the feedback that I have received. My hope is that you feel that you are getting good service and that my utilities help your work be less tedious. I also hope that these are helping you deal with some unpleasant tasks faster, so that you can get to the fun stuff quicker.
Here's to the new year!
I read a great tip for integrating DotNetNuke (DNN) with Google Analytics a few days ago. DNN uses the Default.aspx page on the root folder as a top level container for all content in the portal. It was simplicity itself to just add the Google Analytics script code right before the closing body tag in Default.aspx.
Now all pages in my portal will automatically have the Google Analytics code, even new ones. The only issue is remembering to re-add the script code after upgrading the DNN software.
Here's a list of the tools that I use for both programming and maintaining my website:
- SQL Server 2000
- SQL Server 2005 Express Edition
- SQL Server 2005 Compact Edition
- SQLite - http://www.sqlite.org
These tools are the ones I want to use, but for lack of funds, time, or knowledge, I haven't been able to incorporate into my practices:
I'm just amazed at the sheer number of programs that I'm using. I'm pretty sure I left out some, since I did this from memory. A couple of these are just way too expensive at this time. I'm hoping to purchase them with the proceeds of the sales from the first version of PainlessSVN. This is one of the few disadvantages of growning a company organically.
I have been making a habit to purchase applications and apps from microISVs. I also check the Business of Software forums and Larkware News for other microISVs for tools that could make my life easier.