BucketSoft Blog

Insights and Inner Workings of a Micro-ISV


Upgraded to a Virtual Dedicated Server from Orcs Web

by SWortham 30. August 2009 02:21

So for the past several months I've been running BucketSoft.com, RegexHero.net, SilverlightShaders.net, and 060calculator.com all on a shared server with GoDaddy. It's actually served me well for the most part. But there are some limitations with shared servers. I couldn't set up things like content expiration and gzip compression for js and css files. And I couldn't easily set up dynamic gzip compression for aspx files either. And then there were some severe limitations on SQL databases which I decided wasn't going to work for me.

So I shopped around and eventually decided that a virtual dedicated server from Orcs Web was the thing for me. The idea with virtual dedicated hosting is that multiple virtual machines run on a single physical server, and then the hosting company configures and sells each virtual dedicated server to individual customers at a monthly rate. Orcs Web is able to sell this service significantly cheaper than a true dedicated server.

The nice thing for me is that I have full control of this virtual server, including Remote Desktop support. And I was able to configure the server just how I wanted it. So now I'm using gzip compression and content expiration extensively on every site. And then when you combine that with the fact that Orcs Web provides triple redundant OC12 connections, I think you'll notice that the site really screams right now. ;)

Tags:

Attribute-Driven Search Engines to Prevent Dead Ends

by SWortham 27. August 2009 02:19

Dead Ends and Searching
Dead ends occur whenever you search only to see that dreaded page that says "0 results." It can be a poor user experience to be limited to refining your search with a single textbox, not knowing if your search will return any results. Web search engines like Google can get away with this because they have billions of results to be found and dead ends are few and far between. That, and the wild wild web is so unpredictable and inconsistent that they can't easily implement more advanced features with any real benefit.

Attribute-Driven Search Engines

I've made up the term "Attribute-Driven Search Engine" because I don't know what else to call it. The idea is to display the attributes for the current search results and allow the user to click an attribute to further filter the results. As you filter the results, the new attribute list is also filtered. As a result, you'll never reach a dead end. This characteristic is what makes this type of search engine so awesome. NewEgg, Amazon, StackOverflow -- these are just some of the sites that have adopted this type of search engine.

An attribute-driven search engine can be implemented in any database-driven site where you have some level of control over your content. If you have a site like NewEgg with a wide variety of products then you'll probably need a combination of categories and attributes. For example, when searching for processors you'll need categories for the brand (AMD, Intel), number of cores (1, 2, 3, 4), socket type (AM2, AM3), etc.

But if you're dealing with content more like StackOverflow you can get away with simply using tags. You can assign a variable number of tags to a given article, product, or whatever it is, and the search engine will treat the tags as the attributes. This greatly simplifies things from a management point of view as you don't have to continually modify your categories as your site grows. You can see this in action at stackoverflow.com/questions if you start clicking the tags on the right hand side under "Related Tags." If you'd like you can keep clicking tags to add to the filter until you're down to just 1 result.

The SilverlightShaders.net Search Engine
So I've been giving all of this a lot of thought. I think having a good search engine can be very important for a website. Maybe it's not such a big deal when it's small. But once you have accumulated 500+ items to search through, then it quickly becomes more difficult to navigate the site.

So what I'm implementing for SilverlightShaders.net takes aspects of sites I've done before and combines them with features of StackOverflow. Every pixel shader will have tags assigned to it, and combined with full-text searching this should allow you to find what you're looking for.

Oh, and there's one other thing. Since I still allow you to search using a textbox, there's still the possibility of reaching dead ends. So I've implemented a simple feature to prevent this. I've added some AJAX which searches as you type and tells you how many results there will be before you actually click "Search."

This is all working with my sample data. And I think this combination of features should allow this search engine to scale well. But only time will tell. I'm just about to move from shared hosting to a virtual dedicated server. After that's done I'll try to get a beta site out there where you guys can check this out. I'd love to hear some feedback.

Tags: ,

SilverlightShaders.net Coming Soon

by SWortham 31. July 2009 02:18

I'm really excited about this site. It'll be a place where Silverlight & WPF developers can go to find specialized pixel shader effects. Every shader will have an instant online preview to make it easy to find what you're looking for.

The idea is to open up the site to pixel shader developers everywhere. If everything goes well it'll quickly become the largest Silverlight & WPF pixel shader collection on the web.

I've been working on developing some pixel shaders of my own to add to the site. And this weekend I'll begin building out the site to make it functional. I'll keep you posted.

Tags:

A Little Progress Report

by SWortham 14. May 2009 02:16

It's always exciting during the early days of launching your website and releasing your first products. I remember 10 years ago with gldomain.com I released my Nebula screensaver. It was a simple OpenGL screensaver that didn't take me long to create, but it was somewhat unique and perhaps cooler to look at than any of the default Windows screensavers at the time. One night I decided to send an email to 3dfiles.com about it. And to my surprise, the next morning it had been posted on their front page and had over 5,000 downloads overnight. It would go on to be downloaded over 100,000 times across the web. That was a really cool experience for me even if I didn't make a dime from it. It was the first time I had gotten my work out into the world on such a massive scale.

Fast forward 10 years, I've since learned that my success with gldomain.com really was something special. You really have to hit a niche to make that kind of overnight impression on the internet these days. So I don't have those gldomain numbers from the early days, but BucketSoft is coming along.

Since its inception almost 4 months ago, BucketSoft.com has had over 1,600 visits. Data Comparisons Express has been downloaded 46 times from the site, and a combined total of over 250 downloads from other download sites on the web. That's decent but I really need to focus on getting Data Comparisons to version 1.0 to improve its web presence. I have several improvements to make to get it there. Then hopefully this fall I'll have Data Comparisons Professional ready and for sale.

Then there's RegexHero.com, which I launched just 2 weeks ago as another BucketSoft product. As it turns out it's doing even better than I expected. I've had over 550 visits in those 2 weeks, and my search engine placement is already pretty good. I think this site has a lot of potential and I have some cool things planned for it. The nice part about it is that it promotes itself. In other words, other people are starting to link to it on the web because it's a good resource for their readers.

Tags:

WPF is Like a Fat Super Hero

by SWortham 1. May 2009 02:15

It's slow to start up, but once it gets going it really moves.

For those that don't know, WPF stands for Windows Presentation Foundation. It is Microsoft's latest and greatest .NET Windows user interface development architecture, aimed to replace Windows Forms. Having built a fairly large Windows Forms app in .NET 2.0 Windows Forms before, I thought WPF would be an easy transition for me. That hasn't exactly been the case -- a lot has changed.

However, now that I'm a little more comfortable with WPF, I've come to certain conclusions about it. First of all, I'm loving the flexibility. In some ways it's like Flash development and I loved Flash development when I did it for a bunch of projects between 2001 and 2005. Being able to apply custom gradients, draw custom shapes and buttons, and animate objects all in vector form is pretty cool.

But to me the best thing about WPF, and the thing that I think often goes under-appreciated, is how it takes advantage of the GPU in your video card to off-load some of the UI processing from your CPU. As a former OpenGL 3D programming hobbyist, I can really appreciate the power of the GPU. My $100 video card at home has 112 cores each running at 1.5 GHz. That's essentially like 112 processors that (when I'm not playing a video game) are never used to their potential. So Microsoft has finally recognized how much processing power are in these massively powerful video cards that are now commonplace in even the most basic new PC's and they've made WPF take advantage of that. As a result, I can build an application with thousands and thousands of UI elements in large grids or whatever you can imagine and the computer can actually handle it while simultaneously ripping CD's. Parallel processing is sweet.

Of course, there is one little problem. It is slow to start up a WPF application after a fresh reboot. It's faster after subsequent launches, but on the first launch Windows typically has to start the font cache service because by default it is not configured to start automatically. I know that plays a big part in the slow start up but I'm sure there are other factors. To give you some idea of what I mean by slow, I'd say Data Comparisons Express typically takes around 5-7 seconds to start up after a fresh reboot on the computers I've tested it with. That may not sound like a terribly long time. But when you're a speed freak like me, it's an eternity. Especially considering the entire application fits into a 315 KB installer.

Apparently Microsoft has been working on this and made some big improvements in .NET 3.5 SP1. But it's still not fast enough. I hope they can improve it more, and improve it soon because other than that WPF really is a beautiful thing.

Tags:

Introducing RegexHero.net

by SWortham 29. April 2009 02:12

So this is one of my little side projects. I've been working on it after work for the past few days. It's simple, but as far as I know it's the first of its kind. It's a Silverlight .NET regular expression testing tool. The thing that makes it especially useful is it's real-time highlighting. In other words, it'll highlight all matches found as you change the regular expression and/or the target string.

This isn't a new idea really. I was inspired by a program I've used plenty of times called The Regex Coach. The thing about The Regex Coach though is that it was designed around Perl-compatible regular expressions. .NET regular expressions were designed to be Perl 5 compatible, so The Regex Coach is typically good to use, but not always. I've seen special circumstances where it doesn't behave like my .NET regular expressions do. So ideally it's best to use a true .NET regular expression tester for your .NET applications. And that's why I built Regex Hero.

Tags:

Are Usability Standards Changing?

by SWortham 28. April 2009 02:09

Standards and Conventions
Conventional wisdom would state that the best way to create good usability in your desktop application would involve copying popular design standards. For example, users are accustomed to seeing a menu bar with Save and Open under "File" and Cut, Copy, and Paste under "Edit." And then there are keyboard shortcuts like Ctrl+S to save. There's really no point in changing that up on users. I mean, you wouldn't want to put Copy and Paste under "File" instead. And just think about how awful it would be if Ctrl+S closed your application instead of saving your work.

A Little Creativity
However, some applications have abandoned the File/Edit menu bar mentality entirely. And every once in awhile I run across a slightly non-standard application that looks really slick aesthetically while also being intuitive and easy to use.

The Microsoft Zune software is a good example of that.

And I'm also a fan of Jing from TechSmith.

Jing looks very, very non-standard in that screenshot but once you actually use it you'll quickly see that they get away with it because it's such a simple application to begin with.

Why the Change?
I can't help but think of what an impact the web has made. After all, historically web usability patterns have been somewhat different from desktop applications. But why should it be that way? Almost everyone using desktop applications also uses the web. So wouldn't it make sense that these usability standards can play together? Well I think that's exactly what's happening. The creative nature of website design is now influencing the design of desktop applications as well. And now that the technology exists to make this happen easily we're seeing more and more of this creativity.

With Great Creativity Comes Great Responsibility
I believe that when you can create an aesthetically pleasing interface with a usable and intuitive flow to it, you will inevitably create a greater impact. It's one thing to have a simple, standard-looking Windows application. But if it looks good too you'll give your users the impression that it's really well polished and more inviting to use. And that may just give you the edge over your competition.

I'm building Data Comparisons in WPF. And WPF allows more flexibility than any Windows development technology before it. It's easy to let all of this power go to your head. I can just think back to all the misuses of Flash in website design that I've witnessed. If you focus too much on achieving the cool factor you can easily overlook the most important point: Users have to be able to use your software. So I'm avoiding all urges to create a confusing layout, obscure or hidden buttons, elaborate screen transitions, and sweet (slow-loading) sound effects.

Form Should Still Follow Function
I suppose my opinion about all of this is that usability should always be the top priority. If your application somewhat resembles and behaves like something your target audience has used before, they're going to have a much easier time with it. Ideally, they won't ever have to look at your help documentation. But that doesn't mean your application has to be ugly.

Tags:

Data Comparisons Express... Always Improving

by SWortham 25. April 2009 02:07
New in Data Comparisons Express 0.97 Beta:
  • Improved start-up time by adding UI virtualization to many of the elements that don't need to appear initially. I also moved some of the initialization code into a BackgroundWorker thread to further improve perceived start-up performance.
  • Added better error handling around auto-saving connection settings, opening new connections, and application start-up.
  • The application will now check for updates as it starts up. I tried to make this obvious yet unobtrusive. I've always hated the big "there is an update available" popups that come up when you don't ask them to. So instead I just provide a little link that appears next to the help button that you can click to get the update.
  • Created better multi-threading for opening connections. You should notice that if you click cancel while attempting to connect to a server, then the operation will be cancelled immediately.
  • Added a context menu for the datagrid with the option to copy the cells you have selected into your clipboard. You can then paste this into Excel or your tool of choice.

Tags:

A Formula for Success as a Micro-ISV... Maybe

by SWortham 21. April 2009 02:03

Introduction
I'll be very up front about the fact that I'm making most of this up as I go along. After all, I don't have anything for sale yet and I don't think of BucketSoft as a success yet. Ever since I first started programming at age 12 I had lingering thoughts about what it would take to start my own software company. I thought about how great it would be to write some awesome software, sell it online, and then sit back and rake in the dough. Since then my delusions of grandeur have changed a bit, but the dream lives on.

Before I go on, what is a Micro ISV? Well, it's simply a one-man independent software vendor. In the traditional usage of the term, a Micro ISV requires the owner to develop and sell his or her software all by themselves. So as you can imagine, the thing about starting a Micro ISV is that it requires you to wear a lot of hats. You're the owner, developer, accountant, and marketing expert all in one person. Actually that's only the tip of the iceberg. In reality, I think the title of the website 47hats.com sums it up perfectly, a site dedicated to Micro ISV news & resources. So my initial idea of "sitting back" is perhaps a little off. I fully expect I'll be a busy boy as BucketSoft takes off.

Preparing Myself
I think I've unknowingly prepared myself for this through my experiences, if that makes any sense. If you count the time I did it as a hobby, I've been programming for a total of 14 years now. And I've had 8 years of actual experience working for small (10-20 person) companies. I never really planned on it happening this way, but working for these small companies has helped a tremendous amount when it comes to planning and starting my own business. That's because at these various jobs I became involved not only in the programming, but also technical support, usability testing, SEO (search engine optimization), marketing, advertising, etc. I wore several hats and gained the type of experience needed for very small businesses.

Although I'm fairly confident that I'll be able to make a living off of BucketSoft alone at some point, I am still cautious by nature. My approach so far has been to take it slow. I still have a full-time job separate from BucketSoft. And I'm working on getting the BucketSoft name out there a little bit at a time. I don't have any investors and I don't expect I'll need it. For the most part all I have invested is time. And it's time that I would otherwise be spending watching reruns of House and Smallville. So why not do something productive instead?

On with the Formula
Put simply, my whole opinion about how business should be conducted can be summed up in a quote from the Bible, "Give and you shall receive." Obviously, this is not a new concept. I wrote an article about this when it comes to attracting the most possible visitors to your website. I wrote that article out of frustration of some dishonest business practices I've observed all too frequently. My thought is that what's best for your customers is also best for your company. I plan to go to great lengths to meet that standard.

So I want to give away a lot for free. As you can see with my first product, Data Comparisons Express, it's free. I want to be open about everything that goes on, making this site an inviting place to visit. And I hope to create dependable software while at the same time providing great support. The ultimate goal of all this is to establish a good reputation with my customers and ultimately attract new customers by word of mouth.

Back to this idea of wearing "47" hats, I'll just expand a little bit on the subject of support. One thing I expect will help me drastically is GetSatisfaction.com. The site is extremely well done and really takes the idea of online customer support to another level. They have an ajax-enabled widget that you'll see on my Contact Us page. Essentially, whenever you begin to type your question or request, an ajax call is made to find similar questions that other users have already asked. It's a way of more efficiently managing support requests and ultimately saving time for both me and the customer.

Will it Work?
When I first started thinking about starting up my own Micro ISV I was searching for advice, tips, and especially success stories. I found some good information, for sure. But I didn't find a lot of success stories. I know there are stories out there but I guess most people just don't blog about that. Well, hopefully a year from now I'll have a story to tell. So that's what I'll do, one year from today I'll make another blog post talking about my journey.

Tags:

Asking for Your Bug Reports and Suggestions

by SWortham 20. April 2009 02:02
I've been following my stats in Google Analytics as well as the download sites out there and I've noticed the increasing number of downloads of Data Comparisons Express with each passing week. However, I haven't gotten much as far as feedback. I'm trying to work out any bugs or UI problems while the product is still in beta. But I need your help. So if you find a problem let me know.

Tags:

Powered by BlogEngine.NET 1.5.0.7

About the author

My name is Steve Wortham, and I've been coding since I was 12 years old. My experience ranges from 3D programming to web design & development to Windows software development. It's always been a dream of mine to start my own software company and now it's happening.  I started BucketSoft, LLC in March 2009 as a Micro-ISV.  The rest, as they say, is history.