Repairing Schuberth SRC System

January 26th, 2012

OK, so my Schuberth SRC system kept turning itself off within minutes of it being turned on. At first, I thought it might have been because it wasn’t fully charged, but I ruled that out quite quickly. Having opened my SRC system in an attempt to improve the radio reception, I anticipated that Schuberth would not be interested in fixing the unit so it was up to me to see if there was anything I could do to solve the problem.

Battery side view of both sides It didn’t take long to get everything apart and see that my assumptions about the location of the battery and the components was incorrect.

It also didn’t take long to find out where the problem was. There was a ribbon cable between the two sides shielded by quite a thick metal sheaf.  Clearly, there had been a lot of movement of the shield as it was no longer soldered to the units at either side. Within the metal shield, and near the one end, the ribbon cable had been folded and flattened. Constant movement of the shield and the cable had caused the ribbon cable to fail where it had been folded.

Getting a new ribbon cable of the same size and type, proved to be difficult, so I had to search for a 12 pin 0.50mm pitch ribbon cable that was longer than the original. In the end, I was able to get two off eBay for around £7.00 each which I was really pleased about; £14.00 instead of £200.00 for a new unit or the unknown cost of having had it serviced by Schuberth.

I did make one mistake whilst servicing the cable. I was a little impatient with one of the locking tabs of the ribbon cable and broke it off in my haste. I thought this was going to cause me a lot of grief, but I was able to to use a strip of plastic from the top of a headache tablet strip, fold it in half, and wedge it behind the ribbon cable like the original tab would have done. It took a long time to get the cable and the plastic wedge into place and ended up being as snug a fit as the original plastic tab. I doubt it will move before I have to replace the cable again (which I hope I won’t have to do).

Truly Awful Code

December 1st, 2011

So, on the back of my previous post about people designing applications for mobile devices having never even used one, I am now working for an employer who would appear to have never read any guides on how to code in Objective C – or any kind of language for that matter.

We’ll start with this simple bit of code that is not only written badly, it also contains 2 errors!  Assuming this person had any schooling, I think they missed the classes on “else if”, “switch statements”, “enumeration” and “top down programming”.


if (yourScore < 12) {
gameState = 1;
}
if (yourScore > 12) {
gameState = 2;
}
if (yourScore > 24) {
gameState = 3;
}
if (yourScore > 37) {
gameState = 4;
}
if (yourScore > 49) {
gameState = 5;
}
if (yourScore > 62) {
gameState = 6;
}
if (yourScore > 74) {
gameState = 7;
}
if (yourScore > 87) {
gameState = 8;
}
if (yourScore == 100) {
gameState = 10;
}

The two errors are:

  • How does one achieve game state 9
  • And what if a persons score == 12

This next snippet, from the same company, had me lost for words. As I am working from home and I have never met the employer, I am beginning to wonder whether they aren’t some 12 year old skipping school and getting an early start creating their own business.


// if under 10 we prefix a 0
	if (Row < 10) {
		tempRowString = 	[NSString stringWithFormat:@"%02d",Row];
	} else {
		tempRowString = 	[NSString stringWithFormat:@"%d",Row];
	}

These aren’t one off’s. The whole code base is riddled with statements like these. The following snippets, which could be ignored by themselves, create an unnecessary large code base, code that will run slower on the target device or generally complicate what should be straight forward statements.


	// set the challlneger and challenger name , make sure we dont lose reference
	NSString *tempChallengerName = [[NSString alloc] initWithFormat:@"%@",[parts objectAtIndex:0]];
	self.challengerName = tempChallengerName;
	[tempChallengerName release],tempChallengerName = nil;

            NSString *WBUserNameString = [NSString stringWithFormat:@"WB UserName:%s\n",messageChallenger->playerName];
            WBUserName.text = WBUserNameString;

            NSString *GCUserIdString = [NSString stringWithFormat:@"GC UserId:%@",playerID];
            GCUserId.text = GCUserIdString;

            GKPlayer *player = [[GameCenterHelper sharedInstance].playersDict objectForKey:playerID];
            NSString *GCUserNameString = [NSString stringWithFormat:@"GC UserName:%@",player.alias];
            GCUserName.text = GCUserNameString;

I have spared you the vast swathes of white space between statements, misaligned indentations, and poor logic.

What really pisses me off, is that these inbreds who can barely code, are being paid a small fortune for this via some relatively popular apps on the app store and I am being paid a pittance (in comparison) for going through their code and doing it properly.

Another example of their wonderful style.


-(void)setSoundVolume
{
	// play background sound if not muted
	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    int intMusic = [userDefaults integerForKey:kMusicLevel];
	NSLog(@"INT KMUSIC LEVEL %i",intMusic);
	if (intMusic == 1) {
		NSLog(@"NOT Playing background music and setting to level 1");
		//[[SoundManager sharedManager] playMusic:@"Jack-Beats-aac" looping:YES];
		[[SoundManager sharedManager] setMusicVolume:1];
	}
	if (intMusic == 2) {
		NSLog(@"Playing background music and setting to level 2");
		[[SoundManager sharedManager] playMusic:@"Jack-Beats-aac" looping:YES];
		[[SoundManager sharedManager] setMusicVolume:2];
	} 

	if (intMusic == 3) {
		NSLog(@"Playing background music and setting to level 3");

		[[SoundManager sharedManager] playMusic:@"Jack-Beats-aac" looping:YES];
		[[SoundManager sharedManager] setMusicVolume:3];
	} 

	if (intMusic == 4) {
		NSLog(@"Playing background music and setting to level 4");

		[[SoundManager sharedManager] playMusic:@"Jack-Beats-aac" looping:YES];
		[[SoundManager sharedManager] setMusicVolume:4];
	} 

	if (!intMusic) {
		NSLog(@"Playing background music and setting to level 4 intMusic is nil so not set in defaults");

		[[SoundManager sharedManager] playMusic:@"Jack-Beats-aac" looping:YES];
		[[SoundManager sharedManager] setMusicVolume:4];
	} 

	//// set audio level on launch
	int intAudio = [userDefaults integerForKey:kAudioLevel];

	if (intAudio == 1) {
		NSLog(@"Audio setting to level 1");

		[[SoundManager sharedManager] setSoundVolume:1];
	}
	if (intAudio == 2) {
		NSLog(@"Audio setting to level 2");

		[[SoundManager sharedManager] setSoundVolume:2];
	} 

	if (intAudio == 3) {
		NSLog(@"Audio setting to level 3");

		[[SoundManager sharedManager] setSoundVolume:3];
	}
	if (intAudio == 4) {
		NSLog(@"Audio setting to level 4");

		[[SoundManager sharedManager] setSoundVolume:4];
	}
}

How not to design an application for the iPhone

July 30th, 2011

I recently did some work for a company on the south coast:  It was a five day project that turned into three weeks.

When the project finished, I was asked if I could create an iPad version of an iPhone application they had written for a very large proprietor and lender of DVDs, here in the UK.

I began by looking at the source code and function of the existing application and was horrified by its lack of integration into the whole iPhone experience.  There was a very small, and poorly implemented version of coverflow on the main page with a UITableView immediately below it.  If the UITableView contained content that expanded upon the selection of  the current item in the coverflow, I think it would have worked, but the two items contained no correlating information.  What I found worse, was that coverflow was the ideal presentation for this reseller and it was only used to showcase 25 items on the landing page and all other DVDs and titles were presented in a table view with no option to tilt the phone sideways to get a coverflow representation of the content.

For me, the biggest problem in the design, was the director, who was an Applephobe, taking every opportunity to slate their products without any real knowledge of their use – to be fair to him, he was not very “PC” and belittled everyone who worked for him and actually said, “c’mon play the white man”, when talking about an alarm company who wouldn’t give him discount.  When I began querying him on the design, he openly admitted that he hadn’t actually used an Apple handheld device and that he had certainly not used any other applications or Apple’s own applications to compare form and function.  True to my nature, I blurted out “I can’t believe you have designed an app without looking how other applications work on the iPhone”.  Immediately he replied that he was putting the iPad project on hold and that it would be designed “in house” – great, here I am, a paid technical resource trying to help with your products and you chose to ignore that knowledge and stick with what you know – or don’t know in this case.

Mark Twain on this matter:

All you need in this life is ignorance and confidence, and then Success is sure.
- Notebook, 1887

 

Dilbert just tapped into my life

February 12th, 2011

Dilbert.com

I am not doing too badly, mind.  I have received some very nice rewards from Triumph for the iPhone application and I am currently in talks to finance an Android version.

Triumph Configurator iPhone App

September 15th, 2010

Logo This is my take on the the Triumph bike configurator for the iPhone.

It is currently Beta as there are still a few bugs and features that need to be removed/added.

The following are screen shots from the App.  There is the main screen where you choose the bike and the language in which you want to view prices and information, followed by sample customisation screen shots :

Main Screen Read the rest of this entry »

Lame Interviewers and Techniques

August 19th, 2010

I have just come back from an interview for a job that I really wanted.  I found the person asking the technical questions to be vague; “an application is having issues, how would you go about troubleshooting the problem”.  Hello?  Is it web based?  Is it reliant on a database or storage?  For fucks sake, give a candidate more to work on than that.  If possible, give them a real world example that you have come across yourself.  I wonder how much real world experience people like this have themselves if the best question they can ask is as vague as this.  I was asked four similar questions like this and felt that I was let down by the interviewer rather than by myself.  The only technical question I was asked, was about the configuration of Apache and Tomcat.  Now, I have done lots of Tomcat and Apache, but it has been well over 6 months since I actually had to configure anything, so asking me what the Apache configuration file should look like is stretching my memory at the very least.  Given that most System Administrators support any number of applications, expecting someone to have detailed configuration knowledge of something they haven’t been working on the day before is expecting a lot – especially in an interview environment.  I have given technical interviews and know that you don’t expect exact answers, and if you want to get the most from the person you are interviewing, you give them specific problems for them to work through and not just some vague randomness.  If they can’t answer one question, move onto something else, maybe ask what they have been working on more recently and quiz them on that or ask them if they any projects they have worked on outside of the office, etc.  By adapting your interview to the person being interviewed, rather than having a rigid (read lame) structure, you are likely to find a more skilled candidate.

Now, if I could only get that retard to read this.

About the best analogy I could come up with, would be asking a cook what are the specific ingredients for a sponge cake they haven’t made in 6 months when all they have been making recently, is main course.  Both involve cooking; either they can cook or they can’t, so asking them details about the the more recent items will let you know whether they are up to making a sponge cake (after all, configuring Apache+Tomcat is not difficult is it?).

Review of Schuberth SRC for the C3

August 3rd, 2010

Having owned a black C3 helmet for almost 2 years, I recently bought a new Schuberth C3 helmet in Fluo Yellow for my daily commute.  I was offered a good deal on buying the helmet with the Schuberth SRC system that I couldn’t refuse.  I would like to point out to Schuberth, that paying the full RRP, of £280, for this system is way too expensive, and will deter a lot of people making this purchase.  Knock a £100 off the asking price and I am sure most C3 owners would save their pennies and buy one of these.  I would even go as far to say, that some people might actually go out and buy the C3 helmet just to have the easy integration of wireless communication, bluetooth and radio.

I absolutely love the way the SRC system integrates into the helmet.  Yes, it adds a bit of weight, but it is barely noticeable, and the convenience far out ways the minimal weight increase.  The only real issue I have had with the installation is that the flip lid requires a bit more effort to close than it does without the SRC system installed.  Maybe this will get easier with use.

[photopress:schuberth_fluo_yellow_1010822.jpg,thumb,pp_image]

Although I have not been able to test the rider communication, I have been able to test the bluetooth integration with my mobile phone and TomTom GPS unit, as well as the radio.

I have to say, the radio reception has been really poor.  I live in Berkshire and ride to London most days.  Outside of London I have hardly been able to receive a signal of any quality.  The radio constantly crackles and the signal fades in and out – so much so, that I have elected to void the warranty and take the system apart to see if there was anything I could do to improve the reception myself (video after the break).  I have soldered a wire onto the thick metal strip that runs around the back of the helmet and will let you know how I get on.  I would be interested to know if I had a faulty unit or whether or the SRC systems are this bad.

Read the rest of this entry »

Triumph Thunderbird 1700cc (limited edition factory fitted big bore kit)

May 11th, 2010

The nail in the coffin for my old Thunderbird 1600 was when Triumph announced they were doing a limited run of factory fitted big bore kits and two new colour schemes.  This was back in November last year when it was still hard to get any details about cost or whether the two new colour schemes would be included with the big bore kit or an optional extra.  I sold the old bike there and then, after only 531 miles, and used the money as a deposit on the yet to be launched 1700.

Four months later, in late March, I picked up my Thunderbird from Bulldog Triumph, in Twyford.  The time had finally arrived to find out whether that extra 100cc would make its presence known.  I had already told the shop that if I wasn’t happy with this one, I would be back for a Rocket III Roadster.

After nearly 1200 miles and six weeks of use, I have to say, the big bore kit makes a huge difference.

With the 1600, you feel compelled to change up through the gears quickly and at relatively low revs, whilst the 1700 is quite happy to linger in gears and feels content to use the full range of the available revs.

The graph to the left shows the difference in power delivery.  The 1600 reaches peak torque around 2700 rpm and then slowly drops off whilst the 1700 reaches peak torque a little later – at around 3000 rpm – dips a little and then hangs on to the power until around 3500 rpm.  Whilst this shows the 1700 has more power, I think the following describes how and why the 1700 feels more comfortable to linger in gears.  The 1700 exceeds the 1600′s peak torque sooner, at around 2400 rpm, and continues to exceed the 1600′s peak torque until around 4000 rpm.

For me, Triumph are onto a winner with the 1700 and my local dealer will be sorry to hear that I won’t be getting a Rocket III Roadster any time soon.  The 1700 is for keeps!

My new (and old) Thunderbird 1600

February 10th, 2010

Well, my new Triumph Thunderbird 1600 arrived last August and I have already sold it after only 531 miles.  Don’t get me wrong, I loved the bike, but first impressions left me under whelmed.  I was expecting more torque than was readily available on tap and I was never impressed with the initial colours available.  It’s not all bad – well, apart from the after market handlebars playing havoc with my wrists – the riding position is great, it’s a lot more fun accelerating off the lights and over taking than using the Triumph America.  Although cornering is smooth, the footpegs scrape the ground a lot sooner than on the America, but for such a big bike with such wide tyres, cornering was effortless.  Compare cornering on the Rocket III Tourer which has a smaller 180/70 rear wheel and you’ll see what I mean.

The only reason I sold the bike is because Triumph are releasing a special edition of the Thunderbird with a factory fitted big bore kit taking it up to 1700cc.  They are also releasing two new colours; Phantom Red Haze and Phantom Blue Haze.  I have already put my name down for one of the limited SE’s in Phantom Red, so watch this spac

Comparison of Aftermarket Handlebars

Picture 1 of 5

The stock handlebars and mirrors are on the left.

Fitting a chain to a 1993 Tiger without draining the oil

February 10th, 2010

A poor design of the early Hinckley Triumph engines is that the sprocket cover is part of the engine casing, usually requiring the engine oil to be drained to change the engine sprocket or fit a new chain.  To compound this, on the Tiger models, you have to remove the rider’s left foot rest as well.  This takes time and is a real pain in the ass, something I have done before and didn’t want to do again just to fix a broken chain that had slid off.

View of the SprocketAs I could reach – and turn – the top of the engine sprocket, I tried to feed the chain in from the top, which wasn’t very successful because I couldn’t get any access to the lower part of the sprocket.  Chain Fed Through (showing metal feeder bar underneath)I then decided that if I could feed the chain in from the lower part it would be easier to pull the chain around by spinning the top of the front sprocket.  This worked a treat.  I used a thin, curved, metal bar from a Triumph America screen as a support for the chain.  By placing the chain on the metal bar and feeding them both under the swing arm until the chain pushed up against the sprocket I was able to hook the chain onto the sprocket after only four or five attempts of spinning the top of the sprocket with my hand.  Once the chain was sufficiently far enough around the top of the sprocket I was able to start pulling it through with ease.