February 2005 - Posts

Isolated Storage

A while ago I blogged that I discovered that attempting to write to app.config was a bad idea. The officially sanctioned solution for per-user settings is writing to the user's profile directory which is accessible in .NET by using Isolated Storage (IanG wrote a good article about this).

Up till my earlier blog post I believed that the app.config file was a good place to update settings that might be changed at runtime. I even adapted code from a Code Project article "Save and Restore User Preferences" to help me read and write settings easily, added caching, and used it in all my applications. The advantages seemed to be that the app.config file is XML, so it was easily read and written, and I knew the file would exist as it's installed with apps. But, it turns out that app.config is actually a deployment kind of file. The clincher came when I installed an app on a user's PC and found they could not write to the directory where app.config was stored...so, changes to it, especially per-user settings, should be stored using Isolated Storage.

There's a few good articles to get anyone else interested in Isolated Storage started:

I eventually settled on Rocky Lhotka's “Adventures in Visual Basic .NET: Storing User Configurations” solution which I pretty much used as-is. It takes a little bit more thought to set up than some of the other suggestions (but is strongly-typed), and having one-line Save & Restore methods is a real bonus, plus I can change the storage to INI files or the registry if I really want.

OT: Windows Plays Soccer

It's probably done the rounds already, but I found the following quote pretty funny (via Random Developments, originally posted at Max Barry's blog):

Windows plays soccer; Linux plays rugby. In soccer (sorry, to me this is football), whenever one player makes the slightest contact with another, he collapses to ground, writhing in agony and clutching at his ankle. Everyone gathers around and looks very worried until the referee holds up a yellow card and then—amazing!—the player springs up again, completely cured. So too Windows: as soon as anything goes wrong with any program, the whole thing collapses in a screaming heap, and requires a reboot. Linux, on the other hand, shrugs off application failures like a rugby player ignores broken fingers. Programs crash, but Linux keeps going.

Tee hee hee...

Get online or get got

Brendan postulates that the Internet is putting companies out of business, and I agree with him (the title of this post is a quote from him). He uses the example of shopping in person at a bookstore vs. shopping online. I know I personally enjoy wandering around book-laden shelves, but when I'm on a mission I find Amazon.com a lot quicker and more complete. The sad thing is, here in Melbourne I don't believe there's any bookstores with an effective online shop. Even Borders just has a crummy contact page.

For Christmas last year, Olivia bought me a Chicago Bulls DVD set that I'd seen here in Melbourne for over $120 AUD. She sneakily ordered it some weeks ahead from Amazon for around $50 AUD (even including shipping). My normal preference is to buy local, but not at $70 for the privilege!

At least some businesses have got it right with a searchable inventory online. Two examples that I have personally purchased stuff from are KA Technologies because their shipping was reasonable, and EzyDVD because I could see what they had in stock and their prices were pretty good too. Taking the good example of these stores I can see that Brendan's quote of “Get online or get got” is not too far away...

About Me

One thing that's missing from my blog is an “About Me” page with some current information. Not anymore!

Me

My name is Thomas Williams, and I live near Frankston, Victoria, Australia. I have a wife, Olivia, whom I married in 1999, and two children - 3-and-a-half year old TJ (his name is actually Thomas but he gets TJ, which stands for “Thomas Junior“) and Maya Marijke, who was born on New Year's Day 2004.

I studied at Monash University and have a degree in Computing (completed with a High Distinction average) and a degree in Education (completed with a Distinction average), which I think qualifies me to teach up to year 10, or higher if I teach in IT. I completed Uni at the end of 2000 and consulted for a year until I started working for a hospital on the Mornington Peninsula.

My work involves writing software to process large amounts of data for enterprise data sources, and I work primarily in Microsoft technologies including SQL Server 2000, Visual Studio 2003/Visual Basic.NET, Access and Excel. I usually take projects through from analysis gathering to design and deployment; in technology terms, from setting up the database to putting together a VB.NET UI, which allows me to learn about different elements of development

I am starting to get involved with the Melbourne SQL Server Special Interest Group which suits a business need but more so is a great chance to socialise with other IT people. Interests outside of work include playing basketball, teaching myself guitar, playing with my kids and reading. I am also part of a small Christian church near where I live.

Review: Microsoft Security Summit, Melbourne (Part 2)

This follows on from Part 1 which ended at lunch time...

After a Microsoft-provided lunch and a morning spent in Visual Studio 2005 and Team System, I was looking forward to the afternoon sessions on SQL Server 2005, all hosted by Greg Low. I have heard Greg speak before and I gave him a big rap to everyone I talked to, and once again I felt he didn't disappoint.

Greg took 3 SQL server 2005 sessions - "SQL Server 2005 Overview" (aimed at tech kind of guys and perhaps IT managers as well as developers), "SQL Server 2005 Administration, Scalability and Reliability" and "Introduction to Programming with SQL Server 2005" (both aimed more at developers). Although I had heard the material from all 3 sessions at different times before with the SQL Server SIG I still found it interesting. For me, hearing someone speak on the next version of SQL Server for a couple of hours is better than me playing with it myself! Plus, I don't get the time to just "try out" some of the new cool things Greg talked about, even when I'd installed an early beta at home.

After the day ended the plan was for some of us (inspired I think by Will) to meet up at the MSDN Connection Lounge and head out for dinner. There was about 20 of us including a couple of Microsoft guys - to see the pictures and names of those in attendance, visit Matt's blog. Matt did a great job taking photos on his beautiful Nikon, for a while the camera was appropriated by Michael and I'm sure that's how a photo of the barmaid ended up in Matt's mugshots list!

It was really great to get around and talk to the geeks over drinks and dinner. I'm amazed at the diversity within IT, the different work people do, and especially enjoyed meeting the non-developers. Everyone got along really well, and some even suggested a regular event. To those guys who I did meet, in no particular order - Tejas, Nirav, Dr. Pete, Matt, Jeff, Michael, Greg, Bill, Henry, Damien, Mayur, Vinit, Will, Adrian and Jarrod - and it was nice meeting you; to the couple I did not get to talk to, next time!

Others are posting about the event too -
Tejas: http://www.itejas.com/index.php?title=microsoft_security_summit_aamp_geek_dinn_4&more=1&c=1&tb=1&pb=1
Matt: http://sublimesoftware.blogspot.com/2005/02/ms-security-summit-review-feedback.html
Will: http://will.id.au/blog/archive/2005/02/22/melbourne-geek-dinner-and-security-summit
Matthew Cosier (who I didn't get to meet, but Matthew, I have read your blog before): http://weblogs.asp.net/autocrat/archive/2005/02/23/378716.aspx

Update: Greg has made slides from all 3 of his sessions available at http://msmvps.com/greglow/archive/2005/02/26/37007.aspx

March 2005 SQL Server SIG

The March 2005 SQL Server SIG has been announced for Melbournites, happening on Tuesday March 15th. The topic is “Performance tuning methodology - SQL Server 2000/2005” and is being presented by Greg Linwood. Registrations can be made at http://www.sqlserver.org.au/Events/RegisterMeeting.aspx?EventId=62.

Review: Microsoft Security Summit, Melbourne (Part 1)

Yesterday (Tuesday February 22nd) I attended the Microsoft Security Summit at the Melbourne Exhibition & Convention Centre. It was an all day event, starting with the keynote at 8:30AM (which started at more like 8:50 due to the number of people registering) and ending when Greg Low let out his "class" at 5:30PM.

The keynote was delivered by the former head of Microsoft Consulting Services and current Microsoft Vice President Bob McDowell. Bob was a really interesting speaker, who had a lot to say on how IT can deliver value to business (in keeping with his latest book "In Search of Business Value"). I feel that this question - how do my efforts translate into business value for the hospital I work in - has bugged me for a while, and it was refreshing to hear it discussed openly by this professional guy who's obviously given it a lot of thought. He tied in the concept of security as being critical to business operations and IT, and he also had lots of interesting stories and anecdotes about life within Microsoft (a company that has a "vice president of mice" for the MS mouse and that makes $125 million in one weekend off the release of the game "Halo 2", yet whose biggest contract is with the US Army for $700 million).

After that I followed about a third of the people upstairs for the MSDN Track "Visual Studio Team System Overview", presented by Melbourne's own Jason McConnell. Jason's session  focused on a new addition to the upper-end product line of Visual Studio, which meant that from the outset I filed his presentation in the "interesting, but not essential" basket as I work with VS 2003 Standard Edition in a very small team, and I don't think Team System will make it into the lower-end products of Visual Studio 2005. Jason discussed VS 2005 beta software and his presentation was good, but it had a lot of slides (30+), some with paragraphs and paragraphs of text which made it hard to take it all in, but he did however do 2 or 3 demos which covered the written material anyway.

We then had a break for morning tea and a chance to check out the exhibition hall. I also wandered over to the "MSDN Connection Lounge" which I had assumed would be totally bogus as membership is free, but which turned out to be an under-utilised (by the masses) and fairly quiet spot away from the crowds. There I got to meet some other developers and IT guys and catch up with the one or two people that I already know from the SQL Server SIG. Microsoft also put on coffee, food and drinks for each meal break, which is a big effort considering the number of people that attended!

Following morning tea was the MSDN session "Tools for Quality Code" with Darryl Chantry of Microsoft and Sean Salisbury of Compuware. Darryl started with the new tools shipping with VS 2005 to perform unit tests and execute FxCop rules (and other things) to get better quality code, but it was Sean's demonstration of some of the Compuware products like FaultSimulator and SecurityChecker that impressed me. FaultSimulator allows you to simulate any kind of error, like disk full, low memory or loss of network connection both inside the debugger and on a compiled application without changing your code and without affecting the operating system. SecurityChecker checks your ASP.NET application for possible attack angles and gives you details, back to the line of code, on how you can fix them.

I met up with my boss at lunch and also chatted to Tejas and his mate Nirav (who doesn't have a blog). I didn't go to a session directly after lunch but instead allowed time to really check out the exhibition hall again (and enter all the free competitions from the vendors).

Stay tuned for Part 2...

My Programming Experience

I've been in computers for only 8 years (and that's counting 4 years of Uni), so I feel like a bit of a geek baby when talking about my “experience”. But Rocky Lhotka and Geoff Appleby (and not knowing either of these guys apart from their posts, I reckon you can mention the two of them in the same breath) talk about their language learning progression, so I can also talk about mine over here in junior corner.

I tie this information into the fact that recently at the Melbourne SQL Server SIGs I have been asked by two separate people whether it's worth going to Uni. The short answer is that, yes I believe it's worth it, and no I can't judge where I'd be today if I hadn't been. Perhaps my language “exploits“ below will help explain.

My languages (warning: long post ahead) -

C/C++: My degree in Computing had a total of 3 units of programming, which I did consecutively (including one semester of summer school) in my first 3 semesters. I really enjoyed programming. We used a DOS-based Borland IDE except for one semester where we used VI in programming C++ for Unix (for that semester, everyone cheated and used the Borland IDE in Windows, checked to see if their program would compile, and then copied it across). In these classes we never touched anything remotely GUI. I would say that I learnt about stacks, recursion, pointers, functions, black boxes and loose coupling, logic, and general constructs like IF...THEN and SELECT CASE.

I remember enjoying the “Unix” class as the assignments were set out so that the paper described how to get maximum marks, plus bonus points only if you attempted/completed all the other questions. This style of task suited me just fine. I got 20 out of 20 for the assignment, and got all the bonus points although I could still only get 100% in total!

I would not categorise the practical work I did in those classes as “real world“, and I have only done a tiny bit of C++ work since, so I wouldn't call myself fluent in C or C++.

SQL: Again, at Uni I took a couple of classes on relational databases (we used Oracle) and learnt SQL. At first, SQL was very difficult to learn. I missed the procedural style of C++ and didn't follow along on the set-based syntax. I was struggling with the first assignment, reading extra SQL handbooks to try and absorb something when finally a friend of mine sat down with me and went over some of the logic and made it very clear and understandable (thanks Amanda!)

I went on from those earlier classes to eventually consult outside Uni in projects using Access, so I consider myself reasonably good at SQL and it's an indispensable part of my work with SQL Server 2000.

VB5/VB6: After 2nd year at Uni I was fortunate enough to get a part time job while I studied at a small computer consulting firm in my area. They exclusively used VB, and I taught myself VB6 and worked there 2 or 3 days a week doing all kinds of stuff. I think working with GUI programs taught me about consistency - for example, simple things like re-ordering items in a list box (we've all seen programs that do it, but catching all the possible cases when you include add/delete functionality is fairly time-consuming), tab order, and logical menu layouts. At that time we used the VB controls out of the box, I think the company had a very old (VB4-era) suite of tools but I remember demo'ing the VB6 toolbar to my boss and he was suitably impressed, after using Windows 3.1 look-alike tools.

VBScript/ASP/Office macro programming: I separated these langauges out from VB6 because I experienced VB6 from a “Windows Forms“ kind of angle (drop a control on a form, wire it up) whereas VBScript and ASP drift further back to the procedural and logic realm of programming. It was fairly easy to pick up ASP after VB6 and I think I'd done some consulting work with it before I took a very basic 3rd-year class on “Web-enabling Access Databases“ at Uni. I found that ASP was in high demand and after I left Uni I worked on a project for 8 months in ASP before starting full-time at the hospital where I'm still at now.

HTML: This is the front-end to any programming you might do with ASP, but it's a language in and of itself. I still prefer to go the macho way and hand-code HTML and CSS with HTML-Kit or Web Matrix. Also learning HTML lead me on to learning and understanding XML. We did do one class of web design in 1st year at Uni, but I went on by myself to continue to learn HTML.

Javascript: This goes hand-in-hand with ASP and HTML. I am self-taught, not very good with it, and when I do use it, rely heavily on a handful of Javascript reference sites.

XML/XSLT: At one stage I developed an online reporting web site with SQL Server, ASP and XML. I used SQL Server's FOR XML clause from stored procedure calls and then used some XSLT trickery to make dynamic reports in a browser, all tied together with ASP. This approach actually lasted me for three separate applications. XSLT was a hard nut to crack, there didn't seem to be a lot of documentation and the Microsoft versions didn't always adhere to the standard (and were constantly changing), but I like to think I made a good go of it.

VB.NET: I started learning VB.NET by developing a small web project to allow people to enter and review budgets. I did this with a trial version of Visual Studio.NET 2002 and completed it in 4 weeks. From then on, all my new projects have been in VB.NET, with lots of support from controls at CodeProject and vbAccelerator and of course articles and resources from blogs.

Although I have dabbled in C# and am almost a frequent flyer at this C# to VB.NET utility, I don't believe that I will be undertaking a project in C# so the incentive to learn it remains at “hobbyist“ stage (since I am the only “programmer“ in my department I don't get any crap over VB either!)

I think my level of technical competence has picked up too, say in object-oriented programming and n-tier solutions, compared with my VB6 “all logic in the executable“ days. I am happy with the way VB.NET is going (and I feel like I'm at least partially keeping up!)

 

Update: I noticed also Paul Vick, a famous VB blogger, writes about his language history.

Review: February SQL SIG - Overview of SQL Server 2005 Business Intelligence

Last night (Tuesday February 15th) the Melbourne SQL Special Interest Group (website at http://www.sqlserver.org.au/) kicked off again for the year. Peter Myers from Tenix Connections presented specifically on SQL Server 2005 Business Intelligence which is right in my line of business; the rest of the year promises a couple more topics on BI in SQL Server at the SIG, which is good news as it gives me a head start on the upcoming, yet-to-be-released version of SQL Server.

Peter presented really well - he obviously knew his stuff - and it was pointed out that he had “nearly every Microsoft qualification there is” including the Microsoft Certified Trainer, so he was well qualified to speak. He spoke on Microsoft's new BI model called the UDM or “Universal Dimensional Model” which replaces the concept of “cubes” under Analysis Services 2000 (although physical cubes still exist in the new Analysis Services, they are just far more feature rich and flexible).

I have had the dubious pleasure of using Analysis Services under SQL Server 2000 in the past and we nearly built a web-based reporting system using XML and ASP on it. After Peter's slides and demo (which can eventually be found at http://www.sqlserver.org.au/meetings/melb/), I feel like the new Analysis Services is comparable to watching color TV after only having known books. Like DTS, the development tools have been re-written from the ground up and are developed from within a Visual Studio-like shell. Other improvements that Peter mentioned were the ability to incorporate business rules and KPI's into cubes, the ability to use multiple fact tables (no more virtual cubes), the ability to use the same dimension on two different axes (no more virtual dimensions), better authorisation options including Windows groups and more processing options, including scheduled & automatic MOLAP, right down to the basic ROLAP where data is kept in the relational tables.

Peter started with one of the better overviews of Business Intelligence I have seen, covering some of the key concepts like data warehouses, data marts, and cubes and the problems that BI needs to address like multiple data sources, data integrity and the desire to often not mess with existing systems. He also showed how SQL Server 2005's improved toolset handles the different stages of BI, from integration of data sources (called Integration Services, the old DTS), to analysis (Analysis Services) to finally reporting using Reporting Services.

I reckon the presentation was aimed at more the DBA, which is my part in BI at work. It will be interesting to see what sort of client tools & controls to help home-grow user interfaces are available when SQL Server 2005 ships. I know in my situation, users are very familiar with Excel and want Excel-like powers from my reports. Some users have even mastered pivot tables (which I personally think are great for their flexibility and analysis power) and I'll be interested to see how Microsoft plans to get tools into the hands of the masses - will it just be through Reporting Services, or will Excel get better as well?

Overall a good evening and presentation. I got to meet a few new people like Chad the ColdFusion lad and someone even admitted to reading my blog (thanks Grant!)

More on BlogMap

After posting my BlogMap I thought I'd go find other bloggers from around my locality (Melbourne, Australia) by using Chandu's Blog Search page and entering my location.

The results are returned as a map (der) with an “X“ marking the spot of bloggers (13 so far). I asked Chandu if a list could be returned of all the bloggers in Melbourne, and it can, using the “blogapi”. He sent me a query to get an OPML file for all bloggers within a 20km radius of Melbourne:

http://www.csthota.com/blogmap/blogapi.ashx?method=local&place=melbourne&distance=20

Great work Chandu, this is exactly what I was after!

My New Mouse

I got a new mouse last week. Here's his story (I shall call him Mousey, and he shall be my Mousey...)

About 8 months ago, my boss and I had a discussion regarding me getting a new mouse for my PC, which ended with him telling me to pick one, and he'd order it. I scoped out various mice and at that stage decided to wait for the then-upcoming MS mouse with vertical and horizontal scrolling.

About 5 months ago (either I was still mulling over my decision, or I'd forgotten completely about it) I started to get wrist soreness that worsened whenever I used a mouse at home or at work. My doctor recommended some anti-inflammatory cream which I used half-heartedly, because the pain was only present when “mousing“ and the cream didn't really help.

I was in shock that I'd get a wrist ache - I considered myself too fit & strong to be irritated by some simple repetitive wrist movement. But then I admit I have bad posture and bad practices - often I sit at my desk for lunch, I don't wear my glasses unless I get a headache from looking at the screen, and sometimes I hunch over the keyboard and don't move for 4 or 5 hours when I'm in the middle of a big task...and that's got to have some side effects!

I started looking at ergonomic mouse designs but, to my frustration, could not test drive any as our local computer shops didn't stock them (I especially wanted to try out the Evoluent Vertical Mouse). I finally settled on a 3M Ergonomic Optical Mouse (a review I read here influenced my choice) which arrived over my holidays, and I unpacked and installed it last week. The mouse comes in two sizes, so I got the large one (my hand is 10cm across the palm and 25cm from the tip of the pinkie to the tip of the thumb, outstretched).

3M Ergonomic Optical Mouse

The point of the story is that my wrist soreness has disappeared, the mouse feels comfortable and it's button action is quite smooth. I don't have anything to compare it to (e.g. a trackball) for ergonomic value, but after only a short time I have found it quite good. I've heard it takes 6 weeks or so to fully adjust to, though, so I hold off on final judgement until then.

Code Camp Oz

Code Camp Oz is starting to look good. Adam Cogan and Greg Low are presenting - I've seen these two before and can vouch for how good they are - and I'm excited about the other speakers too. Lots of content on SQL Server 2005 and Visual Studio 2005. It's being held over the weekend of April 23rd-24th in Wagga Wagga, and it's free to attend, but accomodation and transport need to be organised by attendees.

Time to start looking at the logistics of getting there. Car pool anyone?

See the website at http://www.codecampoz.com/ for more information/

Jeff Atwood's Ivory Tower

Jeff Atwood over at Coding Horror has a great post about developers being isolated from their customers, entitled “Ivory Tower Development”.

His post strikes a chord with me. When I first started working for my current employer as pretty much a one-man coder (in with other business analysts who have great experience in databases and the health industry), I was more concerned about how I was going to do tasks from a technical perspective, and indeed if I could do certain things with my limited knowledge. 3 years later, I'm over the issue of how being the biggest problem, and more focused on the right way to do something from a end-user perspective (all my end-users are in-house...something Jeff talks about in his post).

For the first couple of years the end-user was me, and I guess I was satisfied with some hacked-together, string-and-wire Access database where I had to go and set breakpoints and change variables manually (yeeeech) to massage my data. I'm slowly starting to write more systems for others end-users instead of the hacky utilities I first developed for me, and this has made me question how I communicate with my “customers”.

Thanks Jeff for something to think about!

By the way, I first discovered Jeff's blog via an article of his on Code Project.

Blogmap

Via Justin King, my Blogmap:

my blogmap

You can make your own at http://www.csthota.com/blogmap/.

posted