Sunday, 5 June 2011

Working with Entity Framework Profiler

I am very new to Entity Framework and only just getting my head around using it in my own projects.  But first I had an application with I knew was built on EF but it was exhibiting some concerning behaviour.  It was using a large number of queries to the database as determined from the SQL Profiler that comes with Sql Server 2005.  I felt this was a little excessive and suspected a SELECT N+1 Anti-Pattern was involved.

But how do I prove it?

I knew of a great sounded tool called EFProfiler and it sounded like a great way to get concrete evidence that the application was not playing nice with the database.

So I downloaded the trial version of EFProfiler to test my hypothesis.

But I run into a problem.

The documentation says I have to add a reference to a dll and in Application_Start in the Global.asax file, I have to add a single line of code.  This is a problem as I do not have access to the code and so I am very limited as to what I can change.

I consider what my options are and I recall that another great tool I make use of called Elmah has a means of easily slipping itself into a web application without needing to add code to reference it.  How it does this is by being an HttpModule.

HttpModules can be added to an application through the web.config which references the dll the module is conpiled and becomes part of the HttpApplication pipeline.  But my first read of the documentation, I can hook into events like BeginRefresh, but there is no indication that I can hook into Application_Start.

This is until I found this question on StackOverflow which lead me to an article on How to correctly use IHttpModule to handle Application_OnStart event.

So I quickly throw together a little project to create my own HttpModule.

Imports System.Web
Imports HibernatingRhinos.Profiler.Appender

Public Class EFProfilerModule
  Implements IHttpModule

  Private Shared ApplicationStarted As Boolean = False
  Private Shared ApplicationStartLock As New Object()

  Public Sub Dispose() Implements System.Web.IHttpModule.Dispose

  End Sub

  Public Sub Init(application As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init

    If Not ApplicationStarted Then
      SyncLock ApplicationStartLock
        If Not ApplicationStarted Then
          Me.OnStart(application)
          ApplicationStarted = True
        End If
      End SyncLock
    End If

    Me.OnInit(application)

  End Sub

  Public Overridable Sub OnStart(application As HttpApplication)

    EntityFramework.EntityFrameworkProfiler.Initialize()

  End Sub

  Public Overridable Sub OnInit(application As HttpApplication)

    ' put your module initialisation code here

  End Sub

End Class

Then all I needed to do was add two dll’s to the bin folder of the application.  The first being my dll with my customer HttpModule and the other being the file HibernatingRhinos.Profiler.dll.  Then I just added one line to the HttpModules section of the web.config.


<add type="CustomModule.EFProfilerModule" name="EFProfilerModule" />

I then fired up EFProf and navigated to the application and it worked!  EFProf started listing sessions and I could immediately see a number of red and grey dots signifying there were some issues found!

After just going to the login screen, signing in and taken to the home page (only two pages) the profiler picked up the following…

EFProf AnalysisNavigating to the login screen only listed two object contexts.  Signing in and loading the Home page produced 16 more object contexts.

I had my evidence and analysis from a commercial product!

My team are looking to use Entity Framework for data access in our projects and to help prevent ourselves from writing sub-optimal queries I will be advocating we purchase the full commercial version of EFProf as it takes all the pain away from detecting issues with your data access code and gives you guidance to fixing any problems.

Saturday, 30 April 2011

Day 30 – Where do you see technology advancing in the next 20 years?

In IT 20 years is a very long time…

Just look back 20 years to see have far we have come!

Assuming that world economics do not collapse.  Computers will be smaller, faster and more ubiquitous.  But that prediction is so obvious.

Hopefully, the world has given up on 3D or at least in the forms that the powers that be are trying to work it.

I image CGI will have finally surpassed the uncanny valley to the point no human can distinguish a real actor from a CGI character.

I’d like to think that we have finally reached out to the asteroid belt.  We are fast running out of rare metals on Earth and before that happens, we will be forced to explore the solar system for other rich sources of raw materials.  Otherwise we are going to hit a rather nasty barrier to further enhancements in technology.  I do not believe we will find any salvation in any green alternative.

In 20 years HTML5 should be well entrenched and HTML6 should be ratified within the next decade or two.

Chrome will be almost celebrating version 100!

IE will be up to version 30 and celebrating Native HTML6.

The Google/Facebook War of 2021 will be mourning their 10th anniversary.

After a four term run as President of the European Union, Arnold Schwarzenegger will be committed after having a mental breakdown where he has been repeated found running around trying to save John Connor.

As for my involvement, I would most likely have no involvement what-so-ever.  I’ll just be home looking after my family, while doing my best to keep up with the latest and greatest tools and gadgets.

Friday, 29 April 2011

Day 29 – Looking back (at geek life) would you’ve done anything different?

Reflections…

Only one thing.  I would not wait 10+ years before getting into the IT industry.  I imagine things would have very different.

Having said that, I would not trade my wonderful wife and two adorable children for the world.

Thursday, 28 April 2011

Day 28 – How many computers lying about the house?

How long is a piece of string?

Six. 

Plus one PC which is in bits. 

But do you count PS3 and AppleTV?  And if you include AppleTV, should I include iPod Touch and iPhone (not that I have an iPhone).  And if I include iPhone, do I also include other smartphones?

Wednesday, 27 April 2011

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

I got this one covered!

April 7th 2011 I submitted a patch (#9077) to ClosedXML.codeplex.com!  Hopefully that is close enough Open-mouthed smile

Note: I just noticed (23rd April) that the main developer has mentioned me in the latest change set.  I’m not sure if that is a good thing or not Confused smile.

Tuesday, 26 April 2011

Day 26 – Apple – friend, foe or other?

Am I an Apple Fanboi?

I feel Apple was once more “friend” than anything just because it was an underdog but this is no longer the case.  As much as I love the iPod Touch and the iPhone, Apple has a stranglehold on what developers can and cannot create for Apple’s iOS devices and this is a real shame.  It probably wouldn’t so much of an issue if Apple’s approval process wasn’t so inconsistent. 

Developers are at Apple’s mercy.

And yet despite this their dictator like rule over apps for iOS devices, it has managed to be hugely successful regardless.  Perhaps Apple are actually on to something…

As an iPod Touch owner, I lean towards “friend”, but as a developer Apple are edging towards “foe” but only because of the steep Developer Tax™ I’ll be charged (namely an Apple computer)

Monday, 25 April 2011

Day 25 – Microsoft – friend, foe or other?

Keep your friends close, and your enemies closer.

Once upon a time, I would have said a definite foe but now-a-days it is leaning more to “other” than anything.  Microsoft has lost a little of its strangle hold on the world and has managed to even worked to be a force for good.  Or at least now contributes to the world of open source and slowly trying to embrace the world of standards.  Though they still manage to stuff things up a little (damn you Native HTML LOL)

Sunday, 24 April 2011

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

There is room enough for everyone…

I definitely lean towards open source.  I am not against propriety source but at some point I feel it needs to be released to the public via open source.

I feel developing software is much more an art than a science.  As an art, you have styles and influences.  There is no one way of doing things but some ways can be better than others.  With open source you have the opportunity to see better ways of doing things in real world applications.  It can then inspire you to develop something better.

Propriety software wants to keep that knowledge to itself and with intellectual property laws, they also want to prevent you from developing anything like their software.  In the end, proprietary software can stifle innovation.

Granted there is examples of proprietary software out there but open source lends itself to more innovation.

Even some big applications built as propriety software are beginning to embrace open source.  Visual Studio .NET from Microsoft now bundles (and contributes to) open source tools such as jQuery.  It has even released other components such as ASP.NET MVC as open source, although I believe it doesn’t take contributions, but you do have full access to the source code.

In the end, proprietary software can be okay, but open source has more potential to advance software into the future.

Saturday, 23 April 2011

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

CodeRush™ and Refactor!™ from DevExpress!

From the blurb at DevExpress.com

CodeRush™ is a powerful Visual Studio® .NET add-on that enhances the developer experience by accelerating developer and team productivity via an integrated suite of technologies

Refactor!™ includes nearly 200 refactorings that help you re-structure C$, VB, HTML, JavaScript, XML, C++., ASP.NET and XAML code.

These two add-ins pack so much goodness into Visual Studio, even after years of using the suite every day, I still only scratch the surface of what available to me but I’m slowly getting there.

As for writing a single post to review every feature in CodeRush™ and Refactor!™ would be an impossible task and so what I’ll be writing about is just the few features that I use most.

Some of the main features I use come under the navigation tools.

  • Find All References
  • Quick Nav
  • Tab to Next Reference

Find All References is the big daddy of all search tools.  It is insanely fast at finding all references of a given item anywhere in your solution.  It then quickly shows where the references are, by file, namespace and method.  It can also show you a preview of the reference in the given file without having to directly open the file itself.

image

Quick Nav on the other hand is a quick and simple tool window to search for code in your project.  Start typing the name of what you are looking for and it quickly starts returning a list of possible matched in your code.

It also can match what you’re typing to the first letter of each concatenated identifier.  For example, “NIE” would match “NotImplementedException”.

Tab to Next Reference is my favourite of the three,  Simply position your cursor on an identifier and hit TAB to start it off.  It then highlights every instance of that identifier and you can keep hitting TAB to jump to the next instance.

image

 

I use a number of refactorings that Refactor!™ gives me too.

For creating new classes I’ll typically define the class in what ever code file I happen to be in.  I then trigger a refactoring to extract that class into its own file.

Extract to Method is a very useful refactoring.  One of the enhacnements Refactor!™ give you is visual clues as to what it will be used as parameters of the method to be extracted.

image

Then of course is the fast and powerful Renaming.  I have it set up on pressing F2.  It then highlights all instances of the identifier I had the cursor on at the time, then I can edit the name of the identifier and all instances are updated as I type.

It all happens quickly and smoothly, and even undo works as expected, undoing all renames quickly.  It even works effortlessly across numerous files.

 

These are just a tiny amount of the features that even I use and I do not use either add-ins to their full potential but I get there one day.

As an extra bonus, there are numerous video tutorials on the DevExpress.com site to help users explore more features and I try to watch as many as I can. They even host live webinars to show off features.

 

If your are not satisfied with features this suite gives you, you can even build your own.  The suite is built upon DXCore which enables anybody to develop their own plugin for CodeRush™ or Refactor!™.

There is also a free version called CodeRush Express which even has a surprising number of the features of the main product so there is no excuse for anybody to not try it out..

 

Lastly, I love these add-ins and if you develop in Visual Studio® .NET, I whole-heartedly recommend you try it out.

Friday, 22 April 2011

Thursday, 21 April 2011

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

Good thing I work in IT!

Favourite thing? 

Well I’m a computer geek, I cannot fathom why it took me so long to finally get into the IT industry!  Every day I get to do what I love to do, work with computers and develop applications that people use and hopefully enjoy enough to not cause them mental anguish.

I cannot get enough of it and work on similar stuff outside of work.

Some people think I’m crazy.  Working all day at work in front of the computer only to come home and spend time in front of the computer.

I love computers and programming computers, why would I limit myself to working on them at work only?

Worst things about working in IT?

The inevitable red-tape that can arise in the IT industry – at least in a large organistaion.

I fully admit I’m not infallible.  I make mistakes.  But most of the time, I know what I’m doing and putting obstacles in my way from doing my job can be mildly annoying.

I do understand that need for change control and paper trails but sometimes, it just gets in the way.

Wednesday, 20 April 2011

Day 20 – Where do you stand on Internet Censorship?

I ***** ** **** * *** ******* * ** ****!

The only censorship I believe in is protecting children from information that they are too young to understand, comprehend, or just scares the shit out of them.

I believe everybody has the right to voice their opinions, ideas, information freely just as long as it is not forced upon me.

Personally I wouldn’t mind if flash based ads were stricken from the world wide web but I imagine that isn’t going to happen any time soon.

Tuesday, 19 April 2011

Day 19 – Most hated computing environment.

Hate is such a strong word…

All computing environments have they own quirks.  As a computer geek I am a little predisposed to liking any computing environment regardless.

I have no love for MS-DOS for instance but at one time, I’m sure people loved it.  I never had to live with MS-DOS so much as I came from C64 and Amiga which by themselves were pretty good, but it was relatively easy to extend for myself purposes.  I didn’t really move into the PC world until WinXP was hitting the streets.

Even on Windows, I tend to limit my time at the DOS prompt and if I want to do something a bit more involved where throwing a console app together is overkill, I’ll pick Bash or (deity forgive) VBScript or in the future, Powershell.

The is one computing environment that can get me very worked up and it is a little mainframe system called ICMS which is run in a simple terminal client.  This probably isn’t a fault so much of the environment but of the system itself so I’m not sure it qualifies.

In the end, I cannot say I really hate any particular computing environment.  I prefer to like some more than others.

Monday, 18 April 2011

Day 18 – Most cringe-worthy geek moment

The Cringe that Stole Easter…

Okay, this is a hard one to answer!

I have had this post open in front of me for an hour and nothing has really sprung to mine.  I am getting a little concerned now thinking maybe I started to lose my motivation to do this #30DaysOfGeek??

I cannot think of any defining moment in my life that could be called the most cringe worthy.

Of course, would I even recognise the geek moment as being cringe-worthy?  More likely only others around me would notice and perhaps are too polite to mention anything…

Sunday, 17 April 2011

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

Hard to find time.

I don’t blog as much as I could and so I do have plenty of material I could use to post useful HOWTO’s, but alas I am the original copy of a procrastinator.

Back every now and then I manage to post something so perhaps these will qualify…

  Email Attachments

  Quick and easy query to Active Directory

 

Not much really, but I promise to do better in the future.

Saturday, 16 April 2011

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

Guru Meditation!

My first computer was a present from my mum for my 14th birthday.  The year was 1987 and the computer was a Commodore 64C and I loved it.

I constantly played games on it, but I also learnt to program on it.  I started with the built-in BASIC, but I quickly moved on to programming it in assembly once I found BASIC was too restrictive.  At first I learnt to expand BASIC with new functionality, but then moved on to more hard core techniques such as sprite and colour hacks, to reverse engineering simple image compression (which I later learnt was RLE) and developing my own super fast 8 way screen scrolling techniques.

Oh those were the days.

As for my favourite computer ever, it is a very tough call to say that the Amiga is my all time favourite.

I started with an Amiga 500 and eventually bought an Amiga 1200.

The Amiga 1200 was my main computer from the mid 90’s until I eventually bowed to pressure to and bought a Windows based PC in late 2000. 

My trusty 1200 was maxed out with an 060 CPU and 64MB of memory, and I even forked out for an awesome device called the Mediator which gave my 1200 the ability to plug in PCI devices and most importantly a PCI graphics card!  My Amiga 1200 rocked!

It rocked so much it remained my main computer until 2003!

Friday, 15 April 2011

Day 15 – Earliest geek experience

What qualifies as a “geek experience”?

I have already posted about my first introduction to computers and so far I only concentrated on the computer side of my geek life.

But being a geek isn’t restricted to just computers.

I am also a geek when it comes to sci-fi and fantasy, though to a somewhat lesser degree than I am a computer geek.

Some of the earliest sci-fi I was introduced to is most likely Doctor Who.  I absolutely loved it, even though in my tender wee years when I first saw it, it scared the heck out of me.

I cannot remember how old I was when I first watched Doctor Who, but it must have before my teens as I remember watching lots of re-runs of Doctor Who during my early years in high school.  At that time, I was already conscious of already seeing episodes for the second time.

As for my first recollection of fantasy, it was most likely in the form of fighting fantasy books written by Steve Jackson and Ian Livingstone.  Actually I’m amazed I still remember their names.  I was probably around 9 or 10 years old again.

I enjoyed those choose you own adventure type books so much, for class assignments I’d create my own stories. Spending forever to map out story lines and chapter paths and passing it around my mates at school to read.  The stories tended to not be very long because it took so long to map it all out, but everybody seemed to enjoy my adventures.

So looking back and reminiscing about my early childhood, I am beginning to notice a pattern.  I don’t really remember much about my childhood with only a few fragments of flashbacks, but it definitely seems the early 80’s is when I began to get my geek groove on.

Thursday, 14 April 2011

Day 14 – Favourite computer conference?

Tech Ed. Need I say more?

For the last two years I have missed out on going to Tech Ed New Zealand because I had foolhardily scheduled the births of my son and daughter to coincide with the biggest Microsoft event in New Zealand.

This year I am finally free, with no impending births, to attend this big event in Auckland.

Except for one thing.

I am no longer sure if I want to be away from my family for two night and basically three days.

I have been to Tech Ed twice, both times I was foot loose and fancy free.  Now, I have other priorities.  It is a real shame the conference is never held in Wellington or at least has never been held here in my short memory.

Another conference I do enjoy which is held in Wellington is WebStock.  I managed to attend this five day event two years ago and it was great.  Especially since it didn’t involved flying to Auckland.  Hopefully I get to attend again in the future, perhaps even next year.

In the meantime, Tech Ed is still my favourite and perhaps as the time draws near I will be more keen to actually attend.

Did I mention the food is great? ;)

Wednesday, 13 April 2011

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

I was born to it!

In my post for Day 01 I covered this to some degree and I’ll build on it here.

Back in the early 80’s when the C64 was king I discovered computers.  Well… I didn’t discover computers! Computers become part of my consciousness.  Without the being a cyborg part though.  Though that would have been cool!

From the age of 9 or 10 I was just fascinated with computers but it wasn’t until I was 14 that I got my own – a Commodore 64.

Just now I had a recollection of an old TV show I loved called Whiz Kids.  Apparently it only ran for one season though at the time I had no notion of seasons I only knew the show was on and then the show was off and sometimes it would come back the next year again.  But this show was one of many that introduced me to the idea that computers can help you do stuff – even fight crime and right wrongs.

Alas I didn’t actually pursue much in the line of computers for a long time.

I took whatever classes that were computer related in high school and straight after high school into university I did start a bachelors’ degree in computer science which was left incomplete after three years of playing an awful lot of arcade games and pinball.

But then there was a significant gap where I didn’t do anything very computer related at all career wise.  I still tinkered away at home but I never had the impetus to use my talents to being a career in the computer industry.

I was still a geek, but it wasn’t until 2002 when friends finally convinced me to take my geekiness and make some money from it.

And so in May 2002, I abruptly quit my job, moved to Wellington, signed up for a one year course in computers and I was away laughing.

From that point onwards, I just got more and more geekier as my confidence and knowledge grew.

It was also the time when I met my best bud @NZCoderGuy as he was starting the same course.

So as far as I’m concerned I have always been a geek.  Computers have always fired my imagination and I can not see a day when computers, gadgets or technology in general would not be a significant part of my life.

Tuesday, 12 April 2011

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

Too many, if any!

There are way too many areas I could really expand into and the goal posts have a habit of being overly mobile.

Currently I am looking into moving into ASP.NET MVC 3 and making (automated?) testing a bigger part of my application development.  The most recent testing methodology I’ve been looking into is Business Driven Development (BDD) as opposed to Test Driven Development (TDD).

To help with BDD I have been testing out SpecFlow.  This is and awesome tool for turning structured human readable requirements into actual testing code which you can compile and put through your test runner.  I just think it is fantastic and makes writing unit tests so easy and even helps you by supplying you with the basic code you need to insert into your test classes and then all you need to do is fill in the logic.

For years now sadly, I have been meaning to get into testing frameworks but have found it very hard to get my head around it all.  SpecFlow has begun to significantly break down that barrier.

There is plenty more areas I could go into, but ASP.NET MVC 3 and BDD/TDD are my main focus for the immediate future.

Monday, 11 April 2011

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

I take what I can get.

My hacking environment is a corner of the lounge.  There are not a lot of options.  It does mean I’m warm in the winter but distractions are my worst enemy.  Though I tend to tune out everything when I’m really concentrating while hopefully still managing to keep a ear out to keep tabs on when the kids or the missus still needs something of me.

I tend to not listen to music while coding, though classical can be soothing sometimes.  If I listen to anything it would generally one of a handful of podcasts I subscribe to.

I prefer the desk to be well lit but not too bright.

I sit on what ever is handy and tend to like to have a foot stool nearby.

I find too much heat a killer of concentration so I tend to prefer the room temp to be a little of the chilly side.   I have been known to be a little frugal on heating even in the middle of winter. Having a young family now has changed all that now.

There is nothing all that special with my environment. Just as long as I have power and an internet connection I am all good.

Sunday, 10 April 2011

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

The funeral is still to be scheduled…

This is a hard one to answer as my primary computer has recently died and more important priorities have taken precedence so for the meantime I only have a substitute primary computer (laptop).

  • HP Pavilion DV9700
  • CPU – Intel Core 2 Duo (T9200) 2.5GHz
  • Memory – 4GB
  • HDD – 500GB

Not much to say really.  It gets the job done for now – just.

 

The specs for the proposed resurrection for my old primary computer is…

  • CPU – Intel Core i7 960 3.2GHz
  • Memory – 6GB Triple Channel (though possibly 12GB by the time I get around to upgrading)
  • Gfx – Asus GTX460
  • Mobo – Gigabyte GA-X58A-UD3R

 

Unfortunately, it may be a while before this puppy sees the light of day and it while probably wont be the same as listed above to meet the components specs of the day.

Saturday, 9 April 2011

Day 09 – What OS/distribution do you run?

It’s not my bag, baby!

I basically sculled back the blue Kool-Aid years ago.  Mostly running Windows 7 with a couple stragglers still on Vista.

If I do fire up a VM for a linux distro, it tends to be Ubuntu for no particular reason, but it tends to not hang around for long.

I do still miss Amiga OS – those were the days…

Friday, 8 April 2011

Day 08 – Preferred method of communication with humans

Universal translator.

This depends on the situation.  If communication is required with a human that is standing in front of me, then verbal communication is just fine.

If said human is not within talking distance, then generally I’d be leaning towards some form of electronic communication such as TXT, email, Twitter, etc.

Occasionally I will pick up the phone, but I tend to leave that as a last resort, generally.

Thursday, 7 April 2011

Day 07 – Preferred smartphone platform and which do you use?

iOS and Symbian.

This one is actually a tough call.

I truly love the ease of use and pure awesomeness of the iOS platform but it does have its issues.

I currently own a 4th gen iPod Touch and would dearly love an iPhone (5 ;) but as a developer I feel a little left out of the club as there is a hefty tax before being able to tinker away developing my own applications.  Namely, I do not have a Macbook Pro (or the like) to compliment my device.

The Windows Phone 7 and Android platforms come a close second and third respectively.

The Android comes third because although there is little barrier to development, I am not overly enthused about working in Java again.  I’d prefer to stick with the .NET Framework.

As such, the Windows Phone 7 looks very intriguing, the development environment is great, the phones look awesome but here in New Zealand where do I get one?  Though to be honest I wont be getting one as I rely on my employer to supply me with a phone and a Windows Phone 7 device is not high on the list at this time.

So although I do love my iPod Touch and covet the iPhone to some degree, if the Windows Phone 7 would be my platform of choice.

The only phone I use at this point is a Nokia E71 running Symbian.  Not my first device of choice but one I have to live with for the time being.  I do still have an old Okta Touch a.k.a. HTC Touch, but it really only sits on a shelve gathering dust.

Wednesday, 6 April 2011

Day 06 – Primary geek fuel (snack/drinks)

What ever is handy, really.

Typically an energy drink is involved.  Mainly V or Mother lately.  Sometimes I’ll drink Demon.  On special occasions I’ll drink Red Bull.  As a fallback of course, Coke is it!

As for snacks, anything goes.  Chocolate, pizza, corn snacks, pop corn… You name it, I’ll eat it.

So in the end there isn’t any real single snack or drink that stands out above the rest.

Tuesday, 5 April 2011

Day 05 – Quick nifty hacks you’re proud of.

I don’t need no stinkin’ hacks!

I was involved in creating a web application that was to have a dashboard as its main page.  This dashboard was built using web parts.  It seems like a good idea except they tended to be a little restrictive in how they looked and the customer had specific requirements to fulfil.

It took a lot of hacking the built in web part controls in order to change how they rendered, and it wasn’t always pretty but the result was the addition of a lot more flexibility in designing how the web parts looked.

I didn’t see the end of that project but I was proud of what I accomplished with that dashboard.

Monday, 4 April 2011

Day 04 – Greatest application written to date.

What defines “greatest”?

I don’t believe I can pin point this to a specific application as a whole.  An application is made up of blocks and a lot of those blocks are boring and sometimes a little monotonous and repetitive.

But some of those blocks are sometimes just pure awesomeness.

Either because they involved doing something new, or were particularly difficult yet I managed to break through and produce some gorgeous code.  Sometimes it is a particularly well designed and executed UI which works like a dream.  Or it could be because of some other equally satisfying piece of work.

It is generally called a science, but for me programming is a lot more like art.  I put a lot of effort into creating the best applications I can but they are not perfect and in a sense never complete, but they all have something about them that makes them special.

Is programming a reflection of life?

Sunday, 3 April 2011

Day 03 – What does you day job involve?

Going to work.

I work in a small team with Telecom NZ to build typically .NET based web applications to replace Access and Excel used internally by different business units within Telecom NZ.

I also develop and support a number of Excel macros and .NET desktop applications that interface with a terminal client to automate processes that transact against a terminal based application running within said client.

So my daily job typically involves building applications from end-to-end – from design to test to implementation and deployment, and to on-going support.  I am typically involved in every step of application development.

I design solutions.  I estimate the time and cost involved.  I build and test the application.  I deploy and handle the change requests and the manage incidents raised concerning faults with the applications I support.

Not all incidences are faults!

I also help steer my team towards best practices of development and selecting technologies that help us deliver better products for our customers.  In addition to this I also find tools and utilities to help me and my team mates to be more productive.  I either find something useful already fit for purpose, or write my tools or helpers to make life just that little bit easier.

It is a job I love and I cannot imagine doing anything else.

Saturday, 2 April 2011

Day 02 – Preferred programming language?

This is an ever-shifting line.

I currently prefer VB.NET but mainly because my last two jobs spanning six years basically dictated that choice.  But as time goes on I am starting to lean towards C#.

Of course VB.NET wasn’t always my preferred choice.  Previously, I worked predominantly in Java which I enjoyed and it helped that it was free and they were some very good IDEs for it that were free.

VB.NET is not the only language I work with.  The nature of the line of work that I’m in means that I’m versed in a number of different languages.  My main focus is web development so that means I work with HTML and JavaScript, and every application I work on has a database behind it so then there is also T-SQL in the mix.

So as time moves on, technology will advanced and my preferences will change.  I’ll most likely end up in C# some day as all the cool geeks seems to prefer it.  But maybe I’ll stick to my preference and not conform to most others in the .NET environment. 

Perhaps VB.NET is actually more geeky because it isn’t the perceived norm.  Wouldn’t that be a laugh!

Friday, 1 April 2011

Day 01 – Why do you consider yourself a geek?

I think therefore I am… a geek!

I look at the entry for Geek on Wikipedia to see what it has listed there.  This act is possibly a hint towards me being a geek all by itself but does reveal a number of definitions that I identify with.

Interests in technology and computing are apparently good indications of being a Geek.

My earliest recollections of being interested in computers was what was once called Standard 3 or 4, I don’t know what “Grade” they call it nowadays but I was about 9 or 10 years old – nearly 30 years ago.

Somehow I discovered computers and computer programming.  I do not remember how, but I began to read programming books.  Generally I think they tended to be aimed a teaching kids about computers and to program, but sometimes it would be quite serious textbooks.  I do not recall how much I understood, as most of it was pretty much way over my head at the time.

Also around this time, various stores in the neighbour mall had the latest computers on display.  The Commodore 64 being one of the most common on display with actually games running and available to try out.  I recall one game was some text based adventure game, and another was some white on black vector based shooter something like Asteroids.  I do not remember their names but I did spend a lot of time in those stores.

Then one day one store had an Acorn Electron computer on display but it wasn’t running any games, it only had its basic operating system available.  The best thing was I also had access to a programming book from the library on this very same machine and so I spent many an hour at this store copying in the programs I found in this book and seeing what they do – and I loved it.

It was a very sad day when the store eventually removed the computer from the bench they had it on display.

Why I did not grow up to found Microsoft or Google, I do not know but this was when I took my first steps towards Geekdom.

Thursday, 24 March 2011

30 Days of Geek – Starting April 1st 2011

It seems I’ve been conned into participating in this challenge.  Thanks @NZCoderGuy, @JamesHip and @CyrisXD!

It is going to be hard.  I have a terrible habit of procrastinating like there is lots of tomorrows.  So trying to post something everyday is going to be very, very, very hard.

So, I’ll give it my best shot and will hopefully be able to keep up with the schedule below.

Day 01 – Why do you consider yourself a geek?
Day 02 – Preferred programming language?
Day 03 – What does your day job involve?
Day 04 – Greatest application written to date.
Day 05 – Quick nifty hacks you’re proud of
Day 06 – Primary geek fuel (snacks/drinks)
Day 07 – Preferred smartphone platform. And which do you use?
Day 08 – Preferred method of communication with humans
Day 09 – What OS/distribution do you run?
Day 10 – Picture, screenshot and specifications of your primary computer.
Day 11 – Favourite hacking environment – music, light, seating, etc
Day 12 – What area do you want to expand your skills into?
Day 13 – How did you become such a geek? Career? Personal interest?
Day 14 – Favourite computer conference?
Day 15 – Earliest geek experience
Day 16 – First computer you’ve ever owned & your favourite ever.
Day 17 – Post a useful HOWTO to solve a challenge you’ve come across recently.
Day 18 – Most cringe-worthy geek moment
Day 19 – Most hated computing environment.
Day 20 – Where do you stand on Internet Censorship?
Day 21 – Favourite thing & worst things about working in IT?
Day 22 – Release some software under an open source license that you haven’t released before.
Day 23 – Post a review of an application that you use.
Day 24 – How do you feel about Open Source vs Proprietary software?
Day 25 – Microsoft – friend, foe or other?
Day 26 – Apple – friend, foe or other?
Day 27 – Fix a bug in some open source software and commit the patch
Day 28 – How many computers lying about the house?
Day 29 – Looking back (at geek life), would you have done anything differently?
Day 30 – Where do you see technology advancing in the next 20 years – and where will you fit in?