Monday, July 7. 2008Build Indicator – Part 2 (The firmware)
This is part 2 of the Build Indicator series. Part 1 – the construction of the hardware is here.
The firmware is written using the Arduino’s own programming language which is much like C/C++, using the IDE provided it’s easy to develop the code and push it down to the Arduino. I decided that as the Arduino has 13 IO pins it would be a shame not to make these available for 6 build indicators so 6 individual projects could be monitored. I’ve not used OO to implement the code so it’s a little messy with individual arrays for project status, red and green led pins which are indexed based on the project number. I think you can create classes but this has to be done in external C++ files so for a simple application like this I didn’t worry to add that extra complexity. Serial (RS232) communications is used to send a status message down to the Arduino build indicator to update the project status. The full Arduino build indicator code can be download here. License : Please use, copy and modify this code as you wish, all I ask is that you don’t take credit for the bits I wrote. You should ensure it’s fit for purpose before using it. Variable declaration : 1 /* 2 Build Indicator (c) Analysis UK Ltd 2008 3 * 4 Digital Pin Assignments: 5 0 - RX 6 1 - TX 7 2 - Project 6 - Green LED 8 3 - Project 6 - Red LED 9 4 - Project 5 - Green LED 10 5 - Project 5 - Red LED 11 6 - Project 4 - Green LED 12 7 - Project 4 - Red LED 13 8 - Project 3 - Green LED 14 9 - Project 3 - Red LED 15 10 - Project 2 - Green LED 16 11 - Project 2 - Red LED 17 12 - Project 1 - Green LED 18 13 - Project 1 - Red LED 19 */ 20 21 #define VERSION "1.0" 22 23 // Project not enabled of not connected. 24 int PROJECT_OFF = 0; 25 26 // Project build failed 27 int PROJECT_FAIL = 1; // 001 28 29 // Project build good 30 int PROJECT_GOOD = 2; // 010 31 32 // project building from a failed project. 33 int PROJECT_BUILDING_FAIL = 5; // 101 34 35 // project building from a good build. 36 int PROJECT_BUILDING_GOOD = 6; // 110 37 38 // Maximum number of projects. 39 int maxProjects = 6; 40 41 // Project status codes. Indexed by project. 42 int projectStatus[] = { 43 0, 0, 0, 0, 0, 0}; 44 45 // Pins for the Red LEDs. Indexed by project. 46 int redLEDPin[] = { 47 13, 11, 9, 7, 5, 3}; 48 49 // Pins for the Green LEDs. Indexed by project. 50 int greenLEDPin[] = { 51 12, 10, 8, 6, 4, 2}; // pins 0 and 1 reserverd for RS232. The arrays redLEDPin and greenLEDPin represent the pins to use for the red/green leds and are indexed on the project number (i.e. project 0's red led is on pin 13). The array projectStatus holds the status of the project and again is indexed by the project number. Setup: 54 // run once, when the sketch starts 55 void setup() 56 { 57 // Initialise the ports for output to drive the LEDs 58 for (int i=0; i<maxProjects; i++) { 59 pinMode(greenLEDPin[i], OUTPUT); // sets the digital pin as output for the green/blue part of the tri color LED 60 pinMode(redLEDPin[i], OUTPUT); // sets the digital pin as output for the red part of the tri color LED 61 } 62 63 // Setup Serial communications 64 Serial.begin(57600); 65 } The setup method iterates through all the projects setting up the pins designated as led’s for output and then sets up serial communications at a baud rate or 57,600. Fortunately the Arduino takes care of the difficult serial comms bits for us. Main Loop: 67 // Main loop, runs over and over again 68 void loop() 69 { 70 // Check and Read settings from PC 71 ReadCommands(); 72 73 // Update the LED's to indicate project status' 74 UpdateLEDs(); 75 76 // Idle. 77 Idle(); 78 } 79 The loop method is the main application loop that the Arduino will enter once setup is complete and will keep repeating. Within loop we call 3 basic methods, ReadCommands() which will check the serial port for commands from the host, UpdateLEDs() which will update the leds based on the project status and Idle() which just inserts a small delay but can be used for other background tasks. The comms protocol is a fairly simple one. All messages should start with a byte value of 2 and terminate with a byte value of 3 so the Arduino can easily know when a instruction has been received. To update a project status send the ascii string “@P[x]=y” with x being the project number 1-6 and y being the status (0, 1, 2, 5, 6). To query the version number of the firmware send ?V. I’ve stolen the comms protocol from another project I’m working on with the Arduino that has more commands and queries so I’ve based all commands where the Arduino has to do work on the @ character and all queries on the ? character to help separate out the commands and queries. RS232 Message handling: 86 // Read commands sent from the PC 87 void ReadCommands() 88 { 89 // Check if serial data available, if so then read this in 90 91 // Read all from the serial port until no more bytes available looking for the 92 // start byte (1) of a message. 93 while (Serial.available()) { 94 //read the incoming byte: 95 int incomingByte = Serial.read(); 96 97 // Start identifier. STX 98 if (incomingByte == 2) { 99 // Found start byte now read in until we get the end of message byte. 100 ReadSeialCommand(); 101 return; 102 } 103 } 104 } 105 106 // Read a command from the serial port. Read until the read byte 107 // is an end of message (new line) indicator. 108 void ReadSeialCommand() { 109 // Expect maximum of 25 bytes (normally 6) 110 byte buffer[25]; 111 int index=0; 112 113 while (true) { 114 if (Serial.available()) { 115 // read the incoming byte: 116 int incomingByte = Serial.read(); 117 118 // Terminating byte 119 // Wait for ETX (End of text - transmision) 120 if (incomingByte==3) { 121 ProcessRequest(buffer); 122 return; 123 } 124 else { 125 buffer[index] = incomingByte; 126 index++; 127 } 128 129 // Check for buffer overflow and give up if it has. 130 if (index>25) { 131 Serial.print("Error:Buffer Overflow.\n\r"); 132 return; 133 } 134 } 135 } 136 } 137 138 void ProcessRequest(byte request[]) { 139 140 boolean processed = false; 141 142 // Check for Query commands (? at the start) 143 if (request[0] == 63) { 144 // Query 145 processed = ProcessQuery(request); 146 } 147 else if (request[0] == 64) { 148 // Set (@P[x]=0) - Set Project x = status. 149 processed = ProcessSetValue(request); 150 } 151 152 if (!processed) { 153 Serial.print ("Error:Unknown Request.\n\r"); 154 } 155 } 156 157 boolean ProcessQuery(byte request[]) { 158 159 boolean processed = false; 160 161 switch (request[1]) { 162 case 86: // ?V - version 163 processed = SendVersion(); 164 default: 165 Serial.print ("Error:Unknown Query.\n\r"); 166 } 167 return processed; 168 } 169 170 boolean ProcessSetValue(byte request[]) { 171 172 boolean processed = false; 173 byte command = request[1]; 174 // Allow ascii version of the fan number. 175 //Position 2 should be [ 176 byte project = request[3] - 48; // 48 = 0 177 //position 4 should be ] 178 //position 5 should be = 179 //position 6 should be the raw value. 180 byte value = request[6]; 181 182 switch (command) { 183 case 80: //@P[x]=y Set project x status y. y is ascii version of the status (0-9). so subtract 48. 184 processed = SetProjectStatus((int)project, (int)value - 48); 185 break; 186 default: 187 Serial.print ("Error:Unknown set command."); 188 } 189 190 return processed; 191 } 192 193 boolean SendVersion() { 194 Serial.print ("Version="); 195 Serial.print (VERSION); 196 Serial.print ("\n\r"); 197 return true; 198 } 199 200 // Set the status for the project. 201 boolean SetProjectStatus(int project, int status) { 202 203 if (projectStatus[project-1] != status) { 204 projectStatus[project-1] = status; 205 206 // Build failed. Flash the red LED briefly to get attention. 207 if (status == 1) { 208 digitalWrite(greenLEDPin[project-1], LOW); 209 210 for (int i=0; i<6; i++) { 211 digitalWrite(redLEDPin[project-1], HIGH); 212 delay(100); 213 digitalWrite(redLEDPin[project-1], LOW); 214 delay(100); 215 } 216 } 217 } 218 219 return true; 220 } 221 The method ReadCommands() will read the input buffer until it receives the start byte then call ReadSerialCommand() which reads the rest of the command into a buffer until it received the end byte. I’ve limited the buffer to 25 bytes which should be plenty and if this overflows then we just abandon it. Their is no timeout between receiving the start and end bytes so this could cause a problem if the end byte is not received. Notice in the method SetProjectStatus() that the project index used is -1 from the project value sent. When sending commands the first project is project 1 however the Arduino uses 0 based arrays. In SetProjectStatus() if the project state changes to be failure (value 1) then the red led is flashed 6 times to draw attention to the indicator. Project State Indication: 222 boolean UpdateLEDs() { 223 224 for (int i=0; i<maxProjects; i++) { 225 int greenLEDStatus = LOW; 226 int redLEDStatus = LOW; 227 228 switch (projectStatus[i]) { 229 case 0: // NC 230 // No acton 231 break; 232 case 1: // Fail 233 redLEDStatus = HIGH; 234 break; 235 case 2: // Good 236 greenLEDStatus = HIGH; 237 break; 238 case 5: // Building from a Fail build 239 case 6: // Building from a good build 240 greenLEDStatus = HIGH; 241 redLEDStatus = HIGH; 242 break; 243 default: 244 redLEDStatus = HIGH; 245 break; 246 } 247 248 // Determine project LED pins and set them appropriatly. 249 digitalWrite(redLEDPin[i], redLEDStatus); 250 digitalWrite(greenLEDPin[i], greenLEDStatus); 251 } 252 } In the method UpdateLEDs() we update the led status based on the project status. If you are wondering what happened to status codes 3 & 4 I’ve used a bit based project status. 0001 (1) is fail, 0010 (2) is good, 01xx is building so 0101 (5) is building from a previously failed state and 0110 (6) is building from a good previous good state. If you want to use indicators other than leds for your project state then you can update the UpdateLEDs() method with another way to indicate the project status (maybe a LCD panel?). That’s basically the firmware, not much to it, the Arduino does most of the work for us which is the best bit! To program the Arduino connect it up, install the drivers (my Vista x64 and Vista x86 installs got the drivers from Windows Update without a problem and also installed the VCP virtual com port drivers). Open up the IDE, ensure the board and serial port are correct and load the build indicator firmware, then hit the upload to I/O board button. In the next entry I’ll talk about the PC application to drive the Arduino. Thursday, July 3. 2008Build Indicators revisited![]() Some time ago I posted about a USB Snowman build indicator, the problem with the first version was the USB IO board I used, its availability was limited and the output was designed as a current sink rather than source, so some modifications had to be made to the board, which isn’t really ideal. Recently I came across the Arduino project, an open source hardware solution and one of the little Diecimila boards provides a perfect base for revisiting the build indicator. The SnowMan is still in use at home and I wanted one for work as well so I figured Id make another build indicator based on the Arduino. ![]() The 13 IO pins can sink or source up to 40mA which is ideal for driving the tri-color led used by the build indicator. The led requires 2 current sources and has a common cathode. The Arduino has a USB interface that provides normal serial port communications to the host PC so interfacing is easy as well. This time instead of a snowman I decided to use a Xmas tree. They are very similar, basically a lump of plastic with a 5MM LED mounted inside. The Arduino provides multiple IO ports of which I’m using only two and the intention here is to provide some common functionality so that the device could be easily adapted to other forms of build indication (Switching relays, multiple project build indicators, other led’s, buzzers etc). ![]() Removing the base and replacing the led is a simple job, either use a flat screwdriver or use the cable exit to push off the base off. ![]() ![]() Pull out the led fitted into the tree using the cable. This is no longer needed. ![]() Now glue the base onto the top of the box the tree is to be mounted on. Previously I used a black ABS box but this time I’m using a ice blue box and this has worked out much better for aligning the parts and seeing the led’s on the Arduino board (RX/TX when programming), and also appeals to the inner geek a little more now that the workings can be seen. ![]() Drill a hole through the middle of the base so that it will line up with the middle of the x-mas tree. This is best done with the base stuck to the box as it holds it in place and ensures every thing lines up. The hole should be about 7-8mm so that the LED + resistors pass thought easily. ![]() Now we need to prepare the led. Using a standard Tri-Color led (I’ve used Red + Green) we need to fit a current limiting resistor to the supply legs. One for the red and one for the green component of the led. Using the datasheet for the led the voltage drop across the red Led is about 2V, this leaves a drop of 3V across the current limiting resistor as it’s driven from a 5V source. I’m going to drive the Led’s at 30mA, so we will need a 100R resistor for the red Led. The green led has a different voltage drop across it (3.4V) so we need to do the same calculation for that and again aim to drive it at 30mA which means we need a 53R resistor, as I only had a 56R resistor to hand I’ve used that which gives us about 29mA current flow. The data sheet gives luminous intensity for both red and green at 20mA and the green is much brighter than the red so we may wish at a latter date to play around with the drive current to get a better balance when both red and green are on. Trim the red and green legs of the led fairly short but leave enough to solder on the resistors and attach these. Next connect a cable to the other side of the resistors and to the common pin on the led. If you prefer you can attach the resistors to the Arduino connector and solder the cable directly to the led. ![]() I used 2 core screened cable as this happened to be what I had to hand and as it turns out by tinning the screen and soldering to the led common pin gives a good sturdy way to physically push the led into the socket in the tree (and pull it out again!). I also put a bit of heat shrinking around the connections to prevent them shorting out. ![]() Now we need the connection to the Arduino board, the led is connected to pins 12, 13 and GND. This is easy as they are all close together and as an added bonus the Arduino already uses an onboard led on pin 13 for status when starting up which means that the tree flashes when the Arduino is starting up, it’s easy to use other pins if you prefer. I’ve used a standard 0.1" Molex connector (The type used for 3 pin PC fans), the PCB version is ideal, but soldering the led connecting wire to the PCB side and plugging it into the header in the Arduino rather than mounting it on a PCB. ![]() ![]() Note that in the photo’s the red cable is actually for the green led and the blue one is for the red led. It doesn’t really matter a great deal which way round they go as long as you get the correct resistor matched up with the appropriate led. However the default in the firmware is that the red led is on pin 13 and green on pin 12. Next drill some holes in the base of the box and mount the Arduino. Note that one hole is smaller than the others so I ended up using only 2 mounting points due to my lack of any 2mm bolts. ![]() The advantage of using a translucent box is finding the place to drill a hole of the USB connector. I elected to use a cone drill and just have a circular cut out for the USB cable to go through, it doesn’t look all that professional but it was quick and it worked a treat! ![]() Next it’s just a matter of screwing everything together. ![]() ![]() I put 6 small feet on the base of the box as well. Why 6? With sticky feet one always falls off (especially with commercial products!) and then it rocks, with 6 you still have some stability to the device if one falls off. Now all that’s needed is a little firmware to run the Arduino and some software for the PC to put it to use but that’s going to have to be the subject of the next posting(s). Wednesday, June 4. 2008Recent Site Outages
Apologies for the recent outages on a number of the Analysis UK websites, these included BookSwap.ws, Dollars2Pounds, Pounds2Euro and all the other exchange rate sites as well as this blog.
On Saturday the hosting provider had an explosion and fire at one of it's data centers hosting one of servers. Initial estimates that were given made it look like it would be quicker to leave the sites (it was a Sunday and their usually quiet on Sundays) and wait for the host to get the power back on. Unfortunately it didn’t resolve that well, after many hours of delays some power was restored but floor 1 had even more damage than was anticipated and power was much slower at being restored, this unfortunately eat into most of Monday (UK time), however Monday evening all was back and well. I got home Tuesday tonight to find yet another apology from the company saying that this time the generator powering floor 1 had failed and they were sourcing a new one, this took a significant amount of time, especially given how much they like to state N+1 redundancy (i.e. a spare generator should have been to hand anyway). Updates were slow, uninformative, vague and at the point of being misleading – I’ve have yet to see any photo's of anything as well. Eventually power returned at about midnight UK time on Tuesday/Wednesday, so fingers crossed nothing else can go wrong in this world class N+1 redundancy data center! Sincere apologies to all those affected, this one is going firmly into the experience category and I’m extremely unhappy this has taken so long to resolve, I will look to do more to improve this and hopefully The Planet will learn and improve (if they have any customers left after this!). I read on GoDaddy some time ago about a problem they had and that they didn’t have geographical redundancy, if your running a serious e-commerce operation and have enough cash for some spare servers get them now and with a different host in a different [part of the] country. BTW - If you have .co.uk domain names with GoDaddy be sure to renew them extra early as they claim they have to renew them at least a month early, then before the 20th of that month (unless I was getting some BS from the customer support as to why they canceled 4 of my domains over 1 month before the renewal date!). Wednesday, February 27. 2008Earthquake – in the UK!
Minor tremors felt here in Cambridge, thought I was going crazy and fired up Twitter to see other reports, news starting to come through on sky news sometime after.
Turns out I wasn’t imagining things! Apparently 4.7 on the Richter scale. Unusual to get this in the UK. Only minor here in Cambridge, like a helicopter flying over the house and the only thing to shake was me and the study lamp! Just woken up and want to get your PC fired up quickly to check out Sky News, BBC News or Twitter? Waiting for lots of background applications starting that you don’t need and just want to fire up a browser quickly? Check out LazyLoad to delay the stuff you don’t need immediately so you can get started sooner. Sunday, November 19. 2006Heli Fun.
Some weeks ago I (and three others at my day job) purchased a ESky Lama V3 Helicopter, if you are thinking about trying remote control helicopters then this one is just so much fun you should go for it!
This is one strong and fun helicopter, you are best off flying indoors, in an area with some reasonable space and nothing valuable around. The battery charge lasts about 10 minutes but that seams like a long time and whilst you are learning to fly most of the time you will be picking the heli off its side and placing it back in a position you can fly it from. I have repeatedly crashed the Lama and it’s incredibly strong, so far I’m on my second set of blades (both A and B !), fortunately it comes with a spare set in the box and I’m also on my second tail, this didn’t come as a spare but only cost about £8. BuzzFlyer do a great range of spare parts for the V3 Lama and with their being 4 of us at work I just see what every body else needs and do a big-ish order which helps with the postage. Various connectors for the blades, balance thingy and what not take some serious grief but these just pop back into place without to many problems, I expected these to be the first things to break but they have done amazingly well. Just moments ago I hit the ceiling with the heli, which landed badly on the sofa, the balance hammer on the top came out and was actually bent, but all connectors are in one piece and I was back flying again 20 seconds latter. The Tail broke some time ago and was a similar crash, I was trying to back away from the window when I got it all wrong and the heli came down backwards from the ceiling and hit the rowing machine on it’s way, so no great surprise the plastic tail broke! This was easy to replace, just 4 small screws. If you are looking for a fun present for someone this x-mas then look seriously at the LAMA, I put some serious thought into the purchase and wasn’t sure if Id done the right thing, until I started flying it, then it instantly became my favourite toy! Unfortunately the manual’s not to hot for getting started, but it’s quite simple. Switch on the remote control handset, set the throttle (left hand lever + trim) all the way down, place the Lama on a flat surface, plug in the battery, don’t touch it until you see the red flashing led go solid green. Pick up the controls and start flying. You will need to adjust the trims and these change with battery charge, I find getting it a few inches from the ground to get the coarse adjustment then fly it properly and you can then get an idea of the fine adjustment. One big tip I was given and I would suggest the same, keep it pointing away from you, it gets very confusing working back to front and the Lama reaches the scene of the accident very quickly normally but if you have the controls back to front you end up making it even quicker! There are some good RC forums around with more tips on flying the Lama. Friday, November 3. 2006Partial outage of Analysis UK web sites.
Apologies to all those effected earlier today by the outage of a number of the Analysis UK websites, including BookSwap.ws and Dollars2Pounds as well as the other exchange rate sites.
This outage occurred on the main web server and was caused by a power supply failure. The hosting company were quick to get the problem identified, however unfortunately their was significant delay in finding a replacement power supply, hence the sites were off line for a number of hours. All sites are now back up and running. Steve. Tuesday, October 31. 2006Dinner Timer Lite
I am pleased to announce the release of Dinner Timer Lite and the DinnerTimer.com web site.
Dinner Timer Lite can be downloaded, for free from DinnerTimer.com. Dinner Timer Lite is as the name implies a timer to help with the timing of cooking, although it doesn’t have to stop there, it can be used for any application that requires a count down timer. ![]() Dinner Timer Lite is the first of a few Dinner Timer applications to come from Analysis UK, however these are still in development and there are more features to be added to Dinner Timer Lite as well so please keep an eye out on DinnerTimer.com Dinner Timer Lite features a flexible notifiers architecture, it currently ships with bubble and sound notifiers so you can get a pop up bubble from the system tray or play built in, or custom sounds on specific events. A number of different events are supported when running the application, these naturally include start and end events but also a timer end close event, two timer over run events which can be configured to suite your own style of cooking. A novel feature is the over run timer, when the time is complete the timer keeps running, telling you exactly how long over the completion time you have gone, no need to scramble around resetting the timer just to get an extra minute for the peas. The transparency/opacity settings of Dinner Timer Lite can be used to allow the timer to be visible as well as what ever (TV on the PC?) happens to be underneath it, the transparency changes with the events of the timer, so when your dinner is cooked the timer is fully visible and when it’s not running it can be practically invisible. You may well be asking why you need a PC based timer when you have a stand alone one. I have two stand alone timers and I still use Dinner Timer Lite regularly. Often I return to my PC to carry on working on the various projects and realise that I have not set the timer, Dinner Timer Lite is only a click away at this time and becomes very useful, especially as it would typically be 5-10 minutes before I got around to returning to the kitchen to set the timer and I would end up burning the dinner. I wrote Dinner Timer Lite to solve the problems of me returning to the PC to carry on working and forgetting to start a timer, so I could easily see how the time was going and because I didn’t find the two normal timers I had to be particularly use friendly. Even if you are using a normal timer, Dinner Timer Lite can still be very useful, it’s easy to see how long remains, or if you want to put something extra on a set time after you started dinner you can put Dinner Timer Lite into elapsed time mode. Maybe like me, you’ve set the timer for your Pizza, returned to the PC to get a little bit of work done but you know full well you want to be back for the Pizza early, just start the timer, it will warn you just before the timer is complete (1 minute by default), you can also keep an eye on the time remaining with out having to be in the kitchen to watch the timer. This is the first release of Dinner Timer Lite and I am keen to get feedback, so please use the support page or comments here to let me know what you think and what extra’s you think a timer should provide. I already have a big list of bits to add to the full Dinner Timer and Dinner Timer Lite. Friday, September 8. 2006More SmartStamp pains.
It always amazes me how worse a product can become over its life time, Royal Mail appear to have perfected making SmartStamp annoy it’s customers on a frequent basis.
With home based business increasing thanks to sites like BookSwap.ws and eBay stamp printing applications such as SmartStamp are going to become a crucial tool. Today all I wanted to do was print a single stamp for a small parcel to the USA. Naturally I had to alter the printer and label when I started the application, see my previous post about the default label and printer, and then go through more pain to find the postage. Having finally got the postage I wanted I hit print, enter my password and found out I have to do an update. It waits until I’ve spent ages setting it all up to do this. So the update happens, quite a big update, fortunately I have a fast internet connection so not to much of a problem. Naturally being an important part of the computer I have to restart the PC to get the updates installed. However it did print my stamp for me. Wrongly! Up until today the one thing that’s always worked for me is the stamp has been well positioned. Not any more, 99012 label + stamp on a Dymo 320 looks something like this ![]() So next I restart my PC incase the s/w needs to be updated like it asked me for. I wasn’t to happy as I was part way through downloading Vista RC1 from MSDN and the download program is a pain to find to get it to continue if you stop it part way. Actually I have no idea how to restart it I always end up back in MSDN and start another download then cancel that, but that’s another story of an annoying app. Well after the restart which took an age (which if you are like me and trying to run an micro-ISV in your free time after work is time wasted you really could do without) the label is still positioned wrongly. Fortunately there are some confusing controls in SmartStamp to position it, so after a bit of guess work the label now shows the price like it used to. Now for the next issue, I have to find my stamp again, USA, near the bottom of a long list of countries, I expect quite a lot of people post to USA, you would think that like most web sites and software they would have a few at the top that were very popular. But no. Then I find the stamp type, AirMail, then select the weight. Next I realise the one I wanted was actually Small Packet AirMail. Guess what, it’s decided not to keep my weight, so I have to go select one of them again. Now I know it’s not all that easy to make the weight thing correct it’s self as there are different bands. BUT, this is really annoying every time you change stamp type it changes the weight to the min. Maybe I could just enter the weight in a text box, or use the selector, and if I’ve entered it manually then it can choose the best weight band for me. After all the one thing that’s not going to change is the weight of my parcel, but stamp choice, now that will change as I try to find the most appropriate one. Personally I’m hoping the cheap postage scales will have a RS232 or USB interface one of these days, that would be really nice. One day I am going to end up with the wrong stamp because of the resetting to default. Actually I just printed the stamp whilst writing this and if it wasn’t for the big SU on the label instead of the A I would have got the wrong one and the wrong weight. It’s to easy to do that. The stamp doesn’t say what weight it’s valid for either so that’s no help. Now I have a stamp for Airmail Small Packet , I have to put a Airmail sticker on the packet and a customs declaration. Not to difficult. You can download a CN22 from Royal Mails web site and I can fire you the Dymo printer to print an Airmail sticker I have already made. Did you make the same mistake I made. Thinking that as a label printing application designed for postage SmartStamp would include labels for Airmail and Customs declarations. Odd really, I have to print out a PDF on my laser and cut it down to size, then with a different labeller application I have to print the Airmail label. 3 Applications to sort out the stuff that has to go onto a parcel. I just don’t think anybody at royal mail has actually tried to use SmartStamp for real. Before you correct me, yes I know that there is an Airmail logo I can use on the stamp, but not as a label by its self, and it won’t fit with the postage onto a 99012 label. So someone has clearly put 2 seconds of thought into it and stopped at that. And it’s not for small packet either. Maybe when you select an airmail stamp that has extra label requirements their could be an option to include these in the list of labels it’s about to print. One more thing that really bugs me, and this was common in VB3 days, is the "are you sure?" exit message, that’s so old and annoying. If I’ve printed my stamp and pressed X then I certainly want to exit, don’t annoy me any more! All it tells me is the application development is still thinking VB3 style and it doesn’t really know what state it’s data is in. Now I know I rant on about this annoying little application (which isn’t all that cheap at the end of the day), but as someone who uses it I feel I have to make my views known in a desperate hope someone may take notice one day… Come on Royal Mail sort this product out. Please put a little effort into this, you may have won a best use of technology award for it, but it still needs a lot of attention to make it customer friendly and usable technology. Update: As I continue to write this I’ve just tried a few more things and guess what, it’s remembered my printer and the label positioning (V3.0.0.10), I selected another label and it looks like that would also print wrong, but at least it’s remembered my settings, sad how something so basic should now cause me to be happy. Now I don’t know if that’s because of the update that just happened or because I just saved my label as a template in the hope that it would keep the label positions. Well I’m off to search around the Royal Mail website to try and get a refund for the badly printed label. Guess what, that’s not part of the application either. I’m also firing up Napster for some music, theirs another application that continues to irritate me immensely, can they make it any more difficult and slow to play some music! Steve. Saturday, August 26. 2006SmartStamp Hacks.
After my other post talking about wishful improvements to SmartStamp, I realised I have one little “hack” that I should share.
If like me you sell your books (CD’s, DVD’s etc) in the evening after you’ve completed your day job printing a stamp only really gives you the option of sending the parcel the next day, where as if you use SmartStamp during the day (9-5 style) you can post the item that day or the next. The simple work around for this is to print your stamps after midnight, I appreciate not everyone is a night owl like my self so maybe print them the next morning, but ideally don’t print them between getting home from work and midnight. This gives you an extra day in which your stamp will be valid. Ideally we all want to post our parcels the next day so the buyer gets them as soon as possible, but on the odd occasion we don’t get to put them in the post that day, when this happens your stamp is invalid and you have to do a new one, and apply for a refund. By printing after midnight you get an extra bit of grace to get your parcel in the post. Hopefully one day RM may update SmartStamp so you get an extra day after 6pm or so, but for now wait till midnight +1 min before stamping!. Steve. Wednesday, August 9. 2006SmartStamp feedback.
Isn’t this typical, I don’t post for ages then I post twice in one day!
This is a call out to all SmartStamp users who like me are disappointed with the application and feel a few simple improvements would make a massive difference and reduce a lot of frustration. Royal Mail are conducting a survey to get feedback on the product and on the SmartStamp web site. Please take the time to visit the SmartStamp Website and fill in the questionnaire (you should get a pop up asking if you wish to take part in the questionnaire if it’s still running). Don’t let me put you off SmartStamp though, if you are selling books, CD’s, DVD’s etc then it is a great way to avoid the queue at your local post office which can be a huge time saver, just launch the application, after some fiddling hit print and you have a little stamp all ready to put on your package then drop it in the post (or skip the queue at the post office and drop it at the counter or in the bag). The SmartStamp application has some great potential with the ever increasing eCommerce market and the increase in home based businesses. Being able to print a little stamp is a huge benefit, even if it does require me to alter a multitude of settings every time I launch the application just to be able to do the same thing I do every time and create a simple stamp. I have to say I’m still hugely disappointed that Royal Mail choice to charge so much to rent the application, I believe it’s cheaper than franking but then at least you get some discount on the postage with franking. This is after all just another way to allow you to purchase Royal Mail’s main product, postage. You also have to watch out when you post your package as the stamp has a short life and if you miss the post your stamp may not be valid the next day. SmartStamp is a registered trademark of Royal Mail. All views expressed in my blog entries are personal views and do not represent the views of Analysis UK Ltd or anybody/business related to Analysis UK Ltd other than my self. Wednesday, July 19. 2006What happened to .ws domain names?
Sincere apologies to all trying to access BookSwap.ws, CDSwap.ws or DVDSwap.ws.
Something appears to have gone badly wrong with the .ws dns system. Sites such as visitsamoa.ws and somoa.ws have been effected as well. It’s not a good thing when an entire domain name extension disappears from the internet! When I try and run a DNSReport on them some DNS servers return empty name servers and others are reporting nothing at all (ns1.dns.ws). It appears over the last 2-3 hours things are starting to return to normal. Hopefully I can stop pulling my hair out now. Ns1.dns.ws still returns nothing for BookSwap.ws but the other servers are returning the correct nameservers. I’ve always wondered why I was able to get some really good domain names easily with the .ws extension, Guess I know one of the reasons now! The good news is that I updated BookSwap.ws et al over the last few nights with a new code base that I’ve been working on for ages, this sees some background improvements to the sale transaction handling which was needed for future plans, improved pages for sale transactions management and some other smaller updates. More updates to come soon. Friday, February 17. 2006Electricity issues all around!
Apparently I’m not alone with UPS problems, looks like even the big boys over at del.icio.us have been having more than their fair share of UPS issues. It’s only when you need the UPS you really find out if it’s up to the job!
I have to take my hat off to them and complement them with the amount of feedback they are providing letting every body know what’s going on. Great work! Todays issue of Computing ran an article on the Power Shortages in IT, whilst it’s great to see the IT arena (and especially eCommerce) taking off so well after all we have been through since 2000 it is alarming to think about the amount of juice we are using. Something tells me with all the electric being consumed in London my self and del.icio.us won’t be the only ones blogging about UPS problems. So if you are relying on a UPS go give it a test now and if it’s not been exercised in a while (6+ months), go give it a deep discharge (when your computers not to busy), charge it up again then test it again. Do it whilst you don’t need it – next time you may just have spent an hour writing your blog for the electric to fail and the UPS to shut down with it!. I should probably mention that whilst my UPS let me down just recently, it’s been good for about 3 years now and saved me a numerous times, the power in my part of Cambridge has been somewhat unreliable, I bought the best of the consumer market devices, it runs 3 machines and 2 monitors with about 60% load – and if the power stays off for more than a blip I know its going to be off for hours so everything gets shut down cleanly and I plug the TV into the UPS! – that’s assuming it’s to dark to read otherwise Id be reading one of my many books, ok, maybe Id also be heading off to the pub - for erm, food you know! Note to del.icio.us - Great name!, just somewhat of a nightmare for us dyslexics that can’t spell! You can only imagine the attempts I have at entering the URL! Odd how I can spell dyslexia though. My thought for today - it's when things go wrong that you really find out who you are dealing with. Does the issue get covered up? Does it get swept under the carpet? Do you get a run around? Or are you dealing with a great company that knows how important it's customers are to take the time and write blog entries to let you know what's going on and communicate their pain with you. The company I previously used for hosting are know offering a great deal on bandwidth (odd, they had a totally terrible deal before, now it's gone to unlimited - from one extream to the other!), still I know their business practices are anti-customer and the customer support is truly poor so no chance of me returning to them, on the other hand EV1 Server have just been fantastic! Thursday, February 16. 2006When Backup systems bite back.
I’m a firm believer in backups. Data backups, spare part backups, uninterruptible power supplies, raid disks and stuff that should sit around in the background and help you when things go wrong. However the last thing I expect of these systems is to introduce major failures.
I got struct three times with this just recently with backup systems that decided they needed more attention. All the web sites I run are basically data driven, all the exchange rates for Dollars2Pounds are in a database, all the page impressions are logged into a database, all the used books for sale on BookSwap.ws are all in a database so the backups for these sites is a backup of the databases (which is stored on a separate machine or two), the actual application code doesn’t need regular backups. The other week after the server had a bit of a hiccup I figured I’d give the automated backups for the web sites a try, after all, if I needed to move to a new server this may save me some time. I only set up 3 sites as it’s a slow process, I’m so glad I only did 3 as two backup attempts latter I had to stop these. I set the backups to occur weekly – as I said, nothing really changes on the actual front end so very little need for backups anyway. One of the things the web site control panel’s automated backup does is to take the site off line – now I can kind of understand this if data is being changed but really, most websites are static files (html, php, dll’s) so you’d think these could be just copied. Have you spotted the snag so far, backup are really important, keeping your web site on line is also important – I don’t think being offline for 30mins every day to do backups is all that acceptable for global eCommerce sites. So what happened, well the backup for BookSwap.ws started, the site was taken off line, then, well, the backup appears to have failed and the site never got put back on line. No details of this in the control panel for the site and I even had to go as far as editing the setup to kick the site back online. It was a very evil situation that I was VERY unhappy with. When I realised what had happened I canned the automated backups immediately. Then 2 weeks latter I found out the secure server part of BookSwap.ws was off line, this meant transactions, "my account" and member login were all unavailable – not a funny situation. Guess who had setup automated backups and forgotten to disable them on this account! Having finally got rid of the web site automated backups (remember the database is backed up separately!) the websites have been up and running without any problems since. The next thing I know I’ve wandered into my home office and it’s all very quite – not normal as I usually have 3 PCs running, this particular day no PC’s were running, a quick look at the UPS – looked OK but the only reason all 3 should be off is a power fail. About a month before we had a major outage that drained the UPS. Well, I kept an eye on the UPS and it all looked OK, no battery fail light or anything (it’s supposed to be Smart). Then two weeks latter all the PC’s go off again. This time the UPS goes off and complains big time about being switched back on. This time indicating a battery failure. I got my self a new battery for my UPS from UPSBattery, a great deal and delivered the next day - fantastic. Installed it without any problems and the UPS is now up and running. I decided to have a go at installing the software to manage the UPS again, last time I tried it was a nightmare (about 3 years ago) and I gave up. Well the software doesn’t appear to have changed much, but fortunately it has the option to remember User/Password details as I always forget that stuff (one feature of FireFox and IE I love). Naturally I installed the business edition of the UPS software – not because I’m running in a business environment and need the software on my server and to be able to connect remotely to it. Not because I plan to get more UPS, but because the personal edition wouldn’t install without a UPS on the system and it didn’t detect the one that was connected on the USB port. Windows had it, the business edition (which you have to install 3 apps for!) had it, but the personal edition, nope useless. Once up and running I ran the self test a number of times, all appeared OK, It wouldn’t let me calibrate the battery without it being 100% full. When I did finally get there the UPS died and took down all the PC’s connected to it – when I got them rebooted the UPS control software didn’t have the intelligence to realise it killed the UPS and reported no events – nice!. Mental note – when running UPS cal/self test don’t rely on power from the UPS to drive the machine you are using to monitor the test. With it being a new battery I think the previous settings in the UPS memory were reporting an incorrect charge level, hence the battery wasn’t all that well charged when I tried the calibration – hence it didn’t survive the calibration!. I also run a daily backup on my development PC to backup the source code every day, the application for this is nice and simple, but when it kicks in that’s it, the PC’s unusable for an hour – the backing up takes about 5 mins, but 55mins is spent pre-processing – talk about a pain, I’ve got a decent PC with a few spindles and lots of memory but still the backup app needs to hog 100% of the CPU. So I’ve the backup set for 2am so I’m forced to go to bed then, but also forced to leave the PC on over night – hopefully the new version of the app has the ability to run in the background as I work – maybe I will write to them and ask, after all they keep emailing me to get me to upgrade but don’t bother to tell me any special reason that the new versions is better than the old!. I’ve not posted any links or named the products that bit me, I don’t want to give them any free advertising or inbound links for products I’m not happy with! Well, it’s 1:55 am here in the UK and I need to get some bits done before the backup takes over and the PC becomes unusable. Any backup tips would be much appreciated… Steve. Monday, January 16. 2006Just how is it that computers know…
It seams like every time I set up some new advertising something on the server knows and decides to throw a wobbly. I recently set up two new adverts for BookSwap.ws and as I submitted them, the server decided to fall over. Before you even think it, they hadn’t even gone live, so it wasn’t due to a sudden rush of traffic!
Fortunately the host providers did a great job of detecting an issue and sorting it out without me having to do anything, apparently there was a network issue that caused the server to fall over and resist attempts at rebooting. This appears now to be fixed. As I write this and logged into my EV1 Servers account I see an announcement of some outages apparently caused by a linux worm exploiting a php issue. I guess this is probably what happened to my server. Then the day after that, one of the configuration files for BookSwap.ws’ web server appears to have been corrupted which caused the default server page to be loaded as if the site was off line. I do wonder if this was caused by an issue with automated backups because it only happened to one site on that server, the one I had a few hours before configured automated backups for!, or, perhaps it was just because it was Friday 13th. I don’t usually run the automated backups provided by the web server application as this takes the site off line and is a real pain to configure - everything about the site is data driven so the database gets backed up regularly to a different server and the rest is code that doesn’t need backing up anyway. Apologies to anybody effected by the recent server problems, hopefully these are now sorted out, I will be keeping a close eye on the situation. As you’ve probably noticed I’m not all that good at posting, you have to wonder why when this short entry has taken me about three hours, and with some of it’s original content missing, mind you, it nearly didn’t get posted at all. All I wanted to do was paste some simple text into the word processor I’m using (no prizes for guessing which famous one I’m using!). Because the text was from a certain web browser the word processor decided to connect to the internet – why I don’t know, so I naturally blocked it when Zone Alarm told me it was accessing the internet. So that locked it up for ages, I was hoping it would time out, but an hour latter I had to end task it, fortunately the auto save had saved much of my work, but I had still lost more than I wanted. I have to say I really hate the way paste works in most of the Office product now days, all I wanted was a simple bit of text, no formatting etc, I wanted the data with MY format, not the format from the web page, Ahhh – and don’t get me started about the way a certain spreadsheet handles cut/copy and paste, when I copy something I want it to stay on the clipboard - it’s almost as bad as it’s graphs, come back Q-Pro all is forgiven – well, I actually liked that app so not to much to forgive!. Being the webmaster of a book site I decided I should share what I’m currently reading with you in my posts. At present I am reading Vincent Maraia’s The Build Master, I’m only about 2-3 chapters in, although I have cheated a little and read a few bits at random. Basically it’s about the Windows NT build team at Microsoft, it’s very interesting and I would certainly recommend it, especially if you are remotely involved in the build process for software products, managing source code or managing a software department. Being dyslexic I really have to like a book to keep reading it and this is certainly one of those, who knows, when I finally finish it I may well write some more about it – don’t hold your breath though as I’m a very slow reader. Steve.
Posted by Stephen Harrison
in |