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…
This has been a busy week involving multiple new releases– one for Overseer, my network monitoring software, and the other for Employee Scheduling Pro, my employee scheduling software. In addition to this, I’ve had more hours than usual for a regular client of mine… Overall, it’s been a very busy week.
I’ve also been looking at adding support to Overseer for USB temperature sensing units. I ordered a few for prototypes/development units, and hope to add a budget alternative to the extremely expensive Sensatronics EM1 option that Overseer currently supports.
Well, I haven’t written in a while as things have been quite busy. I moved into a new office in early May, and my wife gave birth to our first child, Lily, in mid-May. I recently got back to work, and I’ve been playing catch up with a new release of my Employee Scheduling Software and client work.
Things have been going well– our baby is sleeping decently at night, and it’s really awesome to be a dad. The office outside the house was clearly a good decision– it helps me separate business and personal and gives me the quiet time needed to be productive during work hours.
About a month ago I switched to using Google Analytics. I was previously using Urchin for web analytics, and had accepted that it simply didn’t work for tracking goals, etc.(I reported this to Urchin and they refused to acknowledge it). When I switched to Google Analytics, I setup goals for tracking downloads of my Network and System Monitoring Software. This seemed to work, and replaced my weblog analysis that counted the downloads for conversion tracking.
This past Friday, I launched my Employee Scheduling Software and setup goal/download tracking the same exact way. I downloaded it a few times, and it never showed up in Google Analytics as a conversion– or as content. I analyzed what could be wrong, and found that everything was setup perfectly.
This past Friday, I officially release Employee Scheduling Pro. This is a product for employee scheduling that I’ve been working on for a few months. I’ve gotten to the point in development that it’s usable by people to schedule their employees, and therefore I’m releasing it. I will continue to develop this software based on customer’s requests and lacking those, perceived need in the software.
Employee Scheduling Pro allows users to create schedules using a wizard and tweak them afterwards. Users can then print out the schedule using either a Daily Schedule report that shows who is working today and what their job is, or an Employee Schedule report, which prints employee’s shift on a calendar so an employee can easily find when they’re working that week.
Other features still to come, will be posting the schedule online for employees to see, Emailing them their schedules, and more. If you have any suggestions for features, please contact me at firstname.lastname@example.org.
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.
Generally when designing a software product, I have to weight the pros and cons of rolling my own code for everything, or strategically using control libraries for key parts of the code. A couple years ago, I decided that for the front-end GUI in my .NET apps, I’d use the Winform controls from DevExpress. Generally, this has worked fairly well. As with working with any control library, there’s little quirks that I have to get used to. This control library likes to put most of their functionality under a “Properties” parent property… That’s one of the key things to remember when working with their controls…
Today these quirks with DevExpress’s XtraScheduler control exceeded annoying and went into downright frustrating. I was trying to setup a timeline view to span midnight(some customers of my Employee Scheduling Software will have operating hours that go unto the wee hours of the morning). To do this, I had to create a custom TimelineScale object. This makes sense, but the names of the methods and the logic that I have to implement in them just doesn’t make sense to me… And the documentation on these properties is obscure at best… I finally got things working after a lot of messing around, and I’m glad to finally have it behind me. Overall, I think using the scheduler control will probably provide useful eye candy to the software while keeping me from having to re-invent the wheel.
Well, I’ve been working on a new product, called Employee Scheduling Pro. This is Employee Scheduling Software that I hope to release a 1.0 version of within the next couple months. At first it will be fairly basic with manually created schedules, but I plan to enhance it further to involve more logic to intelligently aid the user in the creation of employee schedules.
Why am I working on Employee Scheduling software? Primarily because a friend of mine has already done Time Clock Software and Timesheet Software, and he said the market could really use a quality Employee Scheduling product– his customers specifically are interested in something.