The ArtenSMS client application now has an AutoUpdate function that checks on startup (subject to preferences setting) for the latest version and offers the user the option of downloading an update. I have also included a ‘Check For Updates’ menu option. The client application is written in REALbasic and this now works well for Windows, Mac OSX and Linux, only downloading the version for your specific platform.
The main program, SMSRelay is written in VB.net so at some point I have to investigate how .NET handles HTTP so that I can use the same infrastructure at the server end regardless of the code I have written the application in. Once that is done however I will have reusable code for handling online updates for .NET and REALbasic for the three operating system platforms.
One area I am struggling with is the visuals, screen layouts, colours and icons ... I have the graphic design skills of Stevie Wonder, I may have to enlist the help of a former Jedi Apprentice who used to work for me ... :-) If you are reading this Danny - what do you think ? :-)
"Brains, like hearts, go where they are appreciated." - Robert S McNamara
Monday, 9 June 2008
SMSRelay Suite: Quick Update
Sunday, 8 June 2008
SMSRelay Suite: Licensing Issues
For SMSRelay and other commercial applications I am, and will be, developing I need to establish a method for licensing. Having been annoyed and frustrated by software licensing in the past I have decided that the primary goal of whatever licensing mechanism I introduce will be to not frustrate genuine customers for the sake of trying to stop thieves. Therefore it is necessary to keep it simple and to a certain extend rely upon the honesty of my customers.
Therefore I am tinkering with the following idea:
Upon payment an XML file is generated which contains the Name of the customer and a Serial Number which will be an AES 128 encrypted version of the Name. The contents of the file will look similar to this:
The software will check for the existence of the file and when (if) the file is found the software will become a fully working version.
There will be nothing to stop the user copying this file to another machine and then activating a second (or third, or fourth) copy of the software. There will be nothing to stop the customer giving this to their friends and therefore enabling their version of the software.
If somebody covertly obtains, or is given, the license file they will have to put up with the fact that the software has the name of the genuine customer in various places. Any attempt to edit the customer Name in the XML file will cause the software to not run unless the encrypted Serial Number is also edited to match the edited Name. Without access to my encryption phrase there is not much chance of them succeeding to ‘license’ it to themselves.
The drawbacks mentioned above are problems for me. The customer however has a simple and easy way of licensing. If they need to install on a third or fourth computer they can do so easily and immediately, and if they are honest they will inform me and pay a reduced fee for subsequent licenses.
The second copy of the program will be allowed under the EULA, as I don’t think it’s unreasonable to expect that people may have both a desktop and laptop computer nowadays and wish to install on both, I don't expect them to pay twice for this.
This is new to me, my previous commercial programs were protected by the fact they were large corporate systems that needed support contracts etc. (Nobody trusts their Finance and ERP systems to 'pirate' software) and the rest of my experience has been developing for a single customer from within the corporate environment, where obviously licensing wasn't an issue.
I’d appreciate any thoughts or feedback on this and am interested to know what other developers are doing concerning licensing.
"In the depth of winter, I finally learned that within me there lay an invincible summer." - Albert Camus
Friday, 6 June 2008
SMSRelay Suite: Cross Platform Preferences
The client software for my SMS suite is cross platform. The main program is written is VB.NET which is obviously not cross platform, so the client software is being developed in REALbasic, which allows me to develop on my platform of choice (OSX) but compile the finished application for OSX, Windows and Linux. One of the issues I faced is where to put the Preferences file. Originally I stored it in the program directory, then I changed my mind and wrote some code to test for the platform and put the file in a more appropriate place, according to current platform.
Today I discovered ‘PreferencesFolder’, a FolderItem object that holds the location of the ideal place to store the preferences, according to platform. REALBasic defines the appropriate place as:
OSX: /Users/{username}/Library/Preferences
Windows: C:\Documents and Settings\{username}\Application Data
Linux: /home/{username}
Thats good enough for me :-)
I have the following code now that sets a property with the path and filename for the Preferences files:
pScreenSettingsFileName = PreferencesFolder.AbsolutePath + pProgramName + "ScreenSettings.ini"
pGeneralSettingsFileName = PreferencesFolder.AbsolutePath + pProgramName + "GeneralSettings.ini"
and when loading or saving the Preferences:
'Open File Stream
f = GetFolderItem(mProgramInfo.pScreenSettingsFileName)
I’m quite pleased because I am storing the file where it should be stored and haven’t had to resort to any switching code according to platform :-)
"All I can say about life is, Oh God, enjoy it!" - Bob Newhart
SMSRelay Suite: Standardised About Window
I only managed a few hours today on this project. One of the things I wanted to do was get a standardised ‘About’ window sorted, one that I can just import into a project and it will work with little or no effort to customise it to the application. This proved to be straightforward. One thing I wanted was a link to allow the user to send feedback via email. For ease of sorting and filtering the email, I wanted the email address to directly relate to the application and version.
In the end I decided on the following method:
Dim strFeedbackAddress As String = "mailto:" & My.Application.Info.Title.ToLower & "-" & wMain.strVersion.ToLower & "-feedback@genesyssolutions.co.uk"
System.Diagnostics.Process.Start(strFeedbackAddress)
I’m quite pleased with the About window now and intend later to add another tab for the EULA. I’ve used this window in another one of my projects now and it looks like this:
and clicking the ‘Feedback’ label (which shows as underlined if you hover over it) gives you this:
"Carry out a random act of kindness, with no expectation of reward, safe in the knowledge that one day someone might do the same for you." - Diana Spencer
Thursday, 5 June 2008
SMSRelay Suite: Cross Platform Client
Just a couple of hours today to work on the ‘30 Day Challenge’ :-)
ArtenSMS is a cross platform SMS TXT client which works in conjunction with SMSRelay. The client creates an XML file containing the details of the SMS message and stores this on a shared directory. From here it is picked up and sent via SMSRelay.
The client is fairly basic at the moment, but is now fully functional. I have just added the ability to edit the users configuration data from within the interface rather than by hand editing the XML configuration file, not something you really want your users doing :-) When running on Mac OSX the ‘Edit Settings’ window (and also the About window) slide down from the top of the parent window. To achieve this I’ve used a form type called ‘Sheet Window’. When the application runs on Windows or Linux however this is replaced by a very basic window which doesn’t have quite the same effect ! I may have to check for OS platform before opening these forms and do something different if running on the non OSX platforms.
I have the code in place to allow online version checking / updating and it works cross platform which is great. I need to complete implementation and testing of this before moving on to the final program in the suite which will allow import of TXT/CSV files containing names and numbers and then provide bulk SMS sending abilities.
"We cannot direct the wind, but we can adjust the sails." - Bertha Calloway
Tuesday, 3 June 2008
SMSRelay Suite: SMSRelay
The key component of the SMSrelay Suite is SMSRelay. This is the application that does the actual work of taking an XML text file, parsing it, sending the contents as an SMS TXT and then archiving the file.
Introduction
SMSRelay is an application designed to run on a server with internet access. It monitors a particular designated network share for XML text files. These XML files contain a telephone number , a message and a sender.
When SMSRelay finds one or more of these files it reads the information and then sends it as an SMS message via the 2SMS gateway. It then moves the XML file to the ‘Sent’ directory and appends the date and time to the filename.
SMSRelay has two interface skins which are chosen by editing the configuration file. The two different interface skins are shown below.
Features
SMSRelay handles messages longer than the 160 characters allowed by the SMS protocol. It does this by automatically splitting the message for you, and sending it as two consecutive SMS messages.
A default ‘signature’ can be setup within the SMS settings file, for example: ‘ - From: Arten Science’. This can be overwritten on an individual message basis by specifying the <From> parameter in the SMS message file, for example: ‘ - From: Steve’.
The window of SMSRelay, if using the FUNKY skin, although irregularly shaped and having no title bar, can be dragged to a new position on the screen by clicking anywhere around the edge of the window and then dragging.
For both skins the window position is saved when the program is closed and it reopens in the same position next time. I have prevented the program from saving the co-ordinates of any additional monitors, because of the problems that can occur if the additional monitor is subsequently removed.
Configuration
Configuration settings are stored in the SMSRelayGeneralSettings.Xml file. This can be edited with any text editor.
Username
<UserName>steve@artenscience.co.uk</UserName>
This is the logon to your account at 2SMS.
Password
<PassWord>letmein</PassWord>
This is the password to your 2SMS account.
Note: Access to the SMSRelay program directory should be restricted.
Incoming Message Path
<IncomingMessagePath>\\SERVERNAME\Waiting</IncomingMessagePath>
This is the path where Outgoing messages are looked for by SMSRelay
Sent Message Path
<SentMessagePath>\\SERVERNAME\Sent</SentMessagePath>
This is the path where Sent messages are put by SMSRelay
From
<From>ArtenScience</From>
This is the default “from’ setting for each SMS Message and is appended to the message.
Interval
<Interval>60000</Interval>
How often SMSRelay polls for new messages, in milliseconds. 60000 = 1 Minute.
Screen Style
<ScreenStyle>FUNKY</ScreenStyle>
ScreenStyle accepts two parameters:
FUNKY
YAWN
FUNKY gives you a modern/retro colourful interface with a non standard shape and YAWN gives you a simple Windows style interface with dull unimaginative colours and layout, but it does have slight transparency which adds a little bit of sex appeal.
Test Status
<TestStatus>FALSE</TestStatus>
For Production use this setting should be set to FALSE.
Interfacing 3rd Party Applications with SMSRelay
To enable your applications to create files that will be sent as SMS messages by SMSRelay, it is necessary to do two things.
Create an XML text file
Save this file in the ‘Waiting’ directory
The format of the text file is as follows:
<?xml version="1.0" encoding="utf-8"?>
<SMS>
<Number>NUMBER_HERE</Number>
<Message>MESSAGE_TEXT_HERE</Message>
<From>SENDER_HERE</From>
</SMS>
The parameters shown in blue should be replaced by the telephone number of the recipient, the message text you want to send and the senders name.
Test / Debug Mode
SMS Relay has a Test/Debug Mode built in:
Set Parameter in SMSRelayGeneralSettings.Xml to TRUE
With TEST Mode enabled two extra buttons appear on the screen, TEST A and TEST B. In addition, in Test Mode automatic polling of the ‘Waiting’ directory is disabled.
Test A
Test A is designed to test the interface from SMSRelay to the SMS Server. An SMS Message is sent using the following details from the SMSRelayGeneralSettings.Xml file.
Mobile Number: <TestNumber>07525754153</TestNumber>
Message: <TestMessage>This is a Test</TestMessage>
In addition the Version and Build Number of SMSRelay and the Date and Time are appended to the end of the test message.
Information relating to the test is shown on the SMSRelay screen.
Test B
Test B is designed to test the complete operation of SMSRelay. It will effectively run the same routine that the polling system does, but it does it just the once. This is useful for running a controlled sequence of tests.
Notes and Tips
The ‘Sent’ directory will eventually be populated with hundreds or thousands of small Xml files, this will eventually degrade performance. It would be wise to instigate an archive procedure at a regular interval to clear down this directory.
SMSRelay does not have to run on the same computer as the directories where the files are stored. It does however need Read/Write access to those two directories.
If your SMS messaging needs are not urgent SMSRelay could be launched to run overnight and take advantage of cheaper text messages.
If you are running a screen DPI setting other that the standard 96 DPI you may have problems with the windows displaying incorrectly. To adjust the DPI setting go to the Display Control Panel, select the Settings tab then the Advanced button. The DPI can be selected from the DPI Setting drop down menu. Future versions of SMSRelay will cater for non standard DPI settings automatically.
SMSRelay is designed to work with 2SMS as the provider of the SMS Gateway.
http://www.2sms.com/secure/default.aspx
2SMS provides trial accounts with twenty free messages if you do not already have an account and you wish to evaluate the trial version of SMSRelay.
Requirements
Required Files
SMSRelay.Exe
SMSRelayGeneralSettings.Xml
SMSRelayScreenSettings.Xml
System Requirements
Microsoft Windows XP, 2003, Vista
.NET Framework V2.0 Installed
Internet Access Required
Shared Directory Required
Trial Version Limitations
The words ‘Trial Version’ shown on the screen.
The words ‘**SMSRelay Trial_Version ** appended to the end of each txt message.
In my next post I’ll discuss the Cross Platform SMS Client software, ArtenSMS.
"Everything you do in life, every choice you make, has a consequence. When you do things without thinkin', then you ain't makin' the choice. The choice is makin' you." - Mark Steven Johnson
My 30 Day Project, An Overview
The application I am working on for this 30 day challenge is called SMSRelay Suite.
SMSRelay is designed to allow the sending of SMS TXT messages from your desktop computer. At the moment the program is designed to work with SMS Gateway provider, 2SMS. 2SMS provide desktop SMS clients free of charge as do several other independent developers. Where SMSRelay differs is that it is designed as a corporate SMS solution, with all messages being sent and then archived by a central relay, with a simple way of interfacing to it from almost any application.
The SMSrelay suite will comprise of three programs:
SMSRelay
SMSRelay sits on a server within the enterprise monitoring a shared directory. When messages are placed in this directory it parses them, sends them and then archives them.
ArtenSMS
ArtenSMS is a simple desktop client for Windows, Mac OSX and Linux that sits on the users workstation and creates the messages that are then picked up and sent via SMSRelay.
AppWithNoName
This application will be a cross platform application that will take as input a tab delimited or comma separated list of names and numbers and send a selected SMS TXT message to each number, a kind of SMS mailshot. Ideal for informing customers of something important or urgent.
The SMS message is created as a simple XML text file. This means that in addition to the client applications detailed above, it will be very straightforward for IT staff within the enterprise to generate SMS messages from existing legacy applications or even batch files, scripts etc. For example it would be easy to create an SMS message during a delivery note run which would advise the customer by SMS when their delivery was due. Another example would be creating an SMS message as part of a backup script, if something failed. In these and many other scenarios the advantage is that only a simple XML text file needs creating and saving in a shared directory. All the sending, error checking and archiving is done by SMSRelay.
So that’s the overview of my challenge. At the moment SMSRelay is nearly complete, bar a decision on how to do licensing. ArtenSMS is early Alpha and AppWithNoName (working name ‘Clint’) has not been started. In addition I need to do documentation, installers, website etc. etc. This is going to be an interesting month :-)
In my next post I will show some screenshots of SMSRelay and discuss the program in more detail.
T-Shirt Terrorist Threat
This guy was stopped from getting on a plane at Heathrow yesterday. Why ? His T-Shirt has a picture of a cartoon character holding a gun. It's good to know the defence of our airports is in the hands of people with common sense. ...
Click here for the full story.
uISV 30 Day Dev Challenge
This looks really interesting:
http://feeds.feedburner.com/30dayers
I have an application in the early stages of development that I think it would be fun to develop alongside these guys. The application is SMSRelay, and the final product will consist of a suite of three programs, one of which is already written, one of which is alpha and the final one is complete vapourware at the moment.
I'll go into more detail about the application in my next post.
The SMSRelay Suite will be the first product for a new venture I have setup. The enterprise is called Arten Science and is at www.artenscience.co.uk. There is only an early version of a logo there at the moment, so a lot of work still needs to be done.
For me this 30 day challenge is not just about creating a product, but it sees the start of a whole new venture. Everything from website design, payment processing, product development, manual writing etc. will have to be handled in the near future.
Wish me Luck :-)
Sunday, 1 June 2008
First Post on Blogger :-)
Livejournal just wasn't cutting it anymore, so here I am on Blogger. I guess the next job is to figure out how to get my old posts over ...