Sunday, 31 August 2008

Updating My Website ...

I’m doing some work on my website at the moment, there is too many words and not enough clarity. I need to get the point across about what I do on the homepage, no fuss, no hassle. I AM STEVE. THIS IS MY COMPANY. THIS IS WHAT WE DO. Marketing is definitely a talent - I was at the back of the queue when when god gave out that particular ability I think.

Hence my purchase of the ebook ‘MicroISV Sites that Sell’ by Bob Walsh of 47Hats.com.

What an excellent read ! I’m definitely going to be taking some of his ideas on board. $20 well spent I think :-)

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Saturday, 30 August 2008

ScreenAudit for Mac OSX

A trial version of ScreenAudit for Mac OSX is now available to download from my website:

http://www.artenscience.co.uk/artenscience/ScreenAudit.html

ScreenAudit is a Mac OSX application that performs snapshots of your screen at timed intervals.  If you have multiple monitors it will take snapshots of them all.  The interval between snapshots, in seconds, the name of the destination folder (created within the ScreenAudit folder), and the quality of the resulting jpg can be set from within the Preferences menu.

ScreenAudit is not designed for covert ‘spying’ on a computer.  ScreenAudit has it’s own window which shows a countdown until the next timed snapshot.  The window flips from right to left as the snapshot is taken and the ScreenAudit icon in the dock displays the ‘Note’ graphic to let you know a snapshot has been taken.  If you do not wish to view the ScreenAudit window it can of course be minimised.

ScreenAudit is useful for a number of purposes.  Primarily it allows you to keep a record of your activities as you use your computer.  If you bill for time then ScreenAudit can be used to remind you what you were doing and when.

If you forget to save a document then ScreenAudit might come to your rescue by at least showing you the screen with the text displayed.  You will have to type it again but at least you won’t have to do it from memory.

If you are concerned that someone is using your computer in your absence then ScreenAudit will help you to see what was done.  Yes they could quit ScreenAudit or even delete the snapshot files but then at least you would be aware that someone has perhaps been doing something they shouldn’t !
If you manage a department you may wish to install ScreenAudit on your colleagues computers to keep a record of work done ?

By default ScreenAudit takes a snapshot every 5 minutes.  Bear in mind the disk space used if you set this interval to several seconds ! Although the files generated by ScreenAudit are not large, it is nonetheless advisable to backup and archive your images folder daily or at least weekly.  Obviously the larger your monitor and the more monitors you have attached, the more disk space is going to be used.



www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Thursday, 28 August 2008

Interesting Recommendation !

I had a recommendation come through from a client recently. I couldn’t use it for obvious reasons. I’ve shown it below with name and project detail deleted to protect the guilty :-)

I have had the misfortune of working with Steve on a significant [Deleted] solution. Steve showed a consistency and quality which is unusual with many IT Contractors, and I have worked with a significant number of them to base this opinion on.

It was a misfortune because the rest of our IT Department had to step up to the mark, otherwise he would have made us look like amateurs.

I would have no hesitation in recommending him to anyone.


www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Tuesday, 26 August 2008

pcInfo: Freeware

pcInfo is a simple utility that displays IP Address, Subnet Mask and the MAC Address of your primary network adaptor. That is all it does.



It can be useful when running several Virtual Machines or Servers, and you need to see the network information at a glance. Putting a shortcut to the application in the startup directory on a Windows PC will ensure the application is visible whenever the computer is started. There are also ways to enable the automatic running of applications using Mac OSX and Linux to achieve the same effect.

pcInfo remembers it's position on the screen when the application is closed by writing to the Preferences.txt file. This file is stored in the same directory as the application itself.

pcInfo can be downloaded for Mac OSX, Windows and Linux from here:

www.artenscience.co.uk/artenscience/FreeSoftware.html

If you think of any ideas for improvements or additional features then I would appreciate hearing from you.

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Sunday, 24 August 2008

ArtenSPEAK: Windows Version

ArtenSPEAK has been updated with a couple of bug fixes and the Windows version is now available for download. ArtenSPEAK can be downloaded from here:

www.artenscience.co.uk/artenscience/FreeSoftware.html

ArtenSPEAK is a simple application that speaks text. You may drag or paste text into the ArtenSPEAK text area and when you depress the loudspeaker button the text will be read to you. Ideal for use with webpages, email, or any text document.

Below are a couple of screenshots, the top one is from Windows XP and the bottom one from Windows Vista.





www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Tuesday, 19 August 2008

ArtenSPEAK Freeware

I'm on holiday and it's raining, almost constantly. So I sat down and created ArtenSPEAK. ArtenSPEAK is a simple utilty that speaks text. I have used it to read webpages and emails. Just drag or paste text into ArtenSPEAK and click the 'loudspeaker' icon, sit back and listen :-)

ArtenSPEAK is available for download here.

The window size, position and transparency can be set and is remembered by the application.

This version is for MacOSX only, i'll upload the Windows version when I get home next week.

Enjoy :-)

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

ArtenSUITE Part 16: More SQL Comments

ArtenSUITE
A Development Journal
Part 16: More SQL Comments


In an earlier article I wrote about how I prefix every SQL statement with the Module, User ID and Date/Time. I do this by calling a function which sets these values and prefixes them as a comment to the beginning of the SQL statement.

The reason I do this is that I can view this information from within the application (by logging to a text file and then using a View SQL Window), but also this information is seen when looking at the statements in the database. Unfortunately from Oracle 10g these SQL comments are removed and not visible from within the database.

The way around this is to use the Hint syntax /*+ ... */. As you are not using valid hints they are ignored by Oracle, but not stripped from the SQL statement so are visible within the database. An example is shown below:

/*+ ArtenBASE / SJC / 1909208-11:00 */ select count(1) from bas_con_main

UPDATE: It turns out that using the above syntax causes each statement to be viewed as 'different' by the Oracle optimiser. Therefore any benefits of bind variables and caching are lost. This method can only be recommended for use during pre-production / development.

It seems there isn't a way (or at least, I haven't yet found one) in 10g to tag or comment the SQL statement in such a way that the comment is accessible from the database, as opposed to just within your application. Hence any logging of SQL statements with their associated comments must use the /* ... */ tags and be done on the client side.


www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Thursday, 14 August 2008

ArtenSUITE Part 15: Multi Language Support

ArtenSUITE
A Development Journal
Part 15: Multi Language Support


One of the original design ideas for ArtenSUITE was to develop the application in such a way that conversion to a different (non English) language was straightforward. As it was I got carried away with other (more exciting) things and that idea fell by the wayside. Realising the error of my ways, I started to rectify that today.

The first thing I did was create two modules, mStrings, for storing the constants that will contain all the text that the user will see in message and dialog boxes. The second module mUIText, for storing the text elements for the UI controls, ie: Captions, Names etc. These two modules are stored within a Localisation folder inside my Project.

The constants are named in the following way:

kError = "An Error Occurred ..."
kDBConnectOK = "You Successfully Connected to the Database ..."
etc.


Real examples can be seen in the following screenshot taken from my project:



I then went through my application replacing the text with the name of the appropriate constant. Interestingly enough if you are fairly consistent with your messages you will be surprised how many times you use the same type of message, meaning that the amount of constants required is probably smaller than you imagine.

It's important to keep the formatting and spacing within your code and not move that to constants. For example if your code says something like:

Message = "An Error Has Occurred: " + "Error Number: " + intErrNum

You would make the text into constants but leave the spacing in the Message string. It would look like this:

Message = mStrings.kErrorOccurred + " " +mStrings.kErrorNum + " " + intErrNum

The main reason for this is if you decide to implement another language and send an export of your modules to be translated there is a good chance the spaces will get 'lost' along the way.

So assuming all your text that will be seen by the user is contained inside a couple of modules all you need to do to implement another language is export these modules, get them translated, then re-import them and assign a language to them. Bingo! Multiple Language Support with the added bonus that it makes your code slicker and more maintainable.

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

ArtenSUITE Part 14: Network Messaging

ArtenSUITE
A Development Journal
Part 14: Network Messaging

I’ve built simple network messaging into the ArtenSUITE framework. Using UDP (a connectionless transport) I am able to detect and communicate with all other copies of my software running on the local network. This offers me several advantages.

Licensing
Using this facility I am able to detect how many copies of the software are running concurrently, and compare that to the license owned by the customer. This is a fairly foolproof method of ensuring that license limits are not breached and the customer is then likely to purchase additional licenses if they run into this restriction often.

Messaging
The user can use this facility to send messages directly to another user, or group of users. A sort of simple ‘Group Chat’. My software can also use this mechanism to sent messages to both itself and also other copies of itself running elsewhere on the network. Some Interesting possibilities here.

Commands
Messages are send with an identifier, currently set to 0 this is interpreted as a simple message, and is display as such. I can however send messages with a different identifier which can be processed as a command on the remote machine. For example it could be used to force the remote software to perform a particular action, such as quit :-) This again offers interesting possibilities.


I’m not sure yet how to present this messaging interface to the user, currently I am using the screen shown below:



Any messages received by the application will select the Incoming Tab and display the latest message on the screen. There is no annoying ‘popup’ dialog, although if the speech interface is enabled in the preferences, the message will be announced, if not then a simple beep will be heard by the user.

I haven’t yet created any code to resolve the IP address, I am considering writing the IP Address to the user record at logon and then displaying the user name as logged into the system, rather than resolve the IP Address to the computer name.

There’s lots I can do with this, but the framework is in place :-)

"Never fear the want of business. A man who qualifies himself well for his calling, never fails of employment." - Thomas Jefferson

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business

Tuesday, 12 August 2008

ArtenSUITE Part 13: Splash Screens and Transparency

ArtenSUITE
A Development Journal
Part 13: Splash Screens and Transparency

I’ve spent a few hours working on the splash screen for my application. What I’ve done now is create an irregularly shaped window, based on my company logo. This can be seen in the screenshot below:



As the image for the splash screen is read from the disk and then rendered in real time, if there is any sort of error it instead opens the original splash screen, kind of a ‘Plan B’ :-)



I’ve also been working with transparency. People tend to have strong views on whether transparent windows are a good thing or a bad thing, whatever, I like to give people choice. Therefore each window within ArtenSUITE can have its own level of transparency set at runtime. This transparency level is then written to the local cache database along with the window size and position, and is then used next time the window is opened. This seems a good solution to me, allowing more windows to be open and viewable by varying the window transparency. The transparency level is set using an screen slider situated at the bottom of each window. An example on MacOSX shown below and below that is an example from Windows Vista:






"See things as they are and write about them. Don’t waste your creative energy trying to make things up. Even if you are writing fiction, write the things you see and know." - Real Live Preacher

www.artenscience.co.uk
Honest Expert Independent Technology Advice for Business