Day 49 - Message In A Bottle…

29 07 2008

For those old enough to remember the 80’s [hands up if you can remember the "60's" as I can too?  ;-)  ] you may remember the song that Sting sang when he was with the band The Police:

“I hope that someone gets my
I hope that someone gets my
I hope that someone gets my
Message in a bottle, yeah
Message in a bottle, yeah”

So what on Earth has this got to do with writing software or the 30 Day push (now expired by almost 30 days)?

message_in_a_bottle

Well….  Let me explain.

First off, I have to put things in context.  I’ve been treating what I wrote in June this year during the now much blogged about “30 Day” event as a “Prototype” as I mentioned in my previous blog post.  As I indicated I used a good part of last week to rethink design, not UI so much as code.  The “guts” of the application.  It has been my intent, as I’ve mentioned many times, to use what I do with MixAction as a core basis for further products, many of which will be far more complex, far more specialized and a darn sight more expensive to purchase.

In order to do this I’ve been looking around at a lot of places and as always core simplicity wins the day.  Steph has a fantastic article in his blog on exactly this kind of idea, titled How To Write Maintainable Code.  It’s worth the read.  Please do read it and return here.

As you read (if you clicked the link) Steph begins his article with

“write your code from the perspective of the person who’s going to use it.”

OK.  It’s not that Steph says anything we aren’t already supposed to know - or do!  It’s just that we bloody well tend not to do so. 

That’s where the subject of this post comes in.  Messages.  With the rise of RAD programming (Rapid Application Development) and the IDE’s that support them we tend to forget, unless we write components regularly or earn our crust developing them (or work in C++) the basic tenets we learnt when we cut our teeth programming in Windows.  Say back in Windows 3.0 (I admit I ignored Windows 1.0 and 2.0). 

Messages.

Our RAD IDE’s and their component libraries shield us from them, and so, along with pointers, many of us (especially those who use Delphi, as I do, or the flavors of VisualBasic or the newer .Net tools) only use them to respond to component style “events” but never actually code them ourselves (in this example I’m referring to application level messages, not system messages).

Applying Steph’s ideas and using things like messages (where appropriate) we end up with a real *engine* not just a program.  An engine can be re-used.  A program has to be either cut and pasted if you want to re-use, turned into a cumbersome DLL or component (which pretty much means you’ll have to do some extra messaging work anyway) or rewritten from scratch. 

Now there are tons of situations where you don’t need messages.  In fact more often than not you won’t need them at all.  But when you need to separate code from the GUI and that code is doing things you need to know about, messages can be your friend.

In the case of MixAction (and subsequent products) this is part of the solution I’m applying. 

Through using messages I was able to kill six, what are now, superfluous threaded timers that tied the “engine” to the GUI and a lot more besides.  That’s six less conditional compilation problems I have to deal with and 100% FREE! 

Don’t get me wrong here, threaded timing is cool and useful too, but it’s not always necessary and can be a major PITA to debug (hence it’s value in writing anti-piracy routines).

So there you have it.  For the last three or four days I’ve been working away getting things clear of the GUI but still maintaining (in the end) all the benefits of RAD component based development through a process I myself have rarely bothered with since I began using VB and Delphi (the latter first in 1995).

Not rocket science - and the bleeding obvious to many, especially the C++ people, but well worth considering.  :-)

Scott Kane

Quote of the day:
That which has always been accepted by everyone, everywhere, is almost certain to be false. - Paul Valery



Day 45 - 30 Days, The Road To Banality?

25 07 2008

It’s been quite a few days (six in fact) since I’ve managed to get a few moments to write.  In that six days a hell of a lot has happened.  Nothing bad as such, but not entirely all good news either.

First up - I’ve been staying with the wife and kids.  For me a bit of a holiday away from all things development and business.  I’m usually very bad about doing this, but this time I was delighted. In fact elated, as I shall discuss further on.

The bad was that the reason I was away was so that my wife could be available for her mother, and out of interest and concern herself, as her father, 76, had open heart surgery.  We visited him, attended my youngest daughters biannual school concert (ah, another use for MixAction) and of course the more mundane (but none the less lots of fun!) looking after the kids while my wife did all the things she needed to do.  Which worked out perfect, especially given the youngest ended up with a serious asthma attack on Wednesday and Thursday after her concert (the excitement) which meant I was there during the day while my wife was out. 

Family time is great.  My wife’s father is doing well, or at least as well so far as one can reasonably expect after such a massive operation, and I’m now back on deck.

It also gave me time to give considerable thought to MixAction, our company, my goals, design and implementation models, code implementation and management - and probably most cathectic for me was a post last week on a blog owned by Ian Landsman who wrote:

“All the rage the last year or so seems to be trying to build an application as fast as possible. The common length of time seems to be 30 days, but it sometimes goes down as low as 7 or even 5. While this may be an interesting idea as a publicity stunt for an established company or for a Google engineer using their 20% time it’s about the worst idea a would be MicroISV can take up. In fact, I can’t think of a better way to ensure failure in a software venture (a venture you hope to replace your full time job with).
I assume this has come about from the new mantra of release early and often. Those ideas may be good ones, but for a one man show putting an arbitrary limit on the development of your product is suicide.”

OK.  I commented on his blog at that time, but what he wrote (and his article is well worth reading) is not at all incorrect.  In fact I’m going to do something totally unexpected here.  I’m going to sweep aside the mental castration of testosterone and ego (and it’s remarkable how intertwined the two are) and state he is right on the money!

I only disagree with the headline of his article, and my reasons are outlined there in my responses to him. 

10101875A~Jack-Nicholson-The-Shining-Posters

So how was it cathectic? 

The old cerebral matter has been mulling over exactly what I had at this juncture.  In the whiplash of the 30 Days, which I do not regret one iota, I failed in making sense of the bigger picture and that is suicide!!

To pull this off you have to sit back and put on your analysts hat.  That’s probably hard if you’ve never done professional analysis, but it’s vital. I have and the penny dropped.

I did not have a release candidate.  I had an incredibly well scoped and implemented prototype!

You’d think this would make me feel incredibly sick.  The realization; “Oh the shame of it!”.  Far from it.  In fact it was, as I’ve said, cathectic.  It was a tension release, it felt pretty bloody good, mate, and I’m in debt to Ian Landsman and Steph (who’s written a rather nice book that I’m reading, and will blog about in the future, on SEO) for giving me a bloody good wake-up call!

So.  With that under my belt I started thinking about some of the issues my testers faced, some of the issues I’m aware of that nobody else has discovered and what I want to see now. 

I don’t want just another “clickware” application.  My competitor already has that covered (well, kind of, presently his public build fails to run as he forgot to include some proprietary files that I suspect only exist on his system.  It’s been six weeks now since his new release and he’s not fixed it, which indicates the level of turnover he’s doing, or not doing, and is a perfect illustration of If You Don’t Love It Don’t Release It that I wrote about some months back).

My competitors program is a 30 Day job.  OK, that’s stretching it, it’s a one week job for a competent coder including writing the doc’s and installer.  I’m serious.  He’s a hobbyist.  His interest is clearly theatre.  I’m a programmer who’s worked in theatre and has audio engineering certification.  That’s a critical difference.  Ethics prevent me from including a screenshot or a link for comparison. 

He’s built a product, I’m building a company, even if it will be a small one.  That is equally significant as a difference.

What he’s done is not what I wanted.  Been there, done that, I have the tee-shirt. 

So.  Mixerlicious,   stays on hold.  MixAction goes back into full development.  In June I switched API’s, switched file formats, hacked at the source code of a commercial library I purchased because it didn’t deliver in the way I wanted (that’s not a criticism of NextGrid, it’s a nice component, but I’m clearly asking it to do things it was never intended to do) and more last minute shifts in internal implementation than you can shake a woomera at.  The audio API is luscious - and it’s not being taken advantage of fully by me presently.  That’s got to change.

Like I said, a great prototype.  I achieved most of my goals. 

  • Making something complex into something easy to use.
  • Breaking metaphors because those metaphors fail in software.  They make sense in the real world, but bugger up in software.
  • Taking domain knowledge and applying it solving a problem. 

Now it’s time to do it right.  Frankly I don’t care if it takes 30, 60, 90, 120 or 360 days.

Neither should you with your product.

So in summary.  For a complex product and a view towards building an mISV with any hope of progressing to ISV (or even remaining small, but maintaining sales you can live off) 30 Days is great for a prototype. 

It’s fantastic for some free PR (this blog is being linked to from theatrical sites with zero effort from me, making it very worthwhile to date), and it does make for a great splash and getting folks to drop by.  BUT…

If you don’t love it, and I don’t think you can love it after 30 Days intensive coding, in fact you’ll come to loathe it in many instances and will need the time to step back and analyze - then DO NOT RELEASE IT!

This is not the last word on the development of MixAction, or any of the products and the company I’m building.  There is no point in making mistakes in life if you don’t put them somewhere safe to take and out use when you need them most.

Make lot’s of mistakes - they’re your best friends in life and critical experiences in business!

Scott Kane

PS.  BTW - any resemblance to me and Jack Nicholson is purely coincidental…  ;-)

Quote of the day:
When a thing ceases to be a subject of controversy, it ceases to be a subject of interest. - William Hazlitt



Day 45 - Beta Test Results

16 07 2008

It’s been a few days since I posted and I’ve got a fair bit to catch up on, but I won’t be able to cover everything in this post tonight.

Results for RC1 have been largely very good, the only show stopper coming in was from a tester with multiple sound cards.  This is tricky to say the least, but I’m incredibly grateful to Mike Wilson for finding the issue and reporting it.  Most of my customers for this version of MixAction are unlikely to have more than one soundcard, but a bug is a bug and this one looks very ugly when it occurs.

While all of my machines have multiple soundcard’s I can only test on a couple of them.  Most of that testing is in virtual machines and they do not play well with most pro-audio cards, especially when you have around four. 

So tomorrow guess what  I’ll be recoding.  ;-)

I had a demo of ByteShield on Monday.  I was so impressed I’ve agreed to sign up with them.  This is a very impressive system, check it out if you have not already done so.  In a nutshell you upload the unprotected exe of your application to their servers to do their magic (automated).  Parts of the exe are removed and patched with, AFAICT, null data and some nice routines (sufficient to cause a Jolly Roger to suffer either a mental breakdown or a case of incredible boredom - with any luck significant doses of each).  The resulting exe is then distributed (options for trials, renting etc making this rather flexible) by you and when customer installs the exe is validated against the server, patched appropriately (but differently each time with a large quantity of jumps to keep Olly debugger enthusiasts busy until the next decade), not forgetting of course the standard debugger protections to keep out the totally lame and clueless newbs in their quest for “scene glory”.

As I said, that’s in a nutshell.  It’s far more powerful than that, amazingly so and I’m extremely enthusiastic about it.  Plus - their service and support so far has been personal, frank and enthusiastic. Their CEO Jan Samzelius was even prepared to work with me with my DownUnder time zone in order to show me the product.  What more could an ISV ask for?

In conclusion I’m also going to reveal the audio engine that powers MixAction as some folks have asked me about that back in June. 

Originally I coded my own DirectX routines and a bunch of other stuff that worked, but wasn’t anywhere near as robust or expansive as I wished for.  This left me with a choice.  Do everything incrementally the hard way, reinvent the wheel and spend more time hacking API’s than actually working on product.

Or - license a solid piece of technology, cannibalize stuff from my own code where necessary to support that - and of course eat into my own rather limited budget further.

I chose this latter course.  There are a number of great libraries available that wrap DirectX and other technologies.  While I consider some better than others I found most wanted to restrict the price for which one could sell a product for.  The licenses I could afford would not lend me the pricing structure I needed if I was stay in license (essential). 

Except for the library from one vendor who has generous licensing options, offers fantastic support, is really approachable and who responds within hours to the few questions I’ve asked.  Brilliant stuff.  MultMediaSoft’s products are a delight to use.  I was honestly blown away (and am still being delighted as they are deep products full of wonderful treats to discover) and would rate it as the best  development library I’ve ever purchased a license to. 

Severino from MultMediaSoft has put together some really impressive stuff here and I recommend them without hesitation.

While for specialized audio domain knowledge is certainly still essential I’d have to say I would not be at RC1 (and getting RC2 together) now without MultMediaSoft!

Updates on development of MixAction in the next post…

Scott Kane

Quote of the day:
The human race has one really effective weapon, and that is laughter. - Mark Twain



Day 41 - The RC Waiting Game

12 07 2008

First feedback for RC 1 showed a few issues - lucky I was there in person to handle them.  Mostly installer problems that I’ve addressed now.  So the first of my “circle” of folks who actually get to download and test without me being there were notified tonight.

Now one of the worst parts of all.  Waiting for show stoppers.  ;-)

I learned a great deal today about a company offering a unique and extremely interesting licensing system for software developers.  I’m going to blog about that more when I have more details, but chatting this afternoon on the phone to Jan from ByteShield has me intrigued - indeed extremely impressed!  So stay tuned next week and I’ll let you know what I find out.  I’m getting a demo of the system on Monday and am looking forward to seeing how it all goes together.  Note that this is server side technology primarily and is not an exe wrapper or anything like that.  That they are partnered with my favorite e-Commerce people FastSpring makes if very attractive indeed.

Still done pretty much zero work on the website.  Now RC 1 is out I’m hoping I can attend to that next week, tomorrow being Saturday and my “day off” with the family.

I’m also going to do something really odd.  If MixAction goes to release before July 21st 2008 I’m going to do another 30 Day sprint for Mixerlicious starting - all things being equal - August 1st 2008.  So I’ll do another 30 Days of blogging on progress, while also handling any “issues” with MixAction and ironing out some of the marketing stuff related to that.

The actual product name Mixerlicious have been switched to another type of product all together, still building up to a much larger B2B only application, but the latter will be marketed under a different name.

So if you’re in anyway interested in comparing the first “30 Day” product (that took longer than 30 Days for sure) with a second back to back then you might want to follow along.

I have a reason for dong this - apart from insanity - I have another political campaign to fight in November and simply won’t have the time after September to work flat out like a lizard drinking coding.  Plus.  I learnt so much from the June 30 Day exercise I’m bursting my britches to implement some of those lessons.

Anyway - have a great weekend, it’s summer in the Northern Hemisphere - but here in the Southern it’s cold and icy (OK, frosty, no real ice in Melbourne - we don’t do snow to often and when it does it’s kind of like icing sugar unless you are on one of our few tall mountains).

Scott Kane

Quote of the day:
People ask for criticism, but they only want praise. - W. Somerset Maugham



Day 38 - Stalled, but slogging on

9 07 2008

 

Today was just one of those days where you set out to achieve one thing and somehow get carried away doing something you should never have started in the first place.

I was supposed to get the installer done today.  As it turns out half of it got done.  Enough to test in some VM’s.  Couple of issues will need tweaking in the app’s configuration (requiring a few source lines being changed in MixAction itself) but otherwise OK.  However I thought I’d check out another installer rather than what I usually use.

Big mistake!  Lots of time divested interpreting what is implied in the interface from documentation that is spottier than a Quoll.

quoll-yawn

The fellow above looks like he’s in the same mood I was in.

OK.  Lesson learned and hopefully more progress tomorrow.

One of the things I wanted MixAction to be was relatively unique without truly breaking totally new territory (which in turn becomes harder to market).  There’s competition out there for it, not a lot, but the idea in terms of application is not new, though the implementation presently seems to be unique.

I mention this so that I can briefly talk about a great product marketed by fellow ISV Ryan Smyth owner of Renegade Minds Software.  Ryan’s Guitar and Drum Trainer is an audio application that has competition but still manages to do some nice things pretty much unique to the application.  If you’re a musician and particularly addicted to guitar playing I recommend checking it out!

I was very impressed with his 62 Band Stereo Equalizer.  It’s actually a pretty neat implementation. 

One of the problems with EQ’s across so many octaves on a computer is that they eat CPU cycles like there is no tomorrow.  Not sure how Ryan achieved his results but his EQ is actually quite lenient in this regard.  Well done! 

MixAction had it’s EQ “upgrade” to 10 bands last weekend.  This was done to accommodate cleaner “presets”.  My own approach is to limit the number of octaves for basic Direct-X effects and later implement my own VST effects (and at the users option other peoples) - but that’s for the pro version, concentrating on getting this iteration out the door first.  ;-)

Scott Kane

Quote of the day:
Between two evils, I always pick the one I never tried before. - Mae West



Day 37 - RC1 + Ready To Begin Website

7 07 2008

 

Well.  It had to happen sooner or later. ;-)  MixAction is finally completed and ready for RC1 barring some tweaking of the installer I want to do (not happy with how it handles non admin accounts presently, shouldn’t be to hard a fix tomorrow refreshed) and some last minute tweaking of template files as I’ve added a few features since I created those.

Literally did everything last night and today that remained to do inside the program.  Tomorrow I’ll do the above and then build the final installer for RC1.  Do some more quick installs in some VM’s and then let it loose on some testers.

After that I have to really get cracking on the website.  A fair bit to do there, though layout is pretty much finalized I think. 

The website at this stage will be kept simple.  I’m actually debating having the forums accessible only within the application presently.  While there are definite advantages to open and public forums there are many other issues such as forum spamming and all that lovely stuff we all loathe.

In addition I’ll be adding a blog to it related to the software in a round-about way but to theatrical audio stuff in general.  That’s going to be a tough call to make sure I keep posts rolling.

I’d like to take the opportunity, for the rest of this post tonight, to mention something atrocious that I think every developer reading this blog needs to know about.

McAfee’s  “Site Advisor”.  This ridiculous software package has targeted many authors I know over the last few years with their  libelous and slandering “ratings” which mark innocent website as “dangerous” and containing “malware or viruses” by virtue of those sites having a link to a download site that has been flagged by this nefarious company. 

Recently respected developer Julian Moss of Techpro was targeted (and currently still is).  What makes this even more insidious, beyond the fact he is totally innocent) is that Yahoo have signed up with McAfee to incorporate “Site Advisors” ratings into their search results.  Thus Julian’s site, which is number one for many keywords, is being shown as something to avoid.  Take a look at the screenshot below (click image to zoom):

yahoo_defamation

Nice!  The potential to screw Julian’s successful business is beyond belief.  Julian has of course written to all parties - AND BEEN IGNORED!  Par for the course with McAfee and their “Site Advisor”.  Their support department is of the same caliber as the offending product clearly.  That is to say negligent, bereft and cruel.  They don’t give a damn - and you should!

From Julian’s Blog:

Tech-Pro.net has received a red danger warning because McAfee’s software claims to have downloaded three files containing the Winfixer virus. Without being given any notice, nor being offered any channel to challenge the allegation, McAfee’s software is defaming our business by claiming that anyone who visits our site may get infected by spyware.
The three downloads in question were all of PC Tools’ Spyware Doctor from RegNow. Spyware Doctor is one of the most highly respected anti-spyware products on the market, and RegNow is part of the Digital River Group, the leading online software reseller. Anyone with a knowledge of the software business would know this to be true, and come to the conclusion that the test result is most likely a false positive. But a lot of potential visitors to the site - people who don’t know much about computers looking for help with a problem - will not realize this, and think we are peddling spyware.

Please do read the full details at his blog and when you get back here consider this one from Steph where he quotes from an article in the Register:

In late February, AVG paired its updated anti-virus engine with a real-time malware scanner that vets search engine results before you click on them. If you search Google, for instance, this LinkScanner automatically visits each address that turns up on Google’s results page.”

and…

However if you have the latest version of AVG installed something else happens. You start the same way, go to Google, enter in your search term (”latest movies”) and click on the Search button. However here is where things change for the worse. AVG looks at the search results and behind the scenes starts to download each and every search result webpage. This is without you having to view or visit the webpage, it’s all happening behind the scenes.”

You can probably imagine the bandwidth this is going to cost YOU AND I AND EVERY WEBMASTER!

These anti-virus and anti-malware companies are becoming as bad as the curse they purport to cure.  Law unto themselves they don’t give a flying fig for anybodies interests except their own bottom line.  

The number of nice tools for code obfuscation etc in binaries that have been used by some moron in a spyware of malware shop and then flagged as “malware” or “virus” point blank is a case in point.  One tool I was going to purchase recently for bundling DLL’s into exe’s was so flagged - *nothing* the author did, nothing he said got them to budge on their flags.  End of product…

A false positive is one thing.  But guilt by association, as the McAfee example above implies, or “lets scan every bloody thing!” in the AVG example is just stark raving lunacy.

I would urge you to vote with your feet with these two products (and any others that pull it) by ditching them if you use them and telling others to do the same - not forgetting to tell their customer services departments *why*.

Flagging all cookies as bad was lame enough - as so many spyware scanners do - but this is beyond the pale.

UPDATE:

Thanks to Richie Hindle, commenting below on this post, for letting me know that AVG are changing their policy on this link scanning.

http://www.theregister.co.uk/2008/07/07/avg_stems_fake_traffic/

Scott Kane

Quote of the day:
A marriage is always made up of two people who are prepared to swear that only the other one snores. - Terry Pratchett



Day 34 - Coding To Heal - Media Files

4 07 2008

Originally I intended to spend today tweaking special effects.  As it turns out I decided I’d add a set of functionality that was on my “To Do List” for after release.  Normally I’d not do this, but in this instance I think it was actually essential.

Basically MixAction “heals” it’s Project files.  That means essentially, now all the meta data is internal, a kind of “database”.  Works extremely well, in fact I’ve not been able to break the “self healing”.

However - one thing could not “heal” itself and that’s media files (audio). 

The software makes a copy of any audio selected for inclusion in a project  and even then works with those files non destructively.  It includes the ability to archive a complete Project, including database and media, for transport (move to another machine, say a laptop for performance)  and backup purposes and is capable of restoring the same.

Where things can come unstuck is if (and in this business probably “when”) a user or other person deletes audio files inside the actual Project \Media directory outside of doing the delete inside MixAction (which of course takes care of things properly).

Simply put things would screw up royally.

So today was spent writing some nice code to search, in a thread, at startup for missing media files only if those files are missing. If nothing is missing the Project loads as per normal.

firstaid

Works like a treat.  :-)  If a file is not present it is searched for on the system, across multiple drives, and if found restored to the Project. If not found the user is warned.  Not a lot one can do for files that no longer exist anywhere of course, but then they should be backing up their Projects using the built in archive tool anyway.  ;-)

What ended up happening is that I rewrote the code I was using for copying files from one location to another - its’ faster.  So of course the routines within the program for adding media in the first place likewise work faster as well now - depending on the size of the media file.  Much faster in fact.

That pretty much tied up the available hours I had today as I had to attend to some other issues outside of this software.  But none the less worthwhile.

Tomorrow’s my day off so Sunday I’m hoping to do what I intended to do today, polishing up the special effects code.

Later…

Scott Kane

Quote of the Day:
If you haven’t got charity in your heart, you have the worst kind of heart trouble.
–Bob Hope



Day 33 - Polishing Code - Implementing

4 07 2008

OK.  Today was a late start but very productive.  I managed to get heaps done and that’s always a good feeling.  The worst thing that can happen to a dev’ is going sour after the kind of hours pulled last month.  Tuesday’s slack off paid a dividend.

First up I finally did what I’ve mentioned several times now and said I’d do in yesterday’s post.  I pulled the final “meta data” out of the project folder and folded it into the database.  Effectively killing (removing) many lines of code and with it a bunch of complexity.

That means that in a project folder there is only the Project file (database) an a folder with the audio files (media).  This speeds up operations, reduces the risk of inquisitive folks deleting something they might need and breaking the project and as the project file is self healing the risk of corruption is vastly reduced. 

While not rocket science by any stretch it takes a bit longer to do than actually writing about it here does.

I managed to write some nice shiny routines to handle Unicode which basically make this possible.  The grid I’m using remains, fortunate as it has some great features, and the data is all nice and safe in the project file.  <sigh of relief>

This was really bugging me.  I did not want to go to release with the method I was using.  Much too easy to break, a lot more code to maintain and an all round PITA.

Next I finally pulled the shell controls widgets shipped with Delphi that I’d been using out and replaced them with some nice super fast ones.  Again, took a lot longer to do than it takes to describe it, but worth every minute. 

Tomorrow I want to begin polishing up the code for the special effects.  They work nicely but some of their parameters are in the GUI and I don’t want to ship with them there.  It makes adding flourishes like presets a lot more complex later.  So out they come into their own objects, in this instance, and I’ll feel a darn site better about them too.

polishmower

If I finish this before the end of the day I’ll spend some time, again, testing, tweaking and making sure things are as they should be after all these changes.

Got to get back to doing the website too.  ;-)

Saturday is technically family day, this week my wife and I go out to dinner to say “goodbye” to Senator Lyn Allison who’s parliamentary career ended last week.  Given how often my wife and I actually go out for dinner it should make a nice change.  The girls will get to stay with Nona and Nono (grandparents) for the night leaving us - first time in thirteen years - to have some “quiet time”.

What that means of course is that I won’t be back on deck until Sunday night.

Later…

Scott Kane

Quote of the day:
The cloning of humans is on most of the lists of things to worry about from Science, along with behavior control, genetic engineering, transplanted heads, computer poetry and the unrestrained growth of plastic flowers. - Lewis Thomas



Day 32 - Back On Deck

2 07 2008

Day 31 (Tuesday) was nice and slack.  I did didly-squat pretty much and no regrets at all.  I needed it.  ;-)

I should point out however that my idea of doing nothing tends to be doing “research” and furiously scribbling notes into my notebooks, that accompany me everywhere I go.

So in doing “nothing” I was actually engaged in two activities. 

Working out in my head and then on paper the code changes I wanted to implement in MixAction.  I’ll come to some of those in a moment and over the next few days.

The other thing was making Mixerlicious (TM) something that no longer existed in my head but rather something scoped out on paper.  A little more than just random notes as it had been previously and thoughts about UI for it.  This particular product will also be an audio product but this time 100% B2B and priced around $2,000 US.  In time I’ll expand on what it is this product will actually do. Suffice to say prior to doing even the basics of notes on it I’d contacted and spoken to potential customers.

It’s had a domain registered for months, has a trading name registered etc and when I get to creating it I’ve decided I’m going to blog here about it as well.

At this point you’d probably be asking yourself “Why doesn’t he use project planning software?”. 

Well I do.  Eventually. But for this kind of stuff there’s nothing like the freedom of a notebook (A4 binder style so I can rip pages out if I want to) in getting down what I see in my head onto paper or what I see “on the screen” while researching.

The last year and a half  has been quite a break through for me.  While I tend to keep it to myself pretty much I’ve actually suffered for eight years now from a disease that for many people can be terminal.  It’s not that the disease itself kills you directly, but rather the symptoms can cause death under certain circumstances.  I’m on the other side of that now and it’s a fantastic feeling to have gotten to this point, as most folks don’t, run in a federal election (which was my first and will not be my last) and to be hammering away at code which I’ve not really been able to do consistently or properly since diagnosed originally. 

For me the 30 Day sprint of June is truly a milestone.  I proved to myself I’ve still got it in me to code up a storm and survive it.  Indeed it was this fact, probably more than anything else, that led me to decide to hold back while I polish up the results of what was a breakneck month - if not a marathon.

I used to code and in multi-national companies.  One thing I learned painfully is that clutter in code is a disaster.  I do like objects, but one has to also keep in mind there is a time and a place for them. 

However.  I spent today moving code that had crept into the UI that should have been self contained.  Separation was always my intention and it was spec’ d accordingly.  But in the heat of development during June it didn’t always work out that way. 

What this would mean of course is that you end up maintaining kludges.  Kludges can be handy in a pinch but they have no place in a truly release ready commercial product.  So today was spent moving them across out of the UI and separately into their own units and in some case objects.

I actually enjoy doing this.  :-)

Secondly I began breaking the file system - again - so that the “meta” data goes right into the “database” or project file.  This makes things much cleaner and safer for the user and much cleaner and safer to code. 

I blogged here last month about that fact that grid I’m using - NextGrid - saves in Unicode.  Delphi knows squat about Unicode natively.  The obvious thing to do was to loop the grid and get that data into the database.  But of course a database doesn’t like “drag and drop” which the grid, as a playlist, needs to support so folks can change the order of audio tracks. 

Lots of possible ways around that of course.  At the time I chose to ignore it and leave things as is.  However after living with it in the back of my mind I knew it had to go.  So now it’s being streamed into the database in manner that permits drag and drop without having to do unnecessary restructuring of the dataset.   This was essential to me, not necessarily for MixAction which wouldn’t have large playlists ordinarily as there is only so much time you can pack into a “live performance”, but for Mixerlicious which potentially could have any number of tracks and performance would be a major issue, particularly in a multi-user environment on a network.

No more, when I finish this off tomorrow, will I have to synchronize various meta files and the database together.  Thus the project folder will now have one project file (which is capable of self healing) and an audio folder for all the audio files used in the project.  While MixAction does not need record locking Mixerlicious most certainly will.  So the more I get into the database the better at this time.  “Meta data” would not have played well with this scenario.

I’ve also been building up the homepage for MixAction.  It’s not online yet, still the place holder there, but hopefully soon I’ll be able to link to something that can be viewed.

OK.  Enough for tonight.  Have a good one!

Scott Kane

Quote of the day:
The penalty for success is to be bored by the people who used to snub you. - Nancy Astor