19.5.11

Static excursion aka GPS Noise

Two views of the same phenomenon. Aka noise

image

500751504,A,110519063636,N5121.3833W00011.1017,000,247,NA,17800000,108 
500751504,A,110519063606,N5121.3835W00011.1007,007,247,NA,17800000,108 
500751504,A,110519063536,N5121.3832W00011.0866,000,074,NA,17800000,108 
500751504,A,110519063506,N5121.3706W00011.0796,000,345,NA,17800000,108 
500751504,A,110519063448,N5121.3673W00011.0927,010,086,NA,17800000,110 

16.4.11

You have to setup and tear down

Recently I witnessed the execution of performance test runs that did not include the elements necessary for successful and reliable result generation.

The test run should have included the following activities:

  1. Test setup
    1. Seed the database with fresh data
    2. Rebuild indexes
    3. Recreate statistics
  2. Test execution and
  3. Test tear down
    1. Delete data generated during the test
    2. Clear caches
    3. Recycle application pools
    4. Remove all database deadlocks

The initial performance run included steps 1-2; subsequent runs only included step 2. When the results from all runs where compared, it was observed that the performance of the system under test(SUT) gradually deteriorated.

The main point is that without proper tear down and setup after each performance run, the tests were measuring a different SUT each time.

For performance comparisons to be meaningful, one has got to compare similar SUTs.

If you can’t perform steps 1-3 because of complexities in your environment, then abandon your performance tests until these prerequisites are resolved.

5.4.11

Google Chart API

We are building a lightweight reporting module; our charts need to scale and given that we could be hosting the report module on a nix platform, using the .NET charting APIs was not an option.

After a bit of digging we settled on using the Google Chart API which provides a POST API. All we needed to do to perform integration was supply the data series, labels, chart type, chart dimensions etc.

https://chart.googleapis.com/chart?cht=p3&chs=300x100&chl=Agribusiness|Haulage|Jobs|Other|Property&chd=t:6,3,2,2,1 

The rendered chart is displayed below

This is a great services from Google and demonstrates the power of software as a service(SaaS). Software development should be about assembling and orchestrating various services to build a cohesive feature set.

3.4.11

Zam-Track on track

Based on current data volumes and interest expressed in the Z-Track platform, we expect to process about 1 million data points this year. Each data item has the following structure:

%%800704,A,110402201650,N5121.3489W00011.1780,000,230,NA,47000000,531,CFG:Z31,10,1|

A JSON representation of this feed looks like this:

ID:800704,GPSValid:A,DateTime:110402201650,Loc:N5121.3489W00011.1780,Speed:000,Dir:230,Temp:NA,Status:47000000,Event:531, Message:CFG:Z31,10,1|

The structure of the data makes it ideal for a document-centric data store. We have evaluated MongoDB as the storage solution; other contenders in the running are CouchDB. Fast data writes and reads are essential for our application.

The feed gives us vast opportunities to integrate with HR, Payroll and financials systems.

15.3.11

Quick time to market with DTSTTCPW

We are developing all our products using this development philosophy with the caveat that we then “refactor mercilessly”. So far this has helped us to deliver key application features in record time. The success of this approach relies in having the discipline to rapidly payoff the technical debt that inevitably accrues.

And of course as with everything – context matters. Simplicity is relative.

reCaptcha

Is pure genius and makes you think about how the solution to one problem, Spambots, can provide valuable commercial opportunities in another totally unrelated area. Great idea! But do the deciphered publications end up in the public domain or will Google charge us for this material?

Integration of reCaptcha is quick and painless, so we are adding it to all our online form submission workflows.

Just Tether It

So my mobile phone provider says I can eat as much data as I like on the current tariff; the truth of the matter is that I don’t really surf the web whilst I am out and about. At the end of my billing period I have tonnes of unused bandwidth. Luckily I have managed to download a USB tethering utility, PdaNet, that allows me to use my phone as a wi-fi hotspot via USB cable. Sweet. Let the feasting begin…

13.3.11

Fleet Management Platform codenamed Z-Track now in development

Zainco Ventures is developing a fleet management and asset tracking platform,  Z-track , aimed at providing deep integration with back office systems. The first beta release is planned for Q3 2011.

Chisamba order confirmed

After a difficult trading period in February, business is definitely picking up. Zainco Ventures has been engaged again by the Food Reserve Agency to help with the movement of 300 metric tonnes of vital grain stocks. This is a ringing endorsement of the services provided by the company. Last year Zainco Ventures helped the Zambian government to move over 4000 metric tonnes of grain to safe storage.

With a forecast yield of 2.8 million metric tonnes in the 2010/11 agriculture season, we will definitely be busy.

Reviewing the £100 Android tablet

There is a tablet for almost any budget. My tablet arrived 1 week ago and since then I have been evaluating the wowPad.

I have successfully upgraded the firmware using a download from the internet. Everything works as it should.

The camera is low spec, but this is to be expected for a budget tablet.

Overall – I am quite impressed with device. Would I buy more units? Definitely yes!

8.2.11

Description Resource Path Location Type error: No resource identifier found for attribute 'onClick' in package 'android' main.xml /HelloFieldroid/res/layout line 9 Android AAPT Problem

Appears there is a problem with using events declaratively, so have ended up implementing the event handler in code

An SDK Target must be specified when you try to create a new Android Project in Eclipse

image

This is caused by the SDK path not being set in the Eclipse IDE. This is resolved by selecting Window—>Preferences—>Android and enter the path to your Android SDK, then hit OK. You will see a list of all your Android Platforms as shown below:

image

   1:  <?xml version="1.0" encoding="utf-8"?>


   2:  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"


   3:      android:orientation="vertical" android:layout_width="fill_parent"


   4:      android:layout_height="fill_parent">


   5:      <TextView android:layout_width="fill_parent"


   6:          android:layout_height="wrap_content" android:text="@string/hello" />


   7:      <EditText android:id="@+id/editText1" android:layout_height="wrap_content"


   8:          android:layout_width="fill_parent" android:autoText="false"></EditText>


   9:      <Button android:layout_height="wrap_content"    


  10:          android:layout_width="wrap_content" android:id="@+id/button1"


  11:          android:text="save note"


  12:          android:onClick="saveNote"


  13:          ></Button>


  14:  </LinearLayout>


Monodroid vs Eclispe with ADT

For 400USD looks like Monodroid is definitely an expensive way for .NET developers to join the Android game. Using Eclipse and the Android Development Toolkit(ADT) an experienced .NET developer will be productive in no time. I downloaded the tools 1st thing in the morning and by midday I had a simple data driven application with the appropriate test coverage.

The Eclipse tool support for Android is unbeatable. You get design surfaces, inbuilt editors for resource files and the comfort that these tools are mature and bug free. The other side effect is that you end up learning Java.

Viva free tools!

4.2.11

Monodroid resource generation fails

------ Rebuild All started: Project: Com.Fieldroid.Search, Configuration: Debug Any CPU ------
C:\Program Files\MSBuild\Novell\Novell.MonoDroid.Common.targets(281,2): error MSB6006: "aresgen.exe" exited with code 1.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Error 1 "aresgen.exe" exited with code 1. SmsSearch

Another Successful release... times are good

We STP Heroes J - YES, We have done it AGAIN! J Another milestone success!!

 

We hear from Business that Sprint 13 Release in PROD is doing great!

Thanks to all for all the hard work on this one other major milestone release that has gone LIVE this morning.

 

Celebrations… we are just shot of balloons – that is all …J

I have brought in a little Sainsbury's Sweet shop, yes really!!!!!

 

Keep up the nice work J

 

Grab the sweets before they vanish. I am running a TPL Parallel LINQ query to eat all sweets….

 

// A little celeberation in my style… ;) with C#

// Sundar: Start diving into the sweets… use TPL so I can eat ALL, FAST… J

// But of course,  I am running an i7 980X 12 MB cache, with Six-cores… hyper-threaded to 12 virtual cores, mind you…. wohoooo……..

 

Parallel.ForEach ( sweetsOnMyDesk, oneSweet =>

            {

                // The more sweets I eat here, the greater the speed compared to if I used a non-parallel foreach loop for my eating process J

 

                var sweet = CeleberationsHelperUtils.UnPackSweet(oneSweet);

                this.Eat(sweet); // I really wanted to say Me.Eat(…) but that would sound like VB.NET ;)  Grrrrrrr……… I am "C# house", baby! J

 

            }

            // Wow!! what a sweet C# lambda expression I have got there – don't you love it? J

            );

        

            // Execution done!

 

     // Let others know I am eating… very fast… using Parallel extensions ;)

            Console.WriteLine("Sundar has completed eating ALL (?) sweets. Press any key to let me continue to work on Sprint 14 J.");