Wednesday, November 28, 2007

Micosoft and UI Standards

In my last post I talked about how school doesn't really teach "How to make a Windows Program". Microsoft has however done extensive usability testing over the years, and has laid down many documents explaining how to make Windows programs use those standards, so that anyone who uses a Windows application has a familiar feel.

Oddly, Microsoft's latest app, the Zune player, seems to copy a little too much from Apple. When Apple first started creating iTunes for Windows, they made it look and act like a Mac app (but not in a good way), and it was absolutely horrible and confusing to use on Windows. The first Zune player that came out was refreshingly easier to use then the early versions of iTunes. However, the latest incarnation, while pretty, doesn't seem to adhere to many standards of Windows:

Where's the title bar to click and drag here?

And don't get me started on IE7 with it's "Menu in the middle".

The point of this post is when it comes to Windows applications, don't put beauty over function. If you want your app to be accessable to all users, keep it simple, make it feel familiar, and then gussy up the things around it.

Here's the latest dev shot of BudgetSimple btw:

Hopefully it's starting to look a little better. The positioning isn't final at this point. The main screen is very specific in it's purpose. I don't expect to make help files for version 1.0, so I'm trying to make everything easy beyond explanation.

I've started using FogBugz OnDemand for this project. It's much easier to keep track of your thoughts and have a sense of accomplishment if you write down something in FogBugz as soon as you think it, and resolve the issue when you take care of it. My only complaint is FogBugz runs a little slow (don't know if its the connection or my slow old laptop choking on the ajax).

Sunday, November 25, 2007

Tools I'm Using

Well the mISV challenge is chugging along. It did get derailed by the Thanksgiving holiday, so I'm a little behind schedule. I still plan on starting the beta test this week.

To keep this interesting though, I thought I'd detail what I'm using for this project.

First, I'm using C# with Visual Studio 2003. Which kind of contradicts some earlier posts of mine that suggest using VB.NET for speed of development, and the latest version of .NET, because people don't mind updating. While I mostly still agree with those points, I'm semi limited in my current dev environment until I move, and I only have VS 2003 on this computer. I don't really need any of the .NET 2.0 features for this project, so using 1.1 will result in less downloads for my users. However, C# is much more fun in VS 2005.

To keep things simple, I decided to use Patrick's idea for Drop-Dead Simple Updating for my updates. In ChimSoft, I used a nifty Web service I made that determined if an update was needed, but I decided to get even more simple for this one. Although I probably will eventually make the updater more complicated.

Although it's just me developing by myself, I am using Subversion for source control. It's amazing to me how some people still don't quite get how important the concept of source control is.

I'll probably be using the Infragistics graphics package I bought for ChimSoft, as well as the pretty nice icon pack I received as well.

Stay tuned, hopefully tommorow I'll have a beta out there!

Tuesday, November 20, 2007

How do you design a Windows App?

Ever since I was in high school, all I really wanted to know how to do was write the programs I use on my computer (back then it was games). So I went to school for Computer Science, and you know what, not a single class showed me how to write a Windows program.

Eventually, after a lot of searching I found some stuff online and some books that showed me how to write programs for Windows in C++ and MFC. I remember spending a whole weekend or two cranking out C++ to produce a crappy Blackjack program. Well now, I could probably make that same program in about 3 hours with C#, but still at no point in my professional career was I ever shown "how" one should make a Windows app.

So here I am making my third windows app (second that I'd be putting for sale), and although I've become better aquainted with the standards and ways of Windows apps, I still probably don't do things "the right way". So here is how I set about making my app.

First, I think about the design. What's going to power the app? Will it need a database? What's the general look and feel? Once I have a general idea about that, I start dragging controls onto a blank form to get a basic feel for the app. This is what I had around Tuesday of last week:

Ugly as all heck, but most of the functionality is actually there. It probably even looks worse then your typical windows app because I am trying to maintain a consistent UI to the current website my users are used to. Keep that ugly look in mind on Friday when I show the screenshots with the UI prettyfied.

So once I have the basic layout, I start throwing down all the code. I get the app doing all the features I want for version 1.0. I'll make sure to add in some basic error checking, but its still pretty much bug filled.

Once the program basically works, I go back and make it look pretty. Now it's starting to feel like a real application. At that point, I'm motivated enough to really starting hitting it hard for bugs. The last two paragraphs should all come together this week.

Monday, November 19, 2007

Back in Action

Well the Internet is all happy and working again here, so I'll try to post regularly this coming week. As I mentioned in my last post, I've got the basics working in BudgetSimple - Desktop (still need a good name for this). I didn't do any developing from Thursday-Sunday, so it hasn't progressed much from there, however since I was ahead of schedule I don't think that will hurt my goal of a beta by this weekend any. Thanksgiving may hurt it being a successful beta, since many people may be away from their computers, but hey it's also that time of year that people realize Christmas shopping is making them broke! I'll post some screenshots of my progress tomorrow, and hopefully get some serious developing in tomorrow night. Unless Maryland upsets UCLA...

In other business news, it appears AdSense is finally taking it's Winter hibernation. Perhaps due to Global Warming, I was continuing to get my summer month eCPM on my used cars site into November, and was making record profits for this time of year, however it appears to be going back down again. Also, sometime back I spent considerable time reworking the site to be more search engine friendly. I added a site map and started using mod-rewrite to make every page have it's on URL. Turns out it was only working this way when you searched via form, which of course Google doesn't do. And every page had the same title.... so I fixed all that this weekend, and hopefully PageRank will jump up a little.

Tuesday, November 13, 2007

Slight Road Bump

There is a little problem I encountered with my "MicroISV Challenge 2007", my Internet at my new place stopped working. I almost wrote a post about how awesome Verizon is for UPS'ing me a DSL modem in 2 days, and I plugged it in and it worked. I was on the Internet all weekend, and then Monday evening I came home to no DSL. I called Verizon and because my "official date" is Nov 16th, they can't do anything to help...I'm like "clearly it physically works, just turn it on and bill me!". But whatever.

Luckily this project isn't a web app, and I am still well on schedule if not ahead of schedule in my development of BudgetSimple's desktop edition. It doesn't look pretty yet (and probably won't til week 2), but it does almost everything the online version of BudgetSimple does already! So unfortunately I probably won't be providing the daily updates THIS week (I'm at a Panera currently...glorious Panera with their free Internet).

Sunday, November 11, 2007

The Great MicroISV Challenge 2007

I recently mentioned my move to Pittsburgh to begin a new job. I also recently mentioned that I plan on developing a desktop version of my popular free online budgeting program. I've decided to combine the two events into something I'd like to call "The Great mISV Challenge".

Similar to short time table Patrick had when he created his Bingo software, I decided to use the situation I'm in currently for some hard core developing.

The challenge is this: Starting tonight, I will begin developing version 1.0 of BudgetSimple - Desktop (coming up with a better name may be part of this). I'm literally staring at a blank Visual Studio window now with nothing written. My goal is to have version 1.0 out and selling in exactly one month. I'll lay out my schedule in a little more detail later in this post.

Why do this now and in this way?

One of the caveats with moving to Pittsburgh is that I still have a house to sell in the DC area, so I'm temporarily renting in the city. This means a couple of things, first my wife and friends are not here, so my time is my own, I'm currently living a spartan bachelor life, so if I stay up until 2am eating Potato chips and drinking Jack Daniels to get this done, no one will care. I also have no chores for the most part since I'm in a bare little apartment. My only current time sink is playing soccer once a week. Another nice thing about my new job is that it's a 10 minute WALK to work, so even if I put in a 10 hour day, I still have tons of time to work on this project.

All of this will of course change as I get into the thick of things at work, our house sells, etc... So I think this is a great time to bang out this project, while at the same time hopefully providing some more interesting blog posts to this recently sedentary blog.

How exactly do you plan on doing this in a month?

Well actually I plan on doing it in two weeks. One nice thing about this mISV is it's not entirely from the ground up. I already have over 5,000 users of BudgetSimple that can potentially be beta testers. I hope to have a beta in their hands within two weeks, leaving the other two weeks for bug fixes and marketing. I also have a general idea of the functionality and a lot of the code to make it happen. I also have lots of tools left over from my other mISV project (which took a year to develop if you're looking for a good comparison), so the expenses should be minimal as I already have icons, IDE, obfuscators, etc...

What are the biggest stumbling blocks you see?

Well, the biggest is the actual selling of the program. Sure BudgetSimple is the #1 search result for a popular term on Google, but unfortunately that term is "free online budget". This program is neither free nor online. There are lots of people making budgeting software that cost money already. I hope to draw in users of the free BudgetSimple with a more powerful offline version (that will also integrate with the online one).

Another big stumbling block is my current development environment. I'm going to do this almost entirely on my laptop. While that laptop is awesome for travel (being a 3lb tablet PC), it's specs are really weak (the laptop is the first gen tablet pc from like 5 years ago), so I could see myself being able to run a few laps around the block waiting for a build.

OK so what should we expect here?

Tonight I will work almost entirely on the design of the program, by Monday the basic look and structure should be there, by Wednesday it should have at least the functionality of the current BudgetSimple. And by the end of the week it should contain some of the newer features that people have requested. The following week I'll work on upgrading the online version, and get the synchronization of the two versions worked out.

Any questions, doubt, etc? I hope to post at least once a day to update the status of everything, wish me luck!

Thursday, November 08, 2007

.NET Download Size

I'm surprised I still hear this as such an issue on the software boards. It is of course not ideal that most Windows PCs are not running the latest version of .NET, and that your 3MB app will require a 25MB download for someone to use it.

But when I sell/sold software to Chimney Sweeps, despite sweeps being one of the least tech savvy audiences, I never once heard a complaint about this.

iTunes, arguably one of the most popular pieces of software out there, feels the need to update with a 60MB install every two weeks.

.NET in my opinion, is one the things Microsoft actually got right. It does stink that half the people who download your product will get a larger download, but 25MB is really nothing these days. Especially when given the productivity gains.

I bring this up because I am going to begin work on the desktop version of BudgetSimple in the coming weeks. I again evaluated other potential development platforms, but wanted to learn from my own past and go with what I know.

Whatever framework you want to use will make little difference to your customer. Just make sure you make it seamless. So make your installer automatically download .NET or Java.