Wednesday, December 14, 2011

Business Ethics, Professionalism and the Workplace: Information Systems

I just read this really interesting (slightly dated) article (thanks Megha):

The paramount question every professional asks himself or herself is "am I worth what I make?" This is always important, even though today, as Year-2000 conversions are beta-tested and implemented the demand for certain professionals appears to have exploded. There will always be cycles of varying supply and demand. Different professions have varying cultures and expectations. This sidebar will focus on issue of particular importance to professionals in information systems.

Read More…

Friday, April 29, 2011

Day 30 – Where do you see technology advancing in the next 20 years – and where will you fit in?

My old lecturer, Mr David Mason, told me that Management Information Systems (MIS) is a better career decision than Computer Science, because (paraphrased):

The technology advances so quickly that Engineers quickly become out of date.  However Managers always need reports in order to improve performance.  So they will always need Developers who can translate human requirements into machine language.

Note, he was referring to 4GL as opposed to 3GL.  The promise of technology has always been that computers will one day be able to program themselves (third generation languages), thus making low-level software engineers redundant.  But you would always need a higher-level interface between computers and the business, else the purpose for having the computer is lost.

I have no idea what the technology will look like in 20 years time.  The hype has never matched the reality (Back to the Future part 2, anyone?  We’re only 4 years away from 2015 and don’t have nuclear-fission, flying cars and hover-boards.)

I do know that my days with computers are numbered.  They are a useful tool, bringing the world into my home via search.  But when I retire from office work, I won’t miss them.  They won’t miss me.  In 20 years, I’ll be a happy grandfather: teaching Christ to heathens; sending missionary updates to my kids & home church via web; cataloguing Unreached People Groups who have yet to hear the Word of God; coordinating church field force survey data; assisting in the Completion of the Great Commission in preaching the Gospel to all the World; thus fulfilling the mandate of the Church; thus preparing the way for the Lord’s return; thus ending all suffering on the planet for all time.

That’s what I’m looking forward to.

Thursday, April 28, 2011

Day 29 – Looking back (at geek life), would you have done anything differently?

I don’t believe so.  Looking back over my professional qualification and credentialing résumé, I see a natural progression:

Year Credential
1984 School Cert
1985 University Entrance
1986 B Bursay + HSC
1988 Speed Reading
1990 BCA Degree
1996 Access 2.0
1998 Windows 95
1999 VB 5.0 + Access 95
2000 Solution Architect
2001 VB 6.0 + SQL 7.0
2002 Windows 2000 + DBA
2003 MCT
2005 VB.NET (Windows)
2006 VB.NET (Web)
2007 .NET Framework 2.0
2008 SQL 2005
2009 ITIL v3.0 Foundations + .NET Sol Architect
2010 .NET Framework 3.5

Wednesday, April 27, 2011

Day 28 – How many computers lying about the house?

Not as many as there used to be:

Make/Model Room Use
Lenovo T61 Hamish bedroom Work PC for Remote Access work
Dell OptiPlex Rumpus Room Kids games
HP Mini-Note Main Lounge Main home PC
Sony PS-2 Rumpus Room Kids games

I have a habit of bundling up old PCs and delivering them to the annual e-PC recycling day at Westpac Stadium.

Tuesday, April 26, 2011

Day 27 – Fix a bug in some open source software and commit the patch

Wouldn’t know how; not inclined to learn.

Not because I don’t have a charitable spirit.  I do my giving in a different way, in a different forum.

But because I know that I have limited time on Earth to spend with certain friends and family, I limit my programming expertise to chargeable hours.

This blog title has sparked a reaction in me I wish to explore further.  That is, how are YOU, dear reader, making the world a better place?  And I don’t mean by filling the ether with the software equivalent of better mouse-traps (technological upgrades to essentially a simple device, which doesn’t require bigger, better, bolder, except in order to perpetuate the marketing life-cycle).

What actual improvements are you making?

On a related matter, the recent (February) Christchurch earthquake.  What’s with raffles to raise funds for Christchurch?  If you wish to give, then give.  Hoping to get something out of it despoils the motive, in my opinion.  (And yes, I gave cash; and no, I don’t buy raffles, ever.  Unless my kids come home with some fundraiser from one of their various groups.  Then I try hard not to impose on friends and family by absorbing the tickets myself.  But that’s not really a donation then, is it?)

So I challenge you: rather than fix a bug in some open source software, fix a real-world issue with affirmative action such as:

Oh, I’m an activist from waaaay back.  I remember being at Victoria University of Wellington, marching in protest against Phil Goff bringing in Student Fees for the first time.  I’ve never forgotten nor forgiven him for it.  Must have been 1990’s.

Sunday, April 24, 2011

Day 26 – Apple – friend, foe or other?

As previously answered in this series of blogs, I started with Apple, before they were trendy, before the first MacIntosh.  So, I have nothing against them.  They provide good competition for Microsoft (software), Sony (music) & Nokia (phones).

They would be a dangerous monopoly if they were the size of Microsoft in all three industries, but they’re not.

I firmly believe the only reason their O/S is not as often hacked as Microsoft’s is not because of quality but because of availability of the operating system to the hackers.  In other words, if you were a hacker intent on maximum damage, why bother with an OS that’s only 5% of the market?

Further, I am persuaded that the Apply fanboy belief that their vendor has higher quality products, is due to the fact that Apple tightly couple their hardware with their software.  In other words, Microsoft are constrained by remaining compatible with the masses, Apple is not.

Friend?  Not really.  Foe?  Not at all.  Useful competition, and ally at times.

Day 25 – Microsoft – friend, foe or other?

Asked and answered yesterday.

Saturday, April 23, 2011

Day 24 – How do you feel about Open Source vs Proprietary software?

As explained in a previous post, I drank the blue Kool-Aid (a euphemism for joining the Microsoft camp) years ago.  Having recently seen Tron: Legacy, I am reminded that the original Tron movie forecasted a paradise of free software for all, bringing a utopia of equal access for all.

That hasn’t happened, but I don’t believe that Proprietary is the problem.  Proprietary is one way to ensure quality.  I like the Wild West of the Internet, but I want software that runs on it consistently.  All jokes aside about the lack of quality in Microsoft products, can you imagine how much worse it would be if it was run by a bunch of volunteers?

Yes, I know that’s what Linux represents, but I won’t have a bar of it.  You still need a Proprietary version of it (Sun, HP) in order to have somebody you can go back to, in order to make it work properly.

Friday, April 22, 2011

Day 23 – Post a review of an application that you use.

Been there, done that (don’t do it for free):

Date Publication Product Title
1991 InfoTech Weekly Access 1.0 Microsoft provides easy Access to graphics
1992 InfoTech Weekly FoxPro 2.5 FoxPro 2.5 flies the flag high for Microsoft
1992 InfoTech Weekly Lotus AmiPro Was critical and unpublished
2008-03-06 GeekZone Blog Visual Studio 2008 Microsoft Certification in Visual Studio 2008
2009-02-05 GeekZone Blog Visual Studio 2008 Live Services… JumpStart!
2009-02-20 GeekZone Blog Visual Studio 2008 Introduction to New SQL Server Data Services
2009-12-03 GeekZone Blog MSDN Using MSDN at Telecom

Thursday, April 21, 2011

Day 22 – Release some software under an open source license that you haven’t released before.

No.

Wouldn’t know how.

Haven’t got time to code for anybody else but my employer.

I have a real life outside the office.

Wednesday, April 20, 2011

Day 21 – Favourite thing & worst things about working in IT?

Favourite Things:

  • Get to play with all the latest software (via Universal Microsoft Developers Network [MSDN] license);
  • Get to play with all the latest toys (via Telecom 4U staff benefit granting me free mobile phone upgrade every 2 years and my job requires me to be contactable 24/7 so I get free broadband and a work laptop to take home every night);
  • Get to attend killer training opportunities (such as Tech-Ed in Auckland and Azure Training in Sydney) for my job;
  • Can work from home.

Least Favourite Things:

  • About to be forced to move into Flexi-Desk work scenario.  I will have no desk of my own.  I will just be a number.
  • Always being asked to help people on their home computers.  An analogy would be, if I went to the BBQ of a doctor friend of mine and asked him to look at my misshapen boil for a free diagnosis.  (I don’t have a boil, but you get the picture.)
  • I used to be owner/operator of Mana Information Systems Limited.  I used to be master of my own time.  But, I realised I was a better developer than a manager, and couldn’t grow the company beyond my limited abilities in that area.  So, I moved into full-time work.  This has it’s advantages, but now I’m saddled with a huge hierarchy.  Just discovered this table recently:

 

Title Name Unit
CEO Dr Paul Reynolds  
Group Chief Technology Officer David Havercroft Business
GM Change Implementation Claire Barber Management
HO Delivery Applications Trevor Coles  
Manager Service Delivery & Solutions Development Steven Burke Line Manager

Tuesday, April 19, 2011

Day 20 – Where do you stand on Internet Censorship?

While I detest porn as a destructive influence on marriages (and therefore families, communities and ultimately nations), I am also a libertarian.  I equally detest big government interference in the free exchange of ideas between adults.

But I’m also a parent, and agree that a duty of authority is to protect the innocent.

But I’m also a Christian, and don’t trust sinful, fallible humans to wield great power unselfishly.

So my considered stand on Internet Censorship is that it’s a slippery slope.  While I wish that porn and other destructive influences were not so prevalent, ultimately the responsibility lies in the heart of man.  Until we reduce demand, the supply will always be there.

Monday, April 18, 2011

Day 19 – Most hated computing environment.

I’m a developer.  I code inside an Integrated Development Environment (IDE) such as Visual Studio.  In there, I am coddled by Frameworks and Patterns and Graphical User Interfaces (GUI).  Within those constraints, I am free to craft any program in any direction I choose.

I am not an engineer.  I detest command lines.  I hate having to memorise switch codes.  Without a GUI, I’m lost.

Sunday, April 17, 2011

Day 18 – Most cringe-worthy geek moment

My first job as systems administrator.  I had a little knowledge.  I worked for a government department at Head Office.  We had nice shiny new servers and Oracle databases.

I took out Napier database.

Don’t ask me how.  I didn’t last long in that department.

They had backups.  They learned how to better safe-guard their databases.

Saturday, April 16, 2011

Day 17 – Post a useful HOWTO to solve a challenge you’ve come across recently.

How To Bulk Move Documents from DocsOnline (SharePoint 2003) to Exchange 2.0 (SharePoint 2007)

Overview

  1. Create an Excel worksheet with the following columns and populate:
    • Path (where coming from)
    • File (document name)
    • Library (where going to)
    • Tags (Meta-data about the document)
  2. Set up your new Document Libraries to mirror the new structure you intend.
  3. Ensure that you have disabled Check-Out for each document library.
  4. Create a Console app.
  5. Set a Web Reference to SharePoint Copy Web Service (http://intranet/{new site}/_vti_bin/copy.asmx)
  6. Read the documents via System.IO.File.
  7. Write the documents via Copy Web Service.

Code Listings

Read Excel

        static DataTable ReadExcel()
{
string fileName = @"D:\Downloads\DocsOnlineContents.xlsx";
StringBuilder connectionString = new StringBuilder();
string quote = @"""";
connectionString.Append("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
connectionString.Append(fileName);
connectionString.Append(";Extended Properties=");
connectionString.Append(quote);
connectionString.Append("Excel 8.0;HDR=YES");
connectionString.Append(quote);

OleDbDataAdapter da;
DataSet ds = new DataSet();

da = new OleDbDataAdapter("SELECT * FROM [RawData$]", connectionString.ToString());
da.Fill(ds);

return ds.Tables[0];
}


Main Program



static void Main(string[] args)
{
string source = @"file://docsonline6/sites/{old site}/";
string destin = @"http://intranet/{new site}/";
bool retVal = true;

DataTable dt = ReadExcel();
foreach (DataRow dr in dt.Rows)
{
string path = dr["Path"].ToString();
string file = dr["File"].ToString();
string library = dr["Library"].ToString();
string docType = dr["Document Type"].ToString();
string subType = dr["Sub-Type"].ToString();
string appInst = dr["App Instance"].ToString();
string created = dr["Created"].ToString();
DateTime dtCreated = DateTime.Parse(created);
string author = dr["Author"].ToString();
string modifiedBy = dr["Modified By"].ToString();
string modified = dr["Modified"].ToString();
DateTime dtModified = DateTime.Parse(modified);

path = path.Replace("\\", "/");

if(library != "
DELETE")
{
Console.Write("
Copying file: {0}...", file);
retVal = ExchangeService.CopyFile(
source + path + file,
destin + library + @"
/" + file,
file,
docType,
subType,
appInst,
dtCreated,
author,
modifiedBy,
dtModified);
}

if (retVal)
Console.WriteLine("
success!");
else
{
Console.WriteLine("
failed!");
break;
}
}
Console.WriteLine("
Press any key to continue.");
Console.ReadLine();
}



Copy File



        public static bool CopyFile(
string copyUrl,
string copyDest,
string file,
string docType,
string subType,
string appInst,
DateTime created,
string author,
string modifiedBy,
DateTime modified
)
{

//remove after debug
Log.WriteEntry("COPYURLFINAL: " + copyUrl + "/n" + "COPYDEST: " + copyDest);

bool IsCopied = false;
//copyUrl = Uri.EscapeUriString(copyUrl);
copyDest = Uri.EscapeUriString(copyDest);

try
{

Log.WriteEntry("INSIDE TRY");

//instantiating copy web service

SharepointCopyWebService.Copy copyService = new SharepointCopyWebService.Copy();
copyService.Credentials = CredentialCache.DefaultNetworkCredentials;
copyService.Url = "http://intranet/{new site}/_vti_bin/copy.asmx";

Log.WriteEntry("BEFORE CREDENTIAL");

Log.WriteEntry("AFTER CREDENTIAL USER: " + CredentialCache.DefaultNetworkCredentials.UserName);

//string array
string[] dest = { copyDest };

//gets the copysource in bytes
byte[] fileBytesArray;
//to receive the result xml
SharepointCopyWebService.CopyResult[] copyResultArray;
uint copyUnit;

Log.WriteEntry("IN if (copyUrl.Contains...");

//copy file
SharepointCopyWebService.FieldInformation[] info = GetFieldInfo(file, docType, subType, appInst, created, author, modifiedBy, modified);
Log.WriteEntry("AFTER FieldInfo.");

Log.WriteEntry("Identity: " + WindowsIdentity.GetCurrent().Name);

fileBytesArray = File.ReadAllBytes(new Uri(copyUrl).LocalPath);

Log.WriteEntry("AFTER fileBystesArray.Length: " + fileBytesArray.Length);

if (fileBytesArray == null)
{
Log.WriteEntry("THROWING Exception");
throw new Exception("Cannot read file.");
}

Log.WriteEntry("PRINT OUT BEFORE EXCEPTION");

copyUnit = copyService.CopyIntoItems(NULL_URI, dest, info, fileBytesArray, out copyResultArray);

Log.WriteEntry("AFTER COPYINTOITEMS for FILE. dest: " + dest + ", count of fileBytesArray: " + fileBytesArray.Length +
", count of copyResultArray: " + copyResultArray.Length);


if (copyUnit == 0)
{
Log.WriteEntry("IN copyUnit == 0 condition.");
int idx = 0;
foreach (SharepointCopyWebService.CopyResult myCopyResult in copyResultArray)
{
if (copyResultArray[idx].ErrorMessage == null)
{
IsCopied = true;
}
else
{
try
{
throw new Exception("Copy Operation failed.\r\n" + copyResultArray[idx].ErrorMessage);
}
catch (Exception ex)
{
Log.WriteEntry(ex.ToString());
Log.WriteEntry("INTO COPYFILE. EXCEPTION FOUND: " + ex.Message);
}
}

idx++;
}
}

}

catch (System.Web.Services.Protocols.SoapException ex)
{
Log.WriteEntry("INTO COPYFILE System.Web.Services.Protocols. SoapException FOUND: " + ex.Message);
}
catch (Exception ex)
{
Log.WriteEntry("INTO COPYFILE. Exception FOUND: " + ex.Message);
}

return IsCopied;
}


Constructor



        static ExchangeService()
{
if (!System.Diagnostics.EventLog.SourceExists("MoveDocsOnline"))
System.Diagnostics.EventLog.CreateEventSource("MoveDocsOnline", "Application");

Log.Source = "MoveDocsOnline";
Log.WriteEntry("This is a simple event log entry");
}


Set up Meta-Data



        private static SharepointCopyWebService.FieldInformation[] GetFieldInfo(
string file,
string docType,
string subType,
string appInst,
DateTime created,
string author,
string modifiedBy,
DateTime modified)
{
List<SharepointCopyWebService.FieldInformation> info = new List<FieldInformation>();


info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Name",
Type = SharepointCopyWebService.FieldType.Text,
Value = file
});
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Title",
Type = SharepointCopyWebService.FieldType.Text,
Value = file
});
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Content Type",
Type = SharepointCopyWebService.FieldType.Text,
Value = "Default Document"
});
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Security Classification",
Type = SharepointCopyWebService.FieldType.Choice,
Value = "Internal"
});
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Document Type",
Type = SharepointCopyWebService.FieldType.Choice,
Value = docType
});
if (subType != "")
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Sub-Type",
Type = SharepointCopyWebService.FieldType.Choice,
Value = subType
});

if (appInst != "")
{
appInst = appInst.Replace(", ", ";#");
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "App Instance",
Type = SharepointCopyWebService.FieldType.MultiChoice,
Value = appInst
});
}
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Created",
Type = SharepointCopyWebService.FieldType.DateTime,
Value = created.ToString("yyyy-MM-ddThh:mm:ssZ")
});
if (author != "")
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Content Owner",
Type = SharepointCopyWebService.FieldType.Text,
Value = author
});

info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Modified By",
Type = SharepointCopyWebService.FieldType.Text,
Value = modifiedBy
});
info.Add(new SharepointCopyWebService.FieldInformation
{
DisplayName = "Modified",
Type = SharepointCopyWebService.FieldType.DateTime,
Value = modified.ToString("yyyy-MM-ddThh:mm:ssZ")
});

return info.ToArray();

}

Friday, April 15, 2011

Day 16 – First computer you’ve ever owned & your favourite ever.

Year Computer Comment
1988 Apple IIe Bought second-hand from Nelson College.  Used during 1st year at Victoria University.  Green screen.  80 column text display.  Optional graphics output.  Dual 5.25” floppy drive system.
1989 Commodore PC-10 Transitioned from Apple to PC.  Had a 10MB Hard Drive!  2nd year at VUW.
1990 Commodore PC-20 Upgraded to 20MB HDD!  Half the size!
1991 Zenith MiniSport 386SX goodness.  Grey-scale LCD.  1MB RAM.  Had colour external monitor.  3.5” floppy.  My first work computer, for Mana Information Systems Limited.
1994 Compaq ProLinea Work horse – mini server – tower configuration (a variant of their Proliant range).
1999 HP Vectra Pentium goodness.  Bought several units all at once, second-hand, for the staff of my flourishing company. 
2003 Dell OptiPlex For home use.  ANZ Bank staff discount offer. 
2005 HP MiniNote Special deal from Tech-Ed 2008.

The latest one is always my favourite one (not sentimental).

Thursday, April 14, 2011

Day 15 – Earliest geek experience

Coding Biorhythms* into Applesoft BASIC onto an Apple IIe computer at Nelson College in 1984.

You input your date of birth, and it calculated where you were on your Physical, Emotional & Intellectual cycles to date.

Required understanding of sine waves and plotting graphs.

 

 

* No longer a current belief system of mine!

Wednesday, April 13, 2011

Day 14 – Favourite computer conference?

There can be only one: Microsoft Tech-Ed.

Specifically, 2005 was a very good year: SQL Server & Visual Studio both came out at the same time.

I’ve also attended Code Camps (free, community-led, Microsoft-sponsored weekend events).  These are cool, too.  Buy only Tech-Ed brings together the big names down under.  I get to go every three years (our team rotates the privilege).  My last one was 2008.  I’m hoping that the current economic conditions don’t prevent me from attending this year.

I love the ability to audit various streams of IT: Database, Web, Windows, Visual Studio, Security.  And if I get bored with all that, I can just mosey into a lab and teach myself the latest patterns.  Outstanding.

Tuesday, April 12, 2011

Day 13 – How did you become such a geek? Career? Personal interest?

There were various influences:

  • The name of this blog, “Computer James” is a play on the 80’s song “Computer Games” by Mi-Sex.  That was my nick-name at college, before I even really got interested in (or had access to) any computers.  It was a nick-name I didn’t discourage, therefore I kind of grew into it.  It was better than the alternative: Hippo-heavy (instead of Hippo-lite)!
  • Love of science fiction.  Especially Robert A. Heinlein.  I particularly loved his The Moon Is A Harsh Mistress.  It opened my eyes to the possibilities of Artificial Intelligence.
  • Nelson College upgraded from BBC Micro to Apple IIe just as I hit fourth form.  Thus the right confluence of ability and availability joined together to introduce me to AppleSoft BASIC and Turtle Graphics.
  • I failed in my bid to join the RNZAF as a University Candidate, Officer Selection.  I had spent 5 years at No. 23 Squadron (Nelson) Air Training Corps learning to be the best Air Cadet I could be, only to fail OTS for my hand-eye coordination.  A lesser rank held no appeal to me.
  • But computers were still only a hobby to me until I hit second year at uni.  This was because I made a materialistic decision to concentrate on a Business Degree, in order to attempt to make the big bucks.  I signed up to be an Accounting Bursar with the Housing Corporation.  They agreed to pay for my 3 years of study (plus holiday work) in return for my bond to stay 3 years to work as a junior management accountant.  I had never taken Accounting as a subject at school.  Accounting wasn’t available in the first year.  It was only after I took ACCY205 in my second year that I discovered I absolutely hated it.
  • So, I switched majors from ACCY, to Information Systems (with some side papers in Computer Science), switched department from Management Accounts to Information Systems at Housing Corporation, and never looked back from there.
  • In fact, shortly after I attained my degree, I had shown such aptitude, that my university lecturer and I started a company together.  I paid back my bond to Housing Corporation and I became co-director of my own Information Systems consultancy!

Monday, April 11, 2011

Day 12 – What area do you want to expand your skills into?

I am starting to be groomed for a Lead Developer role.  Unfortunately, this means more more admin and less programming, but I’m starting to become more comfortable with that.  After we hired @BlackMael, it dawned on me that:

  1. I’ll never be as talented as some other people in all areas;
  2. If I had three of him, I could lead some fantastic projects.

So, I’m starting to take on the following new responsibilities:

  • Project Management including resource availability and scheduling;
  • Incident Management including defect tracking and bug fixing;
  • Problem Management including root cause analysis;
  • Customer Management including fronting the team;
  • Vendor Management including licensing, support agreements and service level agreements; and
  • Staff Management including conducting interviews;

Sounds like I’m ready for a step up to management.  It’s been approx. 8 years since I shut down Mana Information Systems Limited.  it sounds like I’ve increased my management abilities since then.

Sunday, April 10, 2011

Day 11 – Favourite hacking environment – music, light, seating, etc

  1. I never hack.  I wouldn’t know how.  All my programming is legitimate; always has been.
  2. Therefore my favourite programming environment is at my office, because working at home has too many distractions.
  3. Music – Dire Straits, Private Investigations or anything from their Wellington concert c-1985.
  4. Light – plenty of it; although I am a touch-typist, I still need to be able to read the various function keys.
  5. Seating – Telecom just bought the Life chairs (approx. $500-$1000 each, depending on who you’re talking to).  They do me very nicely, thank you very much.
  6. Keyboard – Microsoft Ergonomic.
  7. Mouse – Wireless
  8. Monitors – Dual, of course.  Oh, I forgot to mention that in a previous post; that I have something like a 29” widescreen LCD secondary monitor.  Better than my television at home!
  9. Broadband – need I mention it?  Absolutely essential, because “Google is my friend.”  It’s absolutely impossible to know every pattern, so the ability to quickly search for them online is a God-send.

Saturday, April 9, 2011

Day 10 – Picture, screenshot and specifications of your primary computer.

 

image
Name ThinkPad T61
Monitor 14.1" WXGA+, 1440x900, 200-nit widescreen
Hard drive 90GB
Memory 3GB
battery life Up to 8 hrs. on 7-cell-battery, integrated-graphics model
ports 3 USB 2.0
fingerprint reader Integrated
keyboard Ergonomic
touchpad Standard

Friday, April 8, 2011

Day 09 – What OS/distribution do you run?

Telecom Common Operating Environment policy is (n-1) which means “the latest version minus 1”.  During the Vista years, this meant we stayed on XP (a wise decision, as it turned out).  Now that Windows 7 is here, we eagerly anticipate the roll out of Win7 shortly (SP1 is already out, I believe – thus satisfying N-1).

At home, I bought one of those HP Mini Notebooks that was on special at Tech-Ed 2008 which came with Windows 7.  This compact PC is the most powerful box in the house.

I don’t get much chance to code at home anymore, so my work laptop is my main system.

Distribution?  I guess I’m always RTM.  I don’t install Betas, as a rule (although Mozilla Firefox 4.0 Beta 9 was a killer app, for me).

Thursday, April 7, 2011

Day 08 – Preferred method of communication with humans

Depends on the purpose and the medium:

  1. Face-to-face – Reading emotions, understanding requirements, analysing work-flow.
  2. Email – Accurate information flow, audit trail.
  3. Phone – Quick responses to binary questions.
  4. Four square – lettin’ my peps know where I’m at.
  5. Twitter – Monitoring the global conversation flow.
  6. Facebook – Letting my extended family and friends see my haps.
  7. Massage – exclusively reserved for my wife.

Wednesday, April 6, 2011

Day 07 – Preferred Smartphone platform. And which do you use?

For the uninitiated, and to narrow the parameters, I define/am aware of three Smartphone platforms:

  • Android by Google
  • Windows by Microsoft
  • iPhone by Apple

I’m also aware that some other large mobile phone manufacturers have attempted their own proprietary platforms (Nokia, I believe), but I don’t count these because they are small and unlikely to survive.

In decreasing order of preference, I list them (and my reason why) thus:

  • Apple – I’m not a fan boy and refuse to pay extra for brand name.
  • Windows – Although I am a fan boy of Microsoft (after all, it is my day-job) they offer too little too late, in my opinion.
  • Android – I’m loving this.  Although it is open source (which I have traditionally steered clear of), it offers everything I want in a Smartphone platform.

My work has given me an LG GW620f phone running Android.  Can’t wait to upgrade to ver 2.2.

Tuesday, April 5, 2011

Lesser Known Design Patterns with Bevan Arps

Wellington Dot Net User Group Meeting

  1. NULL Object Pattern - useful to declutter your code. Requires creation of a Null object in order to remove requirement to always check whether your object exists.

  2. Command Pattern - Create function objects that interact with the object hierarchy.


    • Effects: Localises code; Undo/Compensation; New function: New object.

    • Considerations: Open-closed principle; # Classes; Likelihood of changes

  3. Emancipated Objects Pattern - make objects responsibile for maintaining their own state.


    • Effects: Read-only properties; Mutator methods; Validation

    • Considerations: Applicability; Reusability; ORMs

  4. Proposal Pattern - Complex Domain Factories. Explictly model the process that leads up to creation of the original object.

    • Effects: Natural Validation; Reduced Complexity; Increased Flexibility; Error Tolerant.

      Considerations: Process Complexity; Process Duration.

  5. State Pattern - Complex Domain Behaviour. Partially change the type of the object by swapping out behaviours based on state.

    • Effects: Switching removed; Grouped behaviour

    • Considerations: # Classes; Encapsulation; Complexity of Behaviour

    Day 06 – Primary geek fuel (snacks/drinks)

    Drink = Coke Zero.

    Snack = Telecom provides free fruit.

    Monday, April 4, 2011

    Day 05 – Quick nifty hacks you’re proud of

    1. Windows-E = Open Windows Explorer quickly.
    2. Windows-D = Show Desktop (minimize all) quickly.

    Sunday, April 3, 2011

    Day 04 – Greatest application written to date

    There have been a few, at various stages of my career:

    Greatest Access App, Still In Operation

    • Contacts and Order Processing System (COPS)
    • Used by a commercial office furnishing business & a couple of manufacturers
    • Originally written in Access 2.0.  Now runs on Access 2000.
    • Does Purchase Orders, Invoicing, Customer Contact History, Vendor Management & Inventory
    • Written when I was Owner and Director of Mana Information Systems Limited

    Greatest Mainframe App, Still In Operation

    • Not exactly mainframe, but an interface to a mainframe app
    • Wrote the interface which took the output from an automatic scanner and (using API calls) feed those into a mainframe database
    • Written when I contracted to a large bank

    Greatest Database App, (Presumed) Still In Operation

    • Monthly National Credit Card Spend Report
    • Report is consumed by the Reserve Bank and the Dept. of Statistics
    • Written in SQL Server 2000
    • Summarizes and breaks down NZ’s entire monthly spending via credit cards, within 5 days of Month End
    • Written when I worked for a national EFTPOS company

    Greatest Web App, Still in Operation

    • Mobile Pricing Database & SPOT Retrieval Application
    • Used by a certain telecommunications company
    • Originally written in Visual Studio.NET, upgraded to 2005, then 2008, then 2010 (.NET 1.1, 2.0, 3.5, 4.0)
    • Does promotional pricing and other reports
    • Written for my current employer

    Saturday, April 2, 2011

    Day 03 – What does your day job involve?

    That’s an interesting question, since I’m in a transition phase at Telecom at the moment.  I shall be temporarily filling a Lead Developer role for a Service Help Desk.  I will answer this from the perspective of my current job description: Senior .NET Developer.

    Job Skills

    • Analyse, Design, Quote, Schedule, Develop, Implement, Document, Train, Support, Mentor .
    • The good news: The Workgroup Solutions Team, to which I belong, have autonomy to create Intranet web applications which we host and support.  This means we’re able to pretty much design and develop anything which the end user is willing to pay for.
    • The bad news: we’re essentially left to our own devices and must project manage our own time.  We must advertise internally for new work.  We must give estimates of resource availability.  We must work within an ITIL Framework for Change Management, Incident Management, Problem Management.

    Technologies Used

      Programming IDE Visual Studio 2010
      Relational Database SQL Server 2005
      Operating System Windows XP (Telecom’s policy of being [n-1] versions behind the market, coupled with Vista’s disastrous incompatibilities, means we’re hanging out for Win7 later this year.)
      Source Control Visual SVN & Tortoise
      Office Productivity Office 2007
      Project Management Primavera P6
      Payroll SAP
      Change Management HP Digital Workflow
      Diagnostic Tool Fiddler2
      Laptop Lenovo T61
      IM Office Communicator
      Reporting SSRS 2008
      Browser IE 7 (Don’t hate me)

    Friday, April 1, 2011

    Day 02 – Preferred programming language?

    Visual Basic.NET (Visual Studio 2010)

    Why?  Because historically, I progressed from:

    • AppleSoft BASIC
    • GW BASIC
    • dBASE III Plus
    • FoxPro
    • Paradox
    • Access
    • VB 5.0
    • VB 6.0
    • VB.NET

    In addition, Visual Basic.NET has the following advantages:

    • VB not only stands for Visual Basic, but also Verbose.  It is a verbose language, which assist with self-documentation, as I don’t have to guess as much which } closes which statement.
    • C#.NET coders are a dime a dozen.  You have to really love VB to go against the flow.  This makes you rare and more valuable.
    • All the Java developers hate you.  I can live with that because I am anti-LAMP:
      Open Source Microsoft
    Operating System Linux Windows
    Web Server Apache IIS
    Database Server MySQL SQL Server
    Language PHP/Java ASP.NET

    Thursday, March 31, 2011

    Day 01 – Why do you consider yourself a geek?

    This is day #1 of “30 Days of Geek” 

    To find out more about what that means, read here: http://www.eguru.co.nz/2011/03/30-days-of-geek-challenge-starting-1st-april/

    Day 01 – Why do you consider yourself a geek?

    1. I’ve been coding since Form Four at Nelson College in 1984.
    2. I am a Senior .NET Developer at Telecom New Zealand.
    3. I am Web Master for Align Church.
    4. I was Web Master for Grenada Village Residents Association.
    5. I was Web Master for Wellington Home Education Network.
    6. I am a Microsoft Certified Trainer.
    7. I am a Microsoft Certified Professional Developer (.NET Framework 2.0 – Web Developer).
    8. I am a Microsoft Certified IT Professional (SQL Server 2005)
    9. People ask me to fix their computers at parties.
    10. I carry an LG (Android) Smartphone.
    11. I am known as “Mr. VB” at Dot Net User Group meetings.

    That’ll do for now.

    Wednesday, February 23, 2011

    How to Change .NET Framework Version Without W3SVC Restart

    If you are changing the .Net Framework version of a website hosted in IIS  you will most likely receive a message that looks like the following

    The problem is that if you restart the W3SVC, all the application pools will be recycled.  Not a good idea on a Production server.

    Steps to resolve this issue

    1. Log onto IIS Server.
    2. Start IIS Manager.
    3. Check that your web site is a virtual directory off the Default Web Site.  If not, you need to find the Site ID of your web site. 

      To find the Site ID, just click on the “Web Sites” folder in IIS and you should see a table in the right column that looks similar to this:

    4. Check that your application has an application memory pool of its own.
    5. Open a command prompt window.
    6. Change directory to .NET Framework version desired
      e.g. C:\Windows\Microsoft.NET\Framework\v4.0.30319
    7. Type aspnet_regiis –norestart –s {IIS-Virtual-Path} where:
      {IIS-Virtual-Path} = W3SVC/{web site id}/root/{application name}
      {web site ID} = “1” (for Default Website)
      {application name} = Virtual Directory of your web application
    8. Framework version will be changed. 
    9. Recycle the application memory pool for the website (from IIS Manager).