Saturday, August 13, 2005

Test Driven Development; Microsoft vs. OpenSource

So why pay Microsoft when you can get the tools for free? Currently, I am team lead for a very talented group of people. One of the things the team has agreed to do is embrace eXtreme Programming (XP) and Test Driven Development (TDD). We have been making awesome progress on all fronts. Every day we deepen our understanding of XP and we have solidified our build, test and deploy platform. Having a TDD approach will assist us to become more nimble in meeting our customer needs while ensuring we have a quality product through time. Another interesting thing we are doing is using Visual Studio 2005 (VS2005) and .NET 2.0 for our development platform. Yes, they are in beta, yet we are wanting to embrace the .NET platform for the next major release of our server product so we figured we would jump right into the latest toolset. What we have found is that the OpenSource tools for our TDD work very well in combination with VS2005. We are using; MSBuildNantNunitNdocNcover and CruiseControl, and we hope to integrate FxCop soon. Having all these tools working together will allow us to focus further on the business needs and not the technology implementation (and if our refactoring efforts break anything…) To get better insight into using these tools I do suggest you look at their respective sites and do some further reading, in particular; http://www.codeproject.com/dotnet/tdd_in_dotnet.asp this is an excellent introduction in using Nunit and Mock objects. So, now I get back to the title of this entry, why spend the additional money on the Microsoft Team Services (which provide you the TDD tools) when you can get it for free through OpenSource?

Saturday, July 30, 2005

singleton pattern

So how cool is that. I was running through one of the new MSDN enterprise application blocks in the debugger (IMHO, the best way to get to know a piece of code). And I was stepping my way through and what do I see but an URL to a blog entry explaining the singleton pattern, and why it was utilized in this particular situation. Some of the best sample code I’ve ever seen…

Thursday, July 28, 2005

./sqlexpress

I love diving into new technology. So much to learn, so many cools things. A whole lot of reading going on. So I’ve installed Microsoft Visual Studio 2005 (VS2005) and am wanting to work through a number of the samples. In particular, samples related to database / n-tier development. And VS2005 has a lot of new features for databases and database development. But when your learning you need to start somewhere.  And I decided to start with the Microsoft MSDN Enterprise Library June 2005.  This is a library of source applications for you to take a part and learn from. So I download the files, and begin to set things up.  This is great, so to get the database samples running I need an instance of SQL Server.  And fortunately, one comes with VS2005, it’s known as SQL EXPRESS or MSDE (by its previous encarnation).  One problem it has no GUI. So how do you create databases, tables, etc. Well you could do it from within VS2005. But I’m a database guy at heart so I want my query window. Again fortunately, there is Express Manager a free download.  If you used the default VS2005 default setup you need to logon to a server instance of SQL EXPRESS. This one got me, I was thinking “localhost” would work, nope! I ended up discovering that the instance you logon to is.\sqlexpress (that’s dot slash sqlexpress) there you have it. So much to learn, so little time… fun, fun, fun…

Wednesday, July 13, 2005

Open Courseware

Evidence toward a trend. Over the last three years I have developed the though that curriculum should be developed once and used by everyone. At this time, on the planet earth, there must be a huge duplication of course material and curriculum. I wonder how many 1st year spanish courses have been developed, and how many more will be developed. Or what about 1st year calculus. The duplication of course material and effort in creating and delivering this material must be staggering. What a waste of Masters and PhD educated peoples time. Why not just develop the course material once and have it shared around the globe? It would all become a part of the creative commons. It could all be a part of a SCORM type standard which uses a UDDI type directory service for the discovery of the course material required by either student or teacher. We can see the beginnings of this with the opencourseware site of MIT. This isn’t a matter of if a global repository of courseware will be available, but when it will be available…

Wednesday, June 22, 2005

Agile Database Techniques

One in every 10 technical books I read is different from the rest.  And recently I’ve read some good ones, in general they all lived up to my expectations.  These books include;
The book that stood out was titled Agile Database Techniques by Scott Ambler.  Why did it stand out? It exceeded my expectations. I was expecting a database book that spoke to normalization, solid lifecycle and building a database schema that could accommodate agile developers.  What I got was a book describing agile methodologies applied to database design, development and maintenance. Databases, database administrators (DBAs) and the enterprise culture around database development doesn’t traditionally lend itself to agile methodologies.  This book addresses this gap and has chapters dedicated to it. The book is a mature look at how agile techniques can be applied to using relational database technologies within agile development teams. All agile team members should read this book.

Wednesday, June 08, 2005

Software Architecture needs Process

Today we were discussing staff build up for a company I am involved with.  Hiring staff is an interesting and very complex process when you think about it.  Finding the right person to fill a job is very hard.  Particulalry when you are building upon a staff of a 24 person start-up.  Getting the right people, in the right job, at the right time, can have a huge impact on success.  All this said, one of the other leads asked me what I wanted to do.  It was an easy question to answer; “Process and architecture, I want to ensure we have a good process in place so I can start influencing architecture. Without process how can I ensure that the architecture I drop in at the begining of the development process, pops out at the end. You need process to implement architecture.” Quite a brash thing to say, and true.  It would seem that theCarnagie Mellon Software Engineering Institute would agree with me.

Thursday, May 12, 2005

Write a business case

 I’ve been a software developer for over eighteen years.  I’ve seen a lot of success during that time, I’ve also seen failure.  As many of you who follow my blog know, I have a strong belief that software quality has a positive relationship with start-up success.  I have presented information to support this belief.  What I also believe is that to have software quality you need strong leadership and a well articulated product vision.  The whole company needs to know where the product is going and why. This allows people to work hard and with creativity, yet also know the bounds of their endeavour. They also know what is on the horizon and what the technology needs to be able to do to meet product and customer needs. Writing a technology strategy is not easy task. It takes an understanding of the future, and that’s tough. What can help with articulating the company vision is to write a rock solid business case.  And their a couple of places to help get you started.  First, query your government, they are always interested in encouraging innovation its good for the national economy.  Check out the Government of Canada’s template for “Creating and Using a Business Case for Information Technology Projects“.  Also, there are always a number of companies who put together competitions for innovation. Check out Telus’ offering in support of the technology start-up.  Either way, do your homework, create a strong vision, articulate your business plan and don’t get bogged down with it, start running… 

Friday, May 06, 2005

Bidirectional Traceability

I was busy studying for one of my Masters courses and I’m having to describe a teaching scenario that I have utilized in the last few years and identify if it would be considered behaviorist, cognitivist or constructivist.  All very interesting and it got me thinking about a course I taught about software development methodologies.  This was a two term course where we covered Rational Unified ProcessMicrosoft Solutions Framework and Capability Maturity Model.  And yes, a great course in my mind. I was reviewing the learning outcomes of the course and reflected upon them.  I came to the conclusion that two of the most important factors in methodology for software development are; strongly defined roles and responsibilities and bidirectional traceability.  The roles and responsibilities keep people motivated cause there is no question to what they have to do and the traceability forces quality.  The course I taught would be considered constructivist. It build on ideas taught in the first course and forced the students to participate together in problem solving activities.

Wednesday, May 04, 2005

Look at AJAX and Greasemonkey

So I’ve been teaching a course on ASP.NET.  And it’s a funny thing that after all my time spent learning about code behind forms, server side controls and Microsofts’ view of the MVC pattern I can no longer see the benefit of ASP.NET. Just to note I was a huge ASP fan! And certified in four MS certifications.  I’m a believer in XML / XSLT and feeding these via business tier (or façade tier) components.  All this pushes me into AJAX and Greasemonkey.  AJAX is Asynchronous JavaScript And Xml. gMail uses it and so do other popular sites. Its essentially JavaScript acting upon the browser DOM with provided XML data to render the UI. It allows the browser to do things against the server without hitting the submit button. Cool and very, very powerful when you wrap your head around it.  Next is Greasemonkey, this is a huge innovation which could render business models ineffective, or so some think.  Greasemonkey is best explained by plagerizing the mozzila site, “Greasemonkey is a Firefox extension which lets you to add bits of DHTML (”user scripts”) to any web page to change its behavior. In much the same way that user CSS lets you take control of a web page’s style, user scripts let you easily control any aspect of a web page’s design or interaction.” Either way, the UI is going through another iteration. In my mind, its one of the technologies which changes most frequently. Enjoy the added user experience this iteration is providing.

Wednesday, April 27, 2005

Technology won’t be proprietary

The rate of technology change is staggering. It’s faster now than it’s ever been. The internet is becoming a utility like our electricity, water works, roads, etc. It’s readying itself for it’s teen years. And you think it’s being a toddler was exciting. Just you wait. OpenSource will become mainstream popular. Keep in mind OpenSource will still only be a teen and in the beginning of its teens at that. What will be really interesting is when OpenSource discovers its place in about five to seven years, just as it becomes an adult. All this technology advancement will force more and more technology infrastructure into becoming utility. It happened to the backbone, it’s happened to TCP/IP, it’s happening to the net, now we are jumping up a level. Applications are also becoming utility; gmailthunderbird,firefox. The next major step will be identity management and the infrastructure to keep all things personal. This is where OpenSource will begin to make it’s presence felt. People will not want their identity management to be held by anything proprietary. So people will elect something closer to an OpenSource model. What that is, I don’t know. What I do know is the utility applications infrastructure will become a part of our everyday life, like roads and electricty, and it will not be proprietary nor will it be pure OpenSource.

Wednesday, April 13, 2005

VB, Refactoring & .NET

So as I settle into my new job I am looking into many things. Mostly focused on continuous improvement, the SDLC process, having set iterations (heartbeat) and deeper quality. Given the bulk of the server code is in VB6 I’ve been searching for artifacts to assist in the inevitable move to .NET. I came across this great refactoring description for VB. Enjoy…

http://www.codeproject.com/vb/net/Refactoring_elixir.asp

Wednesday, March 23, 2005

Software economics and code quality

So, I heard back from the NRC after I asked about software quality, start-up success and CMMI. They got back to me very quickly with a good nugget of information;
I just have one comment… using CMM-based assessment as a proxy for quality is not a good idea. CMMI is a process model, and as such does not really address product quality (it just assumes that heavy process = quality, and advocates measurement).
So I continue my search for the truth about start-up success and software quality. I just finished re-reading a great paper named “Big Ball of Mud“. The paper is all about softwares defacto implementation architecture. What i have gleaned from this paper is “use an XP style methodology and refactor, refactor, refactor.”

Wednesday, March 09, 2005

NRC and Software Economics

I think I may have stumbled across a source of information for my software quality and start-up success relationship query. If you have been reading my blog you will know by now that one of my threads of activity is looking for quantitative evidence that software quality and good software engineering practices have a positive influence on a software start-ups success and ROI. Well, I’ve become frustrated with the challenges I have encountered in not finding quantitative evidence. So, I started thinking I should initiate a formal research project, and given my past positive experiences with IRAP and the NRC I could approach the NRC about my query as a research project. So during my searching of the NRC web site I found that they already have such a project underway. I’ve initiated contact, I’ll keep you updated as I discover more information.

Saturday, February 19, 2005

Execute, execute, execute

So I’m still searching for evidence on the positive relationship between software quality and technology start-up success. And I found some more, It was anecdotal evidence, but it was very strong evidence to say the least. Today, I was priviliged to speak with a fellow who had had a couple of start-up successes in the wireless world. He described to me how he’d worked with some very experienced software engineers. They were rigorous in their engineering discipline, everything was documented, architecture though to code modules. Nothing was built without proper design and test harnesses. Often the test harnesses were more extensive than the actual module. All this rigor paid off. When ever investors or potential partners did their code level due diligence, they were in awe. Essentially the code quality was better than the already established potential investor or partner. Each module was so solid, their code base became like using lego. If they needed to shift the company direction, they were able to inherit 80% or more of the code base. If they had a potential customer they could redeploy within hours to meet the need. The person I met with said it’s all about execution. To be successful in a start-up you have to be nimble, and you have to execute, execute execute. Having rock solid, modular software allows this.

Sunday, January 16, 2005

OpenSource vs Microsoft conundrum

Well it’s happened, after 8 years as a Microsoft disciple and most of these as a Microsoft certified professional I’m seriously considering open source. What happened? How did I get here…..? Well, I’m both a technical architect and a teacher. I’m bringing these two disciplines together into being a technology savvy instructional designer. And after I started to network and asking around, it seems that the open source world has a greater foothold in the corporate training and academic arena. Now, I’ve known UNIX and it’s derivatives have mostly captured the halls of academia but it also seems to be pushing out into the corporate and training world. Some may balk at this last statement, and if you do, please provide me with reference sites where the Learning Management System (LMS) or the corporate courseware is a complete Microsoft solution. Either way, this is what I’ve learned; and I have to give thanks to Scott Tearle of Lambda Solutions for a great conversation over lunch about these matters. I’ll break what I learned into the server side and the UI side. I have this separation because all training and learning processes need administration (i.e. the LMS) and this admin is usually somewhere on the corporate/academic network and the end-user learning content has grown up to be rich interactive media, quite a different beast than the administration needs. So, on the server side their seems to be considerable growth in utilizing LAMP (Linux, Apache, MySQL, PHP) Servers to host the LMS. One of the main players in this is Moodle. Moodle is an open source LMS written for the LAMP Server (and other server environments, people say it runs fast and for the lowest cost on a LAMP server). The point is that an open source server application is quickly gaining considerable acceptance. Moodle is very well supported as an open source application, with a strong and active developer community. Learning about moodle is high on my list of to do’s as I deepen my skills as an instructional designer. On the client side (or gaming/simulation side) it’s Flash, Java, Python, C, C++, Etc. Either way, the client side is certainly not dominated by Microsoft technologies, and again, there is a healthy and growing community of opensource gaming/simulation engines, as evidenced by Panda3d. So there you have it, my conundrum; OpenSource or Microsoft. My intuition tells me open source will, in the long term, dominate. Their are many reasons for this belief and that’s a blog entry in itself. So, given how my current days unfold I will be living my conundrum. I’m persuing my Microsoft certification as a DBA and a .NET programmer, I’m learning flash and actionscript and I’m booting up a LAMP server to learn moodle.

Wednesday, January 12, 2005

It’s time to get back to work

It’s been a great sabbatical, but it must come to an end. Three months of learning, research, home renovations and gearing up for a new start. At the end of September I took the opportunity to take a break after 16 years of hands-on software development, database administration, project management, analysis and design and technology architecture. It has been a great time. Over the last three months I’ve done a whole lot learning and research about open source, online learning and coding in actionscript. I also managed to move the laundry room downstairs and have changed the old laundry room into another bedroom. The only thing is I’ve now become restless for work. I’d love to utilize my 16 years as a software architect, developer and database specialist and leverage everything I learned while getting technology degree in databases management systems into technical employment in the enterprise or educational setting. So if you know of some architecture or database work within businesses associated with content distribution or education it would be most appreciated. I’m an excellent solutions architect, enterprise programmer and DBA with extensive experience working on enterprise systems, multi-tier software development and data warehouse projects. If you any needs or leads please send an email; peter@rawsthorne.org.

Sunday, January 09, 2005

Digital natives; a note for parents

If you have children born since 1984 you may want to consider this whitepaper written by Marc Prensky to gain insight into the forces which will influence your children. For better or worse, these could be a big part of your childrens reality. Read, reflect and prepare yourself.

Monday, January 03, 2005

Gratitude Measure

So after my new years resolution musings I set out to see if I could find a measure for gratitude. The short answer; nothing was easily available. There was a lot of great reading, yet there was no measure. I found something great from Henri J. M. Nouwen. And I liked it because I have always though many things in life are a choice. Here is what I found;
Gratitude as a discipline involves a conscious choice. I can choose to be grateful even when my emotions and feelings are still steeped in hurt and resentment. It is amazing how many occasions present themselves in which I can choose gratitude instead of a complaint. I can choose to grateful when I am criticized, even when my heart still responds in bitterness. I can choose to speak about goodness and beauty, even when my inner eye still looks for someone to accuse or something to call ugly.
Also, the Buddhist tradition speaks of gratitude. And if you are interested, I suggest a good internet search and some time reading on gratitude is a great thing. Anyhow, I’ve found no direct measure for gratitude so I’m going to stick with my daily gratitude check… Happy New Year!

Saturday, January 01, 2005

Can you measure gratitude?

Last night during our new years celebrations the resolution question came up. Most people wanted to do something like run four times a week or quit smoking…. All very admirable, I just wanted to be more grateful. They retorted, “you can’t measure grateful!” I replied, sure you can, “At the end of every day I’ll ask myself if I was more grateful and gracious in my actions, and if I was I’ll give myself a check for a grateful day. At the end of the year I’ll add up all the grateful days and see if I was more grateful.” All, but one, looked at me with furrow brow. I realized, all but one, didn’t get it. But I insisted that I will follow-up with their retort, can you measure gratitude? For myself it doesn’t matter if I measure it, but for the rationalists I must find the measure. Or maybe not, gratitude is something you must find for yourself…

Friday, December 17, 2004

e-learning in British Columbia, the grass is very green

Whenever I have a chance, I do some reading and research for the learning technology roadmap I am building for my local school district. I came across these two documents in the last month; “Learning science and technology R&D roadmap” describes the R&D tasks identified to encourage the revolution we need in how we teach and learn. And “The e-learning sector in British Columbia” describes how to grow and market e-learning within our province. This second document also has a great roadmap on the convergence of elearning technologies with some financial projections for the e-learning industry.