Wednesday, June 03, 2009

6/03/2009 11:53:00 PM

Publish and be spammed 

For many years now I have believed in the principle of "Publish and be damned" which I learned from my days in software engineering working with Stingray Software. I had never experienced having to write code that someone else would code review or criticise in any way. When I actually had a team of people to tell me what was wrong with the code I had slaved over in my darkened home-office, I grew both professionally and personally.

Code review nowadays can be automated. Systems such as FX Cop and Style Cop will mercilessly tear your code apart and dispassionately explain how much of an idiot you are several times a day, if your software factory is running correctly that is.

How much of this automated code review is really useful though? Microsoft cite the need for uniformity in the code. Because they have such a huge code generating body of workers, the way code is laid out needs to be standardised, homogenised and sanitised for reasons of continuity within teams. but honestly, the rules can seem to be arbitrary on the one hand and just plain stupid on the other.

Mobile work forces can mean many diverse styles, where each coder is conscientiously doing what they think is best and still generating a confusing mish-mash of coding styles for the poor sod who comes after. This is why MS have produced these Machiavellian code checkers.

Working, as I do, in a company that has a large body of legacy code in many different technologies, coupled with a developer workforce who are just ordinary programmers with few aspirations to being the next Don Box, I see a huge amount of code that can only be characterised as absolutely bloody horrible! Given such standard of quality and quality of coder, how can I, as an architect, hope to bring this code into line with even the minimum of compliance to what would be considered as acceptable for the crew in Building 42, Microsoft Way, Redmond?

My conclusion is that sadly, the people that "manage" said body of code have a vested interest in defending the stuff because many of them wrote it. Secondly, the will to change must be coupled with the acceptance that something needs fixing and so, if externally, your architecture doesn't seem to be teetering on the brink of the omni-flush toilet, then the budget is rarely available to re-write the stuff. Budgets are always available however to maintain the awful rubbish for as long as it functions even partially.

So. What's the conclusion you may ask yourself? Well, software is politics because its about egos. People believe that their solutions, however nasty are the right way and elegant and good. Politics is a human condition and someone has to point a finger somewhere.

On the other hand, computers are next to gods in our society. They are always right and they know everything worth knowing, or at least have access to it, so, I have come to the conclusion that if you want code that is readable or maintains the minimum standards, then you should get FX Cop and Style Cop tied securely into your TFS build process and spam everyone who checks in code with all 23,000 warnings a day.

This way, you can sit smugly by in the knowlege that the rules these programs apply are despotic, uneccesary and often idiotic but, when the manager who wrote said crap moans about the time it takes to add a simple function to the code you can put your hand on your heart and say; "Sorry, it's not me, it's the software factory rules. We can't check in till the warnings are fixed."

Monday, June 01, 2009

6/01/2009 02:52:00 AM

That mashup called life. 

A recurring theme on this blog is how technologies can change ones life in a positive way. I think that during my life I have avoided computer games but may actually spend more time interacting via the computer than even hardened gamers.

This weekend I have been to see a band, The Enid, in the UK who have essentially been revitalized via the Internet I have used an "External Brain" in the form of Evernote to remember and organise my thoughts and sights into a searchable database. I have used my iPhone and its Internet connection for instant answers. Once again I have used a mixture of Microsoft, Apple and open source technologies to enable me to be connected 24 hours a day without having to carry a laptop or a big bag of electronic gizmos

When I drove from place to place I used a GPS for navigation and, more importantly, to avoid traffic and to find alternative routes. Finally, I think I had the most fun experience I have had in, well, decades I suppose when I danced the night away in a silent disco at the Wychwood Festival near Cheltenham in the UK. For those of you that have never seen one, a silent disco is one in which the revellers are all equipped with headsets that can receive one of several channels of music that can be as loud as one desires but does not annoy the neighours. When you remove the headset you are returned to a room containing perhaps a thousand people and a low hum of conversation punctuated by the occasional snatches of songs sung by the crowd. In any case, the deafening thump of base and ear splitting noise that has made the disco or club a health hazard is replaced by pure participatory fun and, who would have guessed, conversation.

As I live this technologically enabled existence I can truly say that computers, the Internet and the things which some people revile as a waste of time and which pollutes the human experience can be, and often is demonstrably a boon and a blessing.




Tuesday, April 28, 2009

4/28/2009 08:50:00 PM

Can Silverlight save the world? 

A recent article on the CO2 cost of spam, 17 million tons of the stuff apparently, and a conversation I had with a friend about the economic advantages of parallel processing systems made me think about how technologies such as Silverlight, Ajax and Flash can act to reduce the carbon emissions associated with internet operations.

You see, traditional internet systems, web pages and the like, are a "projected user interface" that really exists on the server and are constantly refreshed whenever we select another link or move to another part of the web application. If we think about the operations taking place here, we see that the server is sending out masses of data that is often duplicated. A web-page refresh from a dynamic site for example, sends the whole HTML data stream to the client each time. A click of the refresh button may not seem expensive but when we factor in the cost of transporting that information across thousands of miles of cable, the electrical burden becomes significant.

So, why might Silverlight save the world? Well, by making a large percentage of the intelligence of a web application reside on the client PC, the data burden is reduced over the network. Rather than re-sending all the HTML information for the pages the data is reduced to the necessary information such as data from web-services. Less data means less current to the data centers and less power for the network infrastructure.


Monday, April 13, 2009

4/13/2009 10:35:00 PM

A weekend without computers (except iPhones) 

So during the Easter break we went to our old house which we're renovating and tried out Trakkus on three clients. To test the system properly my wife and son have signed up for iPhone accounts, they have the 8 gig versions which are on special offer of 99 euros at the moment. Even with my entire music collection, some of which I never-ever listen to, on my 16 gig model I have 6 gigs free so it seems that one would have to be a serious memory hog to use up even the eight gigabyte model.

All three systems have performed well and I have identified some improvements to the system which will be implemented as soon as possible. First I am going to put the display of the web-pages used by the iPhone client into the web client component rather than call out to Safari. This will enable the client to remain up for longer.

I also need to put an image capture button on the beacon dropper so that users can add a snap to the beacon.

Interestingly again this week, even though I took a laptop with me, I didn't use it except to watch a DVD on Saturday evening. All of our out-and-about computing needs were serviced by the iPhones, including one little bug-fix that I did at a distance by driving my PC here via Logmein running on the iPhone.

Before I left I tried setting up ad-hoc distribution via an iTunes account on a PC. I packages the provisioning profile and the .app install file and mailed it to my wife who was able to install it to the iPhone using drag and drop via the iTunes account she uses on her PC. This means that I can indeed distribute this to up to 100 machines for beta test purposes.

If you know anyone who would like to participate in the beta test send mail to beta@trakkus.com where I will make all the necessary arrangements.


Friday, April 10, 2009

4/10/2009 11:29:00 AM

PC vs Mac 

I think I can say with all honesty that I have been dispassionate and open in all of my attitudes towards platform partisanship. It was nothing more than an accident of fate that I began programming for Windows. Actually, I bought my first PC in 1985 to do cross platform development using z80 assembler running on Spectrum computers. In those days Windows didn't even exist and Microsoft was just a small company in the USA.

My first project as an independent consultant was on a mouse for that Spectrum system which I prototyped using an Apple mouse. I had seen Mac Paint and loved it so much I wanted to do something myself, just to see how and the AMX mouse was born from that.

Later, I worked in the printing industry that used Macintosh systems for page makeup but chose PC hardware instead because of cost concerns when we had to create hardware for the systems I was designing.

Throughout my professional life I have always been seen as a PC oriented person and have often had discussions with techno-bigots as to why I should align myself with the evil empire or how Macs were so easy and friendly to use. I have never subscribed to these ideas though, mainly because really, deep down, I am an embedded systems designer oriented towards hardware and I don’t give a monkeys nuts for such sentiments.

As you know, if you read my blog, my experiences recently have trended towards Apple development for my pet Trakkus project which I have used as a vehicle to enable me to keep up with the broad mix of technologies that my aging middle aged brain needs to absorb. I'll say up front that I really like my Mac. It’s a great little system and has a style of UI which is both simple and elegant. My requirements however do not rest with the need to look at my photos or browse the internet or read my mail.

I am currently typing on my PC while watching my Mac-Mini spinning its wheels in a shutdown sequence which has lasted fifteen minutes and seems to have no sign of ending soon. This is something I was assured by Mac-ites that never happened on a Mac and that Windows was the only system that would waste your time with such unnecessary rubbish.

I have also just wasted my entire morning trying to get my provisioning profiles for Trakkus updated so that I can distribute the software to some of my beta testers. Well, the view from the trenches is that it’s not easy, quick, simple or pleasant to work on Mac development. The development environment is positively stone-age in comparison to Visual Studio and the way that Apple contain and control every tiny aspect of things proprietary to apple is a huge barrier to adoption.

Of course, I intend to continue because I have a financial investment in this idea now and from my first tests I think that it could be a success. I think though that, after having done the research on the ground I now understand why Apple has such a small share of the market despite their obvious skills.

Apple’s adherence to an environment driven by lawyers, licenses, proprietary systems and manic protection of intellectual property has made an environment that is not easy to work in unless you are nothing more than a consumer. Microsoft’s attitude of enabling the developer to adopt their systems has made the process of development so easy that there is almost no second choice.

I can buy a PC from any one of several thousand vendors. I can only buy a Mac from Apple and at an inflated price in relation to the equivalent hardware in the IBM compatible world. My Mac Mini cost me a euro shy of five hundred and I just bought a well equipped ACER PC for my daughter with more memory, more hard-drive and a faster processor for a euro shy of three hundred just a week or so previously.

Seriously, Windows is a better environment, less constrained by legal idiocy, more productive, more accessible, cheaper, does not crash more often, does not take longer to shut down, takes a little longer to boot up – unless you’re running Windows 7 which is similar to the Mac, if not a wee bit faster- and wins hands down in my opinion.

To be fair, I love my iPhone. It is my most used piece of hardware ever. I like my Mac mini. It’s simple, elegant and fun to use. I think though, pragmatically, and as my tee-shirt currently reads; “I’m a PC”


Tuesday, April 07, 2009

4/07/2009 07:40:00 PM

Sneak peek.. 

Would you like to see how Trakkus looks in real life? Well, for a short time I am going to allow anyone to view where I go when my iPhone client is turned on.

To get a look at the system when its running simply hit this link too see a limited snapshot of my movements.

Please note that I have altered the values to protect my real position.

I still need beta testers for the system for a month or so and anyone who assists in this test will receive a complementary copy of the full version of the software.

Monday, April 06, 2009

4/06/2009 11:12:00 PM

Getting greater position accuracy from the iPhone 

The iPhone client for Trakkus uses the CLLocationManager to obtain readings. The classic method for getting the reading is to set the location manager going and wait for it to call back your delegate, didUpdateToLocation, with a reading. At this point you can immediately turn off the location manager by calling the stopUpdatingLocation method or you can check the accuracy of the location you have to see if you like it.

The CLLocation horizontalAccuracy setting is a double value that gives an estimated distance accuracy and there are some constants such as kCLLocationAccuracyHundredMeters or kCLLocationAccuracyTenMeters that you can compare the value with or just look at the value to see if it's within your desired accuracy.

If this horizontal accuracy is negative (invalid) or larger than you like, don't turn of the location manager yet. Leave it running and get a better reading.

Here's a snippet...

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

NSDate* eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (abs(howRecent) < 5.0)
{
if(!signbit(newLocation.horizontalAccuracy) && newLocation.horizontalAccuracy <= kCLLocationAccuracyHundredMeters)
{
[locationManager stopUpdatingLocation];
TUser *presentUser = [Singleton singleton].currentUser;
NSString *tlat = [NSString stringWithFormat:@"%+.6f",newLocation.coordinate.latitude];
NSString *tlong = [NSString stringWithFormat:@"%+.6f",newLocation.coordinate.longitude];
if(![tlat isEqualToString:presentUser.latitude] || ![tlong isEqualToString:presentUser.longitude])
{
presentUser.latitude = tlat;
presentUser.longitude = tlong;

[NSThread detachNewThreadSelector:@selector(submitLocation:) toTarget:self withObject:presentUser];
}
}
}

}

(hey, that's my first Cocoa code posting ;-) )

4/06/2009 07:57:00 PM

Trakkus tracked me. 

Trakkus is my pet project. It's social networking and geolocation. (See here...)
I have an iPhone client that connects to services to report locations and to provide options such as chosing who is allowed to see where you are and to drop markers on the maps.

I have discovered that I can use an Apple application such as the iPod player or iTunes to listen to a podcast or some music and Trakkus will continue to run in the foreground and update positions.

This means that the system will indeed be useable for, say, my wife who may wish to see where I am on the way to or from work or for a parent to see where a child is, without having to reduce the functionality of the iPhone.

This page is powered by Blogger. Isn't yours?