Archive

Archive for the ‘Software Development’ Category

PayDay: My new development project

July 8th, 2010 1 comment

Note: I originally called the project ‘PayCycle’ but since this is the name of an existing commercial product from Australia.

In my last post I wrote about how I’m managing my finances by using some simple maths in Microsoft Excel.  As a way to learn C# and .Net I’ve started writing the logic of the spreadsheets into a simple desktop application.  I’ll also be extending the features of the application to help with forecasting how much non-fixed cost bills will cost in the future.  Things like car repairs and how much you spend on lunch at work.

I’m calling the software PayCycle since the central idea is your pay cycle and how your budgeting revolves around how much and how often you’re paid. Since finding out there is already a product out there called PayCycle I’ve decided to name the software ‘PayDay’.

I could keep using my Excel files to organise my budget if I didn’t have the urge to have a software project to tinker with in my spare time.  The project deals with money (which I’ve found is more involved than just using numeric data types), with time periods and frequencies (yearly, monthly etc) in what appears to be straight forward from the 10,000 foot view but ongoing work will reveal the devils in the detail.

The project will initially deliver a desktop application that uses WPF for the user interface, WiX for the installation project and NUnit for unit testing. I’ll be using both SharpDevelop and Visual C# Express as IDEs.  SharpDevelop because it has integrated NUnit support along with WiX integration.  Visual C# Express because is has WYSIWYG for WPF.  I would have used Visual Studio as it does everything I need but I can’t afford the license fee right now so.

SharpDevelop will contain the library project which is where the business logic of the software will be.  This is the project with the unit tests.  The windows application project will be in Visual C# Express and it will reference the built DLL file that the library project produces.  Hopefully there will be no surprises with debugging!

Once the desktop application is up and running I’ll look into writing a web based version.  With this intention in mind I’ll be very careful with how I write the core of the software.  I can not have any business logic in the WPF project. One of the lucky benefits of having two different IDEs is that there’s a clear delineation between the ‘display’ and the ‘logic/model’.

I’ll post new articles about my progress.  I’ll write about design decisions and problems I encounter.  I’ve already started programming so there are already things about money, currency and time frequencies that I’d like to share.

My next post will a little boring; it’s a walk through of the spread sheets I use for personal budgeting.  It will give you an understanding about what I’m trying to achieve with the software.

The mower mechanic’s grass is always long

September 3rd, 2009 2 comments

About 5 or 6 years ago I decided that I needed to own my name as a domain name.  I knew people would take an @ericmurano.com e-mail address more seriously than an optushome or hotmail address.  I’m a web developer after all, I need to show people that I take digital presence seriously. When I recommend that someone register their business name as a domain I don’t want them to say “But Eric, YOU don’t do that, why should I?”.

I registered the domain and got myself a web-hosting account and started giving out my new e-mail address to anyone that asked. That worked out well.  I could tell how impressed people were when I read out the e-mail address … ok, I’m exaggerating but it still communicated a sense of professionalism.

I decided when I setup the domain that I’d just have a small banner image with www.ericmurano.com on it just as a placeholder and nothing else.  I didn’t really have anything to put on a website.

People were expecting a website, though!  I’d get comments like “I see you haven’t done your site yet”. They saw my @ericmurano.com e-mail address and rightly determined my web site’s address by ditching the username portion and adding the www (clever rabbit).  What kind of example was I setting by having a domain name but no site, not even a single page “contact me” form?

So at some point I decided I needed to put a site up.  I wanted to blog every now and then and show off my 5 star photos but I didn’t want to install a blogging package, I wanted to write the software myself.  I did actually write a decent blogging app in PHP that generated all the blog posts in HTML files based on posts that are stored in XML.  It wasn’t complete but I was quite proud of the code.

I didn’t deploy it though.  It didn’t have an admin suite.  I had to write the posts in XML then upload them and run the ‘generate site’ script.  That wasn’t a problem but due to other commitments I no longer had the time to organise the deployment and eventually the whole project fell off the consciousness wagon.  I looked for the code a few weeks ago but I had lost it in the ‘Great Hard Drive Crash of May 08′ (more to come about that tragedy in upcoming posts).

When it came down to it I realised that I could have had a site up years ago if I had just caved in and installed a pre-written blogging package (WordPress).  So what if I didn’t write it myself?  It would take years for me to write an application that did half of what WordPress does.

I’ve noticed that I have the same attitude to my work.  I always want to re-write legacy code.  I always “want to do it right this time”.  I never want to consider off the shelf packages that would fulfil the requirements in a fraction of the time it would take to green-field an application.

Sometimes it’s good to let go and just do what gets the job done rather than wanting to control all aspects of the design of the application.

Sometimes the mower mechanic just needs to hire someone else to fix his mower!