I think I have nailed down the different product version of PainlessSVN. This is not set in stone, but this will at least give you a sense of where I'm going with this.
PainlessSVN Product Map:
- Professional - Aimed at mISV
- Workgroup - Aimed at multiple programmer shops, use Windows ACL
- Enterprise - Same as Workgroup in addition of ActiveDirectory and possibly other LDAP sources
- DotNetNuke - For the DotNetNuke platform
I know there is a need for a product like PainlessSVN because the free (and very limited) server winform app that I bundle with the SVNManagerLib always gets a LOT more downloads than the library. This library is on SourceForge and I haven't advertised it much.
PainlessSVN is a small enough project that will allow me to get my feet wet as a micro ISV. I'm very risk averse at this point in life, especially since I have a family that depends on me. I already know that I won't get rich right away, but that is not the goal for now. Hopefully, I can quit working for somebody else in a few years and do this full time. Time will tell...
I found that being organized, to any degree, is a boon to productivity. Well, Duh you say. My little operation has enough moving parts now that things were starting to fall between the cracks. The repository configuration dialog is a big example of what I am talking about.
I've been hearing a lot about Getting Things Done (GTD). The biggest meme out of the whole GTD movement, is basically to know what needs to be done and quantify it. Once it becomes an entity on a medium, be it paper, or electrons, then it gets pulled from the metaverse into meatspace. This now makes it possible to wrestle with it. It is tangible. It has substance. It can be dealt with.
There are quite a few software systems that do GTD, some specificly geared with GTD in mind, other more like glorified todo lists. It's not really important what you choose, as the effectiveness of the system for YOU. I've tried several programs but none seem to do what I need. Part of the problem is that I'm very short in funds, and couldn't try some of the commercial ones. I ended up using different programs for different contexts. At my day job I use one of my whiteboards, and when the relationships between items get too complex and too many details to keep track I use ToDoList from AbastractSpoon Software. I use Axosoft OnTime for anything related to SystemWidgets. It is great that they have a free one person license. The only thing that really annoys me with OnTime is that it lacks integration with DotNetNuke. But, I can live with that. I will just have to make DNN modules myself.
I had lost access to my previous installation of OnTime when my workstation kick the bucket. I didn't realize how much of a difference it made on my planning and day to day code work. Not only that, but I saw that I still need to do several things related to ecommerce that I had forgotten about. These systems, no matter what you pick, is like having your own personal secretary.
I'm currently working on a dialog to deal with repository settings.
I had left this feature out of version one for some strange reason. Well, actually that was because I was disorganized. I found out that I needed this, when I was looking at my repository's layout. I wanted to make sure that nobody can access my repository but me. That's when it hit me that I didn't have a way to manage this graphically. D'OH!
I came across BittBox a few days ago. This site and blog have an amazing collection of web graphic freebies. I've already used some of them to spice up this website. I'm thinking of using the glowing spheres for the buy now and download buttons. Here's the URL:
I just downloaded all the latest bits for InnoSetup tonight. I want to have an install for Beta 1 as soon as possible, so that I can start getting feedback from people. This should be an interesting challange. I'm excited that I found a download dll that allows installs to download missing bits. This should make it easier to get the needed Microsoft Management Console (MMC) 3.0 stuff onto customer's computers.
I now have all of my VMs ready to go. My main concern is getting this install to work with Vista's UAC. I admit that I have been one of those programmers that didn't pay much attention to Microsoft's best practices when it came to non-admin functionality. I have mostly worked with internal apps, except for the time when I was part of the team that built the first version of Franklin Covey's Plan Plus. I still have the retail box that was signed by all the people in the team.
It feels good to be back working on PainlessSVN!
I recently moved to Vista, and it has been quite a painful experience when installing Microsoft Dev tools. I wasted quite a few days getting this to work correctly.
If you intend to use SQL Server 2005 Developer Edition and SQL Server 2005 Express, don't install it with VS2005. So the steps will be:
Install VS2005 - uncheck SQL Server 2005 Express
Install VS2005 SP1
Install VS2005 SP1 Vista Patch
SQL Server 2005 Developer Edition
SQL Server 2005 SP2
SQL Server 2005 Express Edition SP2
This will ensure that you will able to use SQL Server Managent Studio. Took me several days to get the order right. :p Had to reinstall Vista, cause my installs got fubar trying to get the install order right. I bought Acronis True Image 10, the minute I got this working right. Now I have a nice Vista image with all of my tools.
Hopefully, I don't run into any more issues so that I can get back to finishing PainlessSVN.
I've been having some performance problems with the current implementation of how PainlessSVN read the Subversion server's info. It works fine for local browsing, but it bogs down to unacceptable levels when reading information across the LAN. It doesn't work for WANs in it's current implementation. One big issue I haven't been able to work around is removable flash drives. For some some reason, flash drives slow down file operations for PainlessSVN.
There has been a few times now where I needed to manage my Subversion server from a remote location. I would have loved to have PainlessSVN to do this across the Internet. I'm one of those people that absolutely hate command-line utilities. I am reminded of this everytime I have to go tweak something in Subversion by hand.
I know I had talked about creating a self-contained RPC styled backend, but now I'm seeing the wisdom of just using the built-in resources. In this case web services running in IIS. My biggest concern was deployability. Web services have been notoriously hard to deploy. I have finally started seeing installers that will do this. I currently can't afford the installers that do this, especially on my budget.
I'm gaining some valuable experience dealing with web services at my hobby open sourced project at http://www.wheelmud.net I've been following the example that DoFactory has set in their sample reference app. This sample app has a lot of good practices, which have saved me many hours of hair pulling and head banging sessions. Btw, DoFactory has been one of the best purchases that I've made in a while. I highly recommended to those programmers that want to move up to the next level and to learn effective software engineering patterns. I considered their for pay downloadable stuff a "Concise Introduction to Being a Software Architect."
I've been experimenting with web services at an open source project I'm part of. It seems to be working well so far. I'm doing this to get a feel of how web services will work for an admin application like PainlessSVN. This will functionality will be added to the team edition of PainlessSVN.
The open sourced project I'm working on is called WheelMUD and the website is http://www.wheelmud.net
I got hired by MyFamily.com on October 31. They are in north Provo, and I live in Springville. MapQuest says that I'm 10 miles from them. I'm a lot closer to home, but so far I've been getting home about the same time I was when I was working in Salt Lake City (Sandy to be precise). I should be settled in fairly soon, so that I can start working on SystemWidget stuff soon.
It seems that the HTTPListener class in .NET 2.0 does not support custom URIs as I once thought. I only supports the http:// and http:// prefixes. I'm still investigating, but it looks like I might end up writing my own custom server just so that I can do something like psvn:// Is that crazy or what? At least I have enough experience now writting tcp servers. Is TCPListener in my future? Time will tell...