Skip Navigation Links
Search site. 
Powered by Google
Darren Neimke (Me)

My Book

Readify

">ASP.NET MVP


Interesting Portals 

NetVibes
This portal feels similar to PageFlakes in many ways but I love their gallery. They also have a feature whre certain chrome elements only become visible when you hover over the web part.

Xtra
A New Zealand news portal. I especially liked the content rotator web part at the top of the middle row. Seems like a nice way to allow a user to browse through data.

 

Posts Archive 

Posts for: May 2006

Social Networks

I remember back, oooh, it must've been 8 or 9 years ago now, seeing an article on the WebMonkey site about websites with high cohesion.  The article showed a picture of the internet which looked a bit like a galaxy.  In the middle was a dense core and at the outer extremeties were thousands of dimly lit, isolated particles.  What this image showed was that, at its core, the internet has a group of sites that are extremely well known and which receive a great deal of traffic.  It also concluded that there was a great deal of cohesiveness between many of these sites - today we refer to this as Google-Juice :)

NGC 4414

Our understanding of these relationships has grown since then and we now recognize these tightly clustered nodes as Social Networks.  There's a great wikipedia entry for social networks which discusses different kinds of networks and how they have value to the individual. 

Social networks are way to complex for a mere mortal such as myself to really understand but it's interesting nonetheless to sit back and try to work out where your own little node sits in terms of the vast internet ecosystem.

One thing's for sure though and that is that from now on I will be much more mindful of how linking to others affects the social fabric that I am bound to.

 

posted on 5/31/2006 9:48:26 PM ( 0 Comments )


Do you decant?

Tonight we had Francois coming over for dinner so I decided to head down to the local liquor store to grab some drinks (Of course I walked down - +7,000 steps!).  Because we were having an Indian curry for dinner I decided to choose something that was full-bodied and what could be more full-bodied than a nicely aged Cab. Sav.?

I hadn't purchased Cab. Sav. for a while but, being wary of the effects of sediment and oxygen on the wine drinking experience I decided to do a little bit of internet research into the topic of how best to serve this alcoholic treat.

I stumbled across this interesting article which suggests that even experts are divided over the benefits and effects that decanting and breathing have on wine.  What do you do?  Do you decant?

posted on 5/31/2006 8:00:49 PM ( 1 Comments )


Jabberwocky

The classic poem by Lewis Carroll:

'Twas brillig, and the slithy toves
Did gyre and gimble in the wabe;
All mimsy were the borogoves,
And the mome raths outgrabe.

"Beware the Jabberwock, my son
The jaws that bite, the claws that catch!
Beware the Jubjub bird, and shun
The frumious Bandersnatch!"

He took his vorpal sword in hand;
Long time the manxome foe he sought--
So rested he by the Tumtum tree,
And stood awhile in thought.

And, as in uffish thought he stood,
The Jabberwock, with eyes of flame,
Came whiffling through the tulgey wood,
And burbled as it came!

One, two! One, two! And through and through
The vorpal blade went snicker-snack!
He left it dead, and with its head
He went galumphing back.

"And hast thou slain the Jabberwock?
Come to my arms, my beamish boy!
O frabjous day! Callooh! Callay!"
He chortled in his joy.

'Twas brillig, and the slithy toves
Did gyre and gimble in the wabe;
All mimsy were the borogoves,
And the mome raths outgrabe.

posted on 5/31/2006 9:20:11 AM ( 0 Comments )


Skin in the Game

I've written many times about creating excellent teams and also why it's important to do so.  Much of what I've written is about having a game plan and practicing the game plan so that you ultimately breed excellence.  If you are a manager - a real manager, not just one of those clumsy middle-managers who have the Peter Principle to thank for their elevated position - then it's not really that hard to create a decent environment and to challenge team skills with appropriate drills. 

NOTE
The best way to insulate yourself from the Peter Principle is to implement a hiring policy which states that you only ever hire people that are smarter than you (thanks Mitch).

Having a well oiled, highly skilled team introduces its own problems though.  What about staff retention?  This is just as much a problem in sport as it is in business now that the stakes have grown so high.  How do you ensure that your well-oiled, star striker doesn't jump ship and start playing for the opposition?  Conversely, how do you continue to ensure that you are getting as much of the talent and focus of your star player in every situation.

It depends.  When times are bad staff retention and work ethic is not as high an issue because, in reality there are really not that many superstars and we have Maslows good old Hierarchy of Needs to keep the others honest.  However, when times are plentiful, sloppiness and player transfers abound - especially in IT.  I suspect that Warren Buffett was right when he suggested that corporations be run by people who have some Skin in the Game

If your key people don't have any skin in the game, how "in the game" are they really?

posted on 5/30/2006 1:46:41 PM ( 2 Comments )


Webparts, Gadgets, Oh My!

In a comment to a recent post, Prasad asks about Gadgets and Web Parts and wonders how they differ.  He also asks whether I cover Gadgets in my upcoming book so I thought that I'd post the answer here.

Hi Prasad, Gadgets are considered as web parts but they are different from the standard ASP.NET web parts or Sharepoint web parts.  From Sharepoint 2007 onwards, Sharepoint will be actually using ASP.NET web parts - so creating a web part using ASP.NET can be shared with your own custom websites and Sharepoint.

Live.com Gadgets use a different model and authoring them requires you to understand the Live.com Gadget API.

My book devotes a Chapter to explaining Live.com Gadets and takes the reader through writing and deploying their own Gadget using Atlas.

posted on 5/29/2006 3:18:39 PM ( 0 Comments )


Collapse

In this weeks AFR Magazine CBA CEO Ralph Norris was interviewed.  Of particular interest to me - aside from how immaculately he was attired - was his favourite book:

Book Cover

Per Amazon:

Jared Diamond's Collapse: How Societies Choose to Fail or Succeed is the glass-half-empty follow-up to his Pulitzer Prize-winning Guns, Germs, and Steel. While Guns, Germs, and Steel explained the geographic and environmental reasons why some human populations have flourished, Collapse uses the same factors to examine why ancient societies, including the Anasazi of the American Southwest and the Viking colonies of Greenland, as well as modern ones such as Rwanda, have fallen apart. Not every collapse has an environmental origin, but an eco-meltdown is often the main catalyst, he argues, particularly when combined with society's response to (or disregard for) the coming disaster. Still, right from the outset of Collapse, the author makes clear that this is not a mere environmentalist's diatribe. He begins by setting the book's main question in the small communities of present-day Montana as they face a decline in living standards and a depletion of natural resources. Once-vital mines now leak toxins into the soil, while prion diseases infect some deer and elk and older hydroelectric dams have become decrepit. On all these issues, and particularly with the hot-button topic of logging and wildfires, Diamond writes with equanimity.

posted on 5/28/2006 8:42:14 PM ( 1 Comments )


Interesting blog title from RootPrompt

I'm not sure who is behind the RootPrompt blog but I just read this post and found myself a little baffled as to how they came up with that title:

    Geeks declare open season on Microsoft

The basis for this post title is that a CIO from Massachusetts has called for all state staff to only save documents using standard formats - such as HTML, PDF, or ODF (not sure what that is) - so that they will work on anybody's computer.

Maybe what RootPrompt really meant to write was:

    Business Leader recommends state staff upgrade to latest version of desktop publishing tools.

You see, Word IS standards compliant.  When I create a document in Word and click "Save As" to save it, I can save in many formats including XML, HTML, or even plain Text (which as far as I know is also a standards compliant format :-)

Oh well, I guess that the heading of Geeks declaring an open season on Microsoft got me to read the article - even if it bears no resemblance to the underlying truth.

posted on 5/27/2006 9:50:31 AM ( 0 Comments )


The Road Not Taken

My all-time favorite Robert Frost poem:

TWO roads diverged in a yellow wood, 
And sorry I could not travel both 
And be one traveler, long I stood 
And looked down one as far as I could 
To where it bent in the undergrowth;
 
Then took the other, as just as fair, 
And having perhaps the better claim, 
Because it was grassy and wanted wear; 
Though as for that the passing there 
Had worn them really about the same,
 
And both that morning equally lay 
In leaves no step had trodden black. 
Oh, I kept the first for another day! 
Yet knowing how way leads on to way, 
I doubted if I should ever come back.
 
I shall be telling this with a sigh 
Somewhere ages and ages hence: 
Two roads diverged in a wood, and I— 
I took the one less traveled by, 
And that has made all the difference.

posted on 5/27/2006 9:33:06 AM ( 0 Comments )


Hey Virtual Guy - do you have a heartbeat?

Yesterday I was in Melbourne for some meetings and the topic arose about what sort of structure to create to enable better communication.  Conversations like this really hit the anarchic nerve in me because I'm pretty opposed to creating rules and structure just to help people communicate.  We are already given everything that we need to be able to communicate when we are born: Brain, Mouth, Eyes, Ears, Fingers, and an email account.

Then, today a read a couple of posts from guys who clearly a very good at using these resources to communicate:

These are what I call "heartbeat posts".  It lets me know that a person is alive and, if they are well written they also give me some idea about how things are going.  In each of these three blog articles everything appears to be pretty healthy.  From reading those posts I know that Grant is perfectly good at asking and getting instantaneous help, Paul is busy "plugging himself in" to community and challenging himself, and Mitch... well Mitch is Mitch :-)

posted on 5/27/2006 9:24:37 AM ( 0 Comments )


Mending Wall?

The unbelievable thinking of the US Government to want to build a massive fence along the US/Mexico border, reminded me of a poem by Robert Frost:

Mending Wall

Something there is that doesn't love a wall,
That sends the frozen-ground-swell under it,
And spills the upper boulders in the sun,
And makes gaps even two can pass abreast.
The work of hunters is another thing:
I have come after them and made repair
Where they have left not one stone on a stone,
But they would have the rabbit out of hiding,
To please the yelping dogs. The gaps I mean,
No one has seen them made or heard them made,
But at spring mending-time we find them there.
I let my neighbor know beyond the hill;
And on a day we meet to walk the line
And set the wall between us once again.
We keep the wall between us as we go.
To each the boulders that have fallen to each.
And some are loaves and some so nearly balls
We have to use a spell to make them balance:
'Stay where you are until our backs are turned!'
We wear our fingers rough with handling them.
Oh, just another kind of out-door game,
One on a side. It comes to little more:
There where it is we do not need the wall:
He is all pine and I am apple orchard.
My apple trees will never get across
And eat the cones under his pines, I tell him.
He only says, 'Good fences make good neighbors'.
Spring is the mischief in me, and I wonder
If I could put a notion in his head:
'Why do they make good neighbors? Isn't it
Where there are cows?
But here there are no cows.
Before I built a wall I'd ask to know
What I was walling in or walling out,
And to whom I was like to give offense.
Something there is that doesn't love a wall,
That wants it down.' I could say '.Elves' to him,
But it's not elves exactly, and I'd rather
He said it for himself. I see him there
Bringing a stone grasped firmly by the top
In each hand, like an old-stone savage armed.
He moves in darkness as it seems to me
Not of woods only and the shade of trees.
He will not go behind his father's saying,
And he likes having thought of it so well
He says again, "Good fences make good neighbors."

posted on 5/25/2006 2:15:50 PM ( 0 Comments )


ASP.NET 2.0 Web Parts in Action

After 8 months of planning, writing, and fine-tuning my book has finally set sail for production!  You can see the home page for the book here: http://www.manning.com/neimke/

ASP.NET 2.0 Web Parts in Action

If everything goes according to plan the book will be available in bookstores from mid-August although the PDF version should be available prior to that.  The picture on the cover is of a Pirate and I chose it because my eldest son - Harrison (5) - is very much into pirates right now :-)

posted on 5/25/2006 1:54:11 AM ( 6 Comments )


So long and thanks for all the fish

I was just catching up on some blog reading and came across this.  I couldn't help but laugh about the comments in that post:

...I’d say we’re buggered over a barrel

Heh, very colorful.  So, for the twentieth time in my short time on this planet I'm faced with yet another possible extinction of humans.  What's a boy to do?  And crikey... how lucky am I to have survived all of these crisises?  From nuclear armageddon through to modern ice ages and now this - bloody bird flu!

Because of these things there's a resilience that has formed.  A part of me which says, "so what if we're all fucked".  I mean, if we are, what can I do about it anyways.  And besides, I have bigger problems to solve anyway - such as getting this bloody Remoting code to compile.

My only hope is that, when I do finally leave this place and head off into the big unknown that I can possibly leave in style - just as the dolphins did it - and not scampering around like a scared maniac.

So long.  And thanks for all the Fish!

posted on 5/24/2006 2:27:10 PM ( 0 Comments )


3 on 2 Part 2

This drill requires good possesion skills by the forwards and also introduces a high level of competition between the backs and the forwards.

3 on 2 training drill

Attacker A1 hits a firm ball at Attacker A2 and they link up.  Defender D1 cannot move until Attacker A2 makes his first pass.  Attackers A1 and A2 link up with Attacker A3 and it becomes a 3 on 2.

posted on 5/22/2006 9:14:06 AM ( 0 Comments )


3 on 2 Part 1

The point of this drill is to encourage good, firm, ball transfer between the three attackers to eliminate the 2 defenders.

3 on 2 traning drill

The defender D1 passes to attacker A1 who then passes to attacker A2.  When D1 makes his pass he runs around the top cone before joining defender D2.  Attackers A1 and A2 head towards the goal and link up with Attacker A3.

posted on 5/22/2006 9:00:12 AM ( 0 Comments )


Export to BlogML from Squarespace

Grant provides a tool to help convert your Squarespace exports to BlogML format:

    http://www.holliday.com.au/blog/squarespace-to-blogml-converter.html

posted on 5/22/2006 8:44:37 AM ( 0 Comments )


Migrate from Blogger to Community Server using BlogML

Another story taken from the web involving BlogML:

    http://jeffbishop.net/archive/2006/05/21/690.aspx

posted on 5/22/2006 8:43:04 AM ( 0 Comments )


BlogML goes mainstream

When I awoke this morning I had an email from Telligent informing me that the weblogs.asp.net will get an upgrade (presumably to version 2 of Community Server).  In the email they mentioned that they would provide a couple of options for people who were looking to move their blogs away from that site.  One option was that they would provide an Atom file of post content, the other was...

We'll also be providing support for a BlogML export which will work with other blog engines that support BlogML (SingleUserBlog, SubText, DNN, DasBlog).

This is pretty fantastic news!  This means that a very large group of influential bloggers may be exposed to BlogML for the first time.

posted on 5/22/2006 5:14:22 AM ( 0 Comments )


Building a champion team

Australia vs Netherlands Hockey

I've started taking a much more senior role both at work and also for the hockey club that I play for this year and it's interesting to draw the analogies between work, life, and play.  One of the most interesting parallels that I've been focussed on lately is that of having a game plan.  Consider how often you see talent-laden teams have a good run through the season only to fail during their finals campaign.  Often I put this down to the losing team simply not having the right game plan to pull of the victories that count.  I see the season as a time to perfect the game that you plan to execute when you make the finals and not simply a time for staying fit.  In fact, I argue that, if you don't have a winning game plan ready for execution when it comes to be finals time that you might as well lay down your hat and wait for next year to come around.

So much do I value the importance of building a game plan that I'm more than happy to suffer a losing streak - even a season long one - if it means getting everything lined up.  Achieving the right game plan requires a great deal of attention to detail.  You must identify players strengths and weaknesses and put them into positions where they can compliment one another.  You need to have a strong senior group who have the stamina and the focus to assist in ironing out weaknesses and looking for new strengths.  You must have the right training drills that keep the players sharp and their skills honed - and the drills should be interesting and varied too so that they prepare the players for a wide variety of situations that they will encounter during a game.

Australia vs Netherlands Hockey

Building a champion team requires all of this and it also requires time too.  If you've been given the role of building a finals-winning capable team then you should set yourself goals. 

The first goal should be to instill what I call "the game plan" upon the team.  This means that the team will have formed habits that are deeply entrenched and these are the habits that form the basis for everything that sits above them.  This includes things such as each player knowing and owning their position and also the fundamental way that the team communicates. It also includes some standard patterns of play - such as how to transfer play from one side of play to retreat and attempt an attack via the other flank.  From having this game plan as a base the team gains a mental strength that comes from knowing that they will never be in unfamiliar territory and when they are under pressure they will know to fall back to the basic game plan at all times.  The basic game plan should be constantly re-iterated to the team through drills, mentoring, and basic coaching means such as whiteboard sessions until it is so ingrained that the players would feel naked and clueless without it.

The second goal is to build the strength of the team.  Even a team with a great game plan will come unstuck when all reserves of energy have been depleted.  Fatigue can easily remove a players ability to execute their role effectively and so it is important that the team has enough reserves of fitness to last out the entire game.

Australia vs Netherlands Hockey

Finally, when the team is fit and focussed you should introduce new thinking.  This new thinking can come both from within the team as well as from external sources.  In the last great team that I was associated with we brought in current and former Olympians to talk to us and to monitor our training sessions.  Having these kinds of people assisting helped us to stay focussed in striving for excellence as they were able to work with us to iron out minor deficiencies and also because they served as a source of inspiration to us.

Almost everything that I've said in this post relates as equally to work as it does for hockey.

posted on 5/21/2006 6:11:24 PM ( 1 Comments )


Vista Vibes # 1 is up - interview with Frank Arrigo

Check out the first of the Vista Vibes interviews with Frank Arrigo here:

    http://techtalkblogs.com.au/blog/archive/2006/05/21/124.aspx

Subscribe to the the TechTalkBlogs feed to catch upcoming interviews with other Australian developer community folk.  If you have an opinion on Vista please drop me a line so that I can line you up for a Vista Vibes interview :-)

posted on 5/21/2006 12:28:44 PM ( 0 Comments )


Are the MSN Spaces guys nearly ready for a conversation about BlogML?

Alex Boyko - someone who works with Dare Obasanjo? - recently published this article on his blog about a tool which uses the API's that are exposed by Blogger and MSN Spaces to migrate his blog from one to the other.  I noticed it because Dare had also blogged about it here.

This gets me excited because this is where I see that BlogML has a role to play.  I'm not sure what "format" Alex's tool stores the content in when he exports it from Blogger but I'm hoping that I can get him to use BlogML (by using the free, publicly available BlogML API's) to store that content in BlogML format.  He can then continue to use the MetaWeblogAPI to import from BlogML into MSN Spaces.

So maybe this means that a good, general tool might be something that did MetablogAPI <-> blogml conversions?  The benefits of Alex using BlogML as his intermediate format is that it would "just work" for the implementations that already natively accept BlogML imports such as DasBlog, SubText, Community Server and a few others.

posted on 5/21/2006 11:08:13 AM ( 1 Comments )


How *NOT* to deploy web applications!

I've probably been using Hotmail for over 6 years and it has been my constant companion.  It's been with me through 5 houses in 3 states and it has outlasted the other 4 work-related email addresses that have come and gone through that period.  What it isn't surviving very well is the ordeal of those funky Live.com'ers with all their whacky Javascript.  Currently Hotmail will not load on my Home PC which is running IE 6 with SP2 or on the Samsung Laptop which is running Vista build 5382 with IE 7.  So I'm sorry that I haven't gotten around to reading those 7 emails that my IM client informs me are sitting there, but I cannot load Hotmail in my browser.

Hey you funky Live.com team... this is a horrible, horrible thing that you have done!

posted on 5/20/2006 8:44:47 AM ( 0 Comments )


Google Reader now with friendly mobile interface

I posted recently about the cool new Google Reader for managing blog subscriptions.  If you are using the custom Google Reader web part and browsing your feeds from your portal home page you will now benefit from the fact that they've given it a friendlier mobile interface.  Here's a screenshot:

Google Reader displays feeds nicely on a mobile device

Originally found here.

posted on 5/19/2006 12:15:00 PM ( 0 Comments )


Daily SCRUM meetings - the Readify approach

As Mitch mentioned in his post from the other day, I'm currently looking at ways to emulate a daily scrum meeting in our virtual environment.  First a thing about SCRUM...  SCRUM is designed to encourage projects to move ahead in an unhindered manner and this means:

  • trusting your team to do the work
  • remove barriers - such as beauracracy - so that the team can spend its time being productive
  • giving team members freedom to make decisions - so NOT micro-managing the team

The daily meeting is an important element of SCRUM as it allows for the team to get together and discuss issues and cross-pollinate ideas.  It's also a sanity check and therefore involves two important questions:

  1. What did you do yesterday
  2. What did you do today

Being virtual is something that we take great pride in at Readify and so creating solutions that solve virtual collaboration problems is very much the space we enjoy playing in.  I hope to talk more about how our virtual SCRUM meetings evolve and to give some insight into the methodology, tools, and various other things that we use to enable engaging, meaningful virtual scrum meetings.

 

NOTE: Maybe now that I've discovered TechTalkBlogs I'll be directed by the number of Thumbs-Up votes that this post gets when I decide how much emphasis to place on cranking out future posts on this topic :-)

posted on 5/19/2006 9:07:51 AM ( 1 Comments )


TechTalkBlogs

Because of the upcoming Vista community events here in Australia, I'm going to be taking over the blogging mantle at TechTalkBlogs from Rocky.  Expect to see most of my posting on Vista to move across to there for the next couple of months or so:

    http://techtalkblogs.com.au/blog/

posted on 5/19/2006 6:55:24 AM ( 0 Comments )


Some more BlogML goodness stories...

This week I've seen two new BlogML export/import conversions that have both gone pretty painlessly from what I can tell.  First Grant wrote about how he used the "Export to XML" feature in Squarespace and an XSLT to transform his Squarespace blog to BlogML.  Once he had the BlogML of his content, Grant grabbed an existing BlogML importer for Community Server and imported his content straight into there. 

That's Squarespace to Community Server in the push of a button.  Read about how Grant migrated his content here:

    http://www.holliday.com.au/blog/blogml-import-to-community-server-20.html   

Apparently Grant's exploits made some waves in the CS circles so hopefully this will lead to people like CS and DasBlog to sit up and think about having tighter integration with BlogML.

Next, Martin Granell needed to migrate his blog from a rusty old version of .Text into a shiny new SUB install.  No worries, there was already a .Text BlogML implementation on the BlogML site which Martin grabbed and polished up a bit into a console applicaiton.  He ran the BlogML exporter over his .Text blog and imported the content straight into SUB. 

That's .Text to SUB in the push of a button.  "IJW" was Martins comment :-)  View Martin's new blog here:

    http://granell.net/martin/

I'll get Martin's console app up online tomorrow.

In the meantime I'm really hoping that I'll find some time to work on BlogML to produce a formal primer for the format and to change the BlogML website so that it more clearly displays a list of trusted, existing providers for BlogML.

posted on 5/18/2006 10:37:44 PM ( 12 Comments )


Chuck's Vista Ready Hardware Review

Chuck has written up a great post which walks through his experiences of using Vista on three different pieces of hardware:

    http://blogs.msdn.com/charles_sterling/archive/2006/05/18/600482.aspx

I've been the lucky beneficiary of the Samsung and have been very impressed by it.  After using Dell Notebooks for the past 3 years it has been great to have a sexy beast like the Samsung sitting on my desk.  Anyways, go read Chuck's article to learn more about his experiences with: Asus Lamborghini, Toshiba  A7, Toshiba M400 Tablet, and the Samsung  X60.

Also, here's a link to an article which states that we should see something firm around Vista Logo requirements real soon:

    http://news.com.com/Microsoft+to+detail+Vistas+needs/2100-1016_3-6073056.html

Oh yeah... God I love Aero :-)

posted on 5/18/2006 1:51:37 PM ( 0 Comments )


Death March : Perspective of the developer

Death March is a term used to define a project that is headed for failure.  We've all been/are on them so there's no secrets.  Often it's easy to look back at a project and talk about it in terms of being a Death March or to look at another project and label it a Death March too.  But what about the developer who is on a project and who has "bought in" to the whole idea that their project serves some meaningful purpose, don't ya just feel for that guy?  In his recent blog post, Joseph sheds some light as to what's going through the mind of that Lemming Developer.  Read it here:

    http://jcooney.net/archive/2006/05/16/14004.aspx

posted on 5/17/2006 9:20:36 PM ( 0 Comments )


Learnings from Live.com

One of the Live.com guys has posted a lengthy article about their key learnings from building Live.com:

    http://spaces.msn.com/siteexperts/blog/cns!CE6C50D25BFAAA73!4852.entry

This is interesting in that it is the first decent attempt that I have seen to do a post mortem on an AJAX implementation to identify and discuss some of the issues. A must read for any would be AJAX developers.

posted on 5/15/2006 9:43:58 AM ( 0 Comments )


Rules for safer living

I try to live my life by a few simple rules and after reading this article I thought that it might be time to start sharing them.  I'll start with rule #12:

Rule #12: Don't build your house on the side of a volcano.
Volcano's are dangerous and are known to spew extremely hot substances from their mountaintops. 

Mount Merapi is spewing ash and rock from its mountaintop.

 But maybe writing all of this robotic C# data access code has just turned me into a boring conservative.  Take local Edi's perspective on events:

"Edi, a 30-year-old villager, said he would stay unless he received a clear signal from the maintain's spirits..."

Hrmm, that doesn't sound too bad then.  Edi then goes on to tell us:

"People around here believe that if Merapi is going to explode there will be a sign, a magical sign," he said, sitting on a mat sipping coffee. "Either it comes in a dream, or in the form of a hallucination."

Yes, or a million gallons of steaming hot lava pouring in through your front door.  Methinks that Edi needs to look up in the sky, because apparently there are some tell-tale signs already, as the article points out:

"Throughout the day Saturday, volcanic tremors shook the ground, some strong enough to send people running in fear. After nightfall, fiery magma from the volcano's cauldron lit up the bottoms of clouds above the nearly 9,700-foot peak, and cascades of bright red stones tumbled down the mountainside."

 

NOTE: It appears that USA Today did a significant re-write on their article in which they removed all mention of local Edi.

posted on 5/14/2006 5:29:38 PM ( 0 Comments )


Tell me about your favorite personal project.

When we get an applicant for a tech role at Readify we put them through a tech interview.  Basically the tech interview involves having a phone discussion with a Senior consultant so that we can ascertain the technical savvy of the applicant.  We generally rotate the tech interviews among a few of us and it will depend on who you interviews you as to the type of questions that you get. 

One of the questions that I always ask is for the applicant to tell me about their favorite personal project that they have going right now.  It's a bit of a loaded question I suppose because of how it assumes that they do have a personal project - but that's almost my point.  Having a personal project (or more than one) is a trait that is shared by every developer that I respect and so I rate it rather highly.

posted on 5/13/2006 1:10:26 PM ( 2 Comments )


Interesting opinions on Live.com

I just read Paul's and Tim's articles about Live.com and have to say that I certainly agree with many of the things that were said.  I think that Live.com suffers from the same thing that most Microsoft offerings suffer from and that is that too much of the marketing glitz gets applied.  A first look a the Live.com portal gives you a real dose of eye-candy as opposed to the Google portal which is bare-bones in comparison.  But when you actually use both of these portals as your daily base you very quickly begin to appreciate the simple elegance of the Google portal - especially when connecting via a mobile device!

Paul's comments run deeper than a simple dislike of Live.com, he actually opines that it's the Atlas'ness of the site that is annoying.  This is interesting to me because one of the factors that I took into account when I decided to stop selling my development services (for the time being at least) was my geniune lethargy about some of these cutting edge technologies that are coming out.

Go read both Paul and Tim's articles and make up your own mind about the Live.com, Atlas, and Microsoft in general but here's my wrap on all of this... someone needs to go and tell those lovely folks Microsoft about the benefits of keeping things simple. 

posted on 5/12/2006 5:42:55 PM ( 0 Comments )


More Google Portal Goodness

The Google Personalized Home Page and Google Reader totally rock!  To use Google them you must first create a GMail account and then sign in to the Google.com home page to start personalizing it to your own liking.  Unlike Live.com, Google have gone for the kind of simple elegance that has made Google a market leader in web technology.  One of the great recent additions to the portal has been the tight integration between it and the Google Reader (click here to learn about Google Reader).

Today I noticed another really cool thing about Google Reader.  Click on this button to see it for yourself (and then return to the article):

   Add to Google

Notice that, by adding that link to your blog you can take users to a page that allows them to add your blog to either their default portal view or to your subscriptions. 

Google Reader impresses me and I'm sure that as soon as Google iron out a few bugs in their UI that it is going to gain a very important slice of the feed subscription market.  I'm not sure whether Google Reader plan to open up an API to access feed stores but I'll be watching this space with a great deal of interest.

posted on 5/11/2006 3:59:20 PM ( 0 Comments )


UAP pain

When I spoke about UAP at Code Camp recently I stood up and told the people there to "work it out" as opposed to sitting around and complaining about it.  And I believe in that,  however, in reality I fully accept that it's not that easy.  I forget who it was who mentioned this to me - probably Mitch or Rock - but it was very insightful; they said that under UAP it will start to become very obvious which product groups at Microsoft run as administrator on their own desktop because it's those products that will break and crumble in Vista.

Based on what I've seen so far I'm guessing either the ASP.NET team or the SQL Server team must be running as Administrator because I don't know of anyone on the planet who has managed to get the auto-created SQL Server User Instance databases to be auto-created when developing in Visual Studio to work.  At least I could work around the User Instance stuff by working off of a central SQL Server.  Not sure how to get around this little goof by the MSN team:

LUA Error

posted on 5/10/2006 10:39:08 PM ( 0 Comments )


What an amazing day!

I awoke this morning to the news that the two Aussie miners - Todd Russell and Brant Webb - who have been trapped for 14 days in a mine 1km underground in Beaconsfield, Tasmania have been released.  This is one of those unbelievable moments where an entire nation is bonded as one.  Congratulations go out to the workmates of Todd Russell and Brant Webb who worked tirelessly and under incredible physical strain for the entire 14 days to free them.

Todd, Brant were trapped in the mine after a rockfall which was triggered by earth tremors on Anzac Day.

A third miner - Larry Knight - was also trapped below but did not survive.

Related Links:
Russel, Webb walk from gold mine.

posted on 5/9/2006 7:50:24 AM ( 0 Comments )


Readify Hiring?

As Mitch writes, we are nearly always hiring.  Readify is always looking for technical specialists who enjoy working with .NET and other related technologies.  But as Mitch says, the hiring process is often more of a long conversation than a short, sharp process.  Because of this it's important that we always have a pipeline of people that we are talking to who are potential Readify material.  If you ever feel that Readify is the type of company that you would like to work for and you are interested in discussing what it's like to work at Readify or, you'd simply like to put yourself on our radar, then drop Mitch an email from the link on his blog post:

    http://notgartner.com/posts/4190.aspx

posted on 5/7/2006 8:52:41 AM ( 0 Comments )


I'm a credit again! (But only in the balance sheet)

It's official.  Tonight I fly to Melbourne to start the handover process for my new role.  It's still with Readify of course, but I'll no longer be a tecchie consultant resource.  Yup, that's right - I'm an overhead! :-)

My new role will see me looking after resourcing and scheduling and also managing internal projects.  This is a very exciting move for me as it allows me to combine my inner-Accountant with my outer tecchie to hopefully do some interesting things around process automation.

Some of my first tasks will be to help get our CRM implementation up and running and also to define some new internal processes.  I'll probably also start to take the reigns of the resource scheduling this week so, if you see any Readifiarians wandering around the streets looking lost, you'll know that I've probably broken something :-)

posted on 5/7/2006 8:41:46 AM ( 2 Comments )


Moving my whole world online

Over the past 12 months I've probably rebuilt my machine at least 6 or 7 times - so I'm getting pretty good at it.  The good thing about doing a rebuild is that it's a fairly static set of tasks that you have to perform each time; so the more you do it, the better you get at re-doing it.  But you still seem to end up losing stuff each time no matter how regimented your routine is.  So now I've decided that, as much as possible that I'll use the web as my central filesystem and so hopefully, rebuilding will become even easier.

Up until now I've used the following online storage facilities to store my stuff:

Music: ???
Source Code: ???
Photo's:  Flickr
My Documents - Sharepoint My Site (synch'd from Groove)

As you can see, I've made some inroads but am still looking for a good solution for managing my music and source code from the web. 

One of minor thing's that has pained me about doing a re-build is making sure that I export my OPML file and then I have to set it up again by downloading an aggregator and importing my OPML file after the re-build.  This might sound like a small task - but it all adds time to the total effort of doing a re-build.  After working with Grant this week I was introduced to a great solution for managing my aggregator from the web - Google Reader (Beta).

My favorite thing about Google Reader is that they have provided a web part so that I can view new entries to my feeds from my home portal (Personalized Google Home).  Here is a screenshot of my Google Reader web part displayed on the home page of my portal:

Google Reader Web Part

This is why I love portals and web parts.  Now I will always be connected my aggregator and no longer will I need to migrate my aggregated stuff when performing rebuilds in the future!

What is your favorite online storage story?

posted on 5/5/2006 8:08:11 PM ( 2 Comments )


Extending a Membership User

You are creating a blogging application where users each have a blog.  Blogs are clustered into categories of blogs.  A user can have roles in more than 1 blog.
 

Category A
    Blog A
        User 1 **
    Blog B
        User 2
Category B
    Blog C
        User 1 **
    Blog D
        User 3

 
** Note that User 1 has 2 blogs.

At runtime you want to be able to determine the following information about a user:

  •     Their username
  •     Their user id 
  •     Whether they are a member of a given blog
  •     What role(s) they have in a particular blog

There's a complex issue here dealing with row-level security on data and, at runtime, being able to programmatically determine the permissions at that level.  At runtime, you want to have code which looks similar to this to determine whether to grant or deny access to a particular item:

    if( PermissionAPI.UserCanEdit( blogId ) ) {
        // access granted
    }

The question here is "where to hang your permission data so that you have access to it at runtime". 

So, is there anything baked into the Roles API that you can override so that it handles not only an array of string roleNames but also complex type permissions or, is the intended usage in this scenario to implement your own custom MembershipUser class to add the rights to?

A workaround for using the Roles API by dynamically creating roles

The Roles API in ASP.NET 2.0 works with a string[] of roles.  For example, John Doe might have the following roles: "Administrator", "Editor", etc…

But, what if John has different roles on a per category or per group basis?  Like, John is an "Administrator" in Group A but is only an "Editor" in Group B.

The quick-n-dirty way around this might be to dynamically create custom role strings at the time that you are managing that users permissions.  In the previous example, you might dynamically create the following 2 role strings:

    GroupA$Administrator
    GroupB$Editor

Using this method would allow you to leverage the built in Roles.IsUserInRole(roleName) API logic to determine whether access should be denied or granted.

Sample implementation code for this method:

static bool UserCanEditBlog( blogId ) {

    return (Roles.IsUserInRole( blogId.ToString() + "$Editor" ) ||
        Roles.IsUserInRole( blogId.ToString() + "$Administrator" ) ;

}


Another method might be to extend the current user so that the permissions can be queried directly via the current Identity.  To do this you may have to create a custom MembershipProvider which will allow you to return custom MembershipUsers with the custom permission data tagged as an array of permissions to that user.

Using the Membership API to extend the user 

// Create a class for the new custom user and extend it with our custom permission data
class BlogUser : MembershipUser {

       // this is a convenience thing because the SqlMembershipProvider uses MembershipUsers
      .ctor( MembershipUser baseUser )  

      // the new custom property
      List<BlogPermissions> Permissions
}


// override each method to populate Permissions on the BlogUser class
class BlogSqlMembershipProvider : SqlMembershipProvider {

    public override MembershipUser CreateUser() {

          MembershipUser baseUser = base.CreateUser(...) ;

          // do stuff to get permission details
          BlogPermission[] perms = GetBlogPermissions() ;
          BlogMembershipUser blogUser = new BlogMembershipUser( baseUser ) ;
          blogUser.Permissions = perms;
          return blogUser ; 
     } 
}

 

Where BlogPermissions looks like this:


class BlogPermission {
    int BlogId
    string[] Roles
}


Sample implementation code for this method:


static bool UserCanEditBlog( blogId ) {

   BlogPermission perm = null ;
   List<BlogPermissions> perms = ((BlogUser)User).Permissions ;

   for( int i=0; i< perms.Count; i++ ) {

       if( perms[i].BlogId = blogId ) {

                return perms[i].Roles.Contains("Editor") ;
       }  
   }

    return false ;
}

There's a small working demo of extending the MembershipUser through inheritance on my ProjectDistributor workspace: http://projectdistributor.net/Projects/Project.aspx?projectId=73

posted on 5/5/2006 4:33:44 PM ( 2 Comments )