Thursday, December 28, 2006

Google Gets Dirty, Takes Away Soap

Google has decide to discontinue access to their SOAP API. If you are already using it you can still continue to access it, but by not issuing new keys, they are effectively killing their support.

They've made a token effort by suggesting you use the AJAX API, but that is hardly the same thing as everyone knows. The AJAX API hardly even qualifies an a real API, it is more just a widget you can add to your pages.

The do have some other interesting APIs, but it seems like they are starting to close off access to their core data. Interesting to wonder what that might portend, eh?

Friday, December 15, 2006

Reality Check

Most of the time I don't give much credence to the talking heads in fields like technology. Basically to be competent in this field requires a commitment to be doing that fundamentally restrictions your ability to be talking. So it is generally okay to assume that if you are primarily a talker, you are not really a doer and everything you say needs careful scrutiny. On the other hand, there are those who don't particularly talk a lot and you know it is because they are getting stuff done. When they do open the kimono, it is best to pay attention. Especially when their views align with my own. ;-)
I don't see aspect-oriented programming escaping the "academic ghetto" any day soon, and if it does, it will be less pervasive than OO. When it works, aspect-oriented programming is elegant, but it's not clear how many applications significantly benefit from its use. Also, with AO, it appears difficult to integrate the necessary tools into an industrial-scale programming environment.
--Bjarne Stroustrup
A great example quote, from a Technology Review article, of someone bringing some practical reality to the world of technobabble. Personally, his use of "academic ghetto" about made me fall out of my chair I was laughing so hard. Truth is so much better than fiction.


Monday, December 11, 2006


Okay, so it takes a bit for me to get worked about some new-fangled technology being the relatively snobbish and sophisticated technocrat I am (ahem).  But from time to time, I come across something interesting and feel like spreading the word a little.

My newest discovery is a site called  It's sort of a hybrid mix of user ratings and feedback mashed up with content references and quick links.  At least, that's my view.  I'm sure if you check it out, you'll jump to your own set of conclusions.

What do you think about new navigation and content referencing schemes like this one?

Monday, December 04, 2006

Mirror in Motion

In the last few days I've had to spend a much larger than average percentage of time explaining how to design a system.  More specifically how to perform tasks of software architecture in a high-velocity way that is consumable by individual contributors.  Whenever I have a challenge of how to explain something complicated, I generally look for examples of how others have addressed similar opportunities.  Sometimes, what they have written mirrors aspects of my own thoughts which helps give me ideas for how to communicate my own ideas.

One such reading lately is about Microsoft Motion, which is an architecture approach being bandied about at Microsoft. I found the conclusion to be the clearest statement of the overlap with my own thinking:
This paper describes three rules for success in a partitioned-iteration strategy. They are as follows:
  1. Start with the low-hanging fruit, focusing on quick time-to-value.
  2. Leverage economy of small scale, focusing on agile processes.
  3. Centralize interoperability and decentralize implementation, focusing on reduced complexity through partitioning, and faster iteration through agility.
You can find out more about Motion Lite on MSDN. You can also check out some podcasts on Channel 9 here and here.  And lastly the Architecture Journal has an article about it here.

Watch for some upcoming posts on other overlapping subjects from the Architecture Journal coming soon.

Wednesday, November 29, 2006

Serious Confusion

In my reading, I came across an excellent post about the estimation process for software development.  The author (Serious Confusion) does a solid job of summing up his views with style.  I encourage you to check it out here.

Monday, November 27, 2006

How I Do Design

This past week I spent some time working with some guys doing design work.  As we ping-ponged ideas and styles back and forth, I had opportunity to express my quick list of questions I ask when doing design. It turns out someone took notes so I've provided them here.  Maybe you will find them interesting...

Do I have enough information to design what I am trying to design?
  1. What kinds of data?
    • Hard types or not? Using classes vs. datasets or xml vs. text
    • Comprehensive or not? Is the data normalized, are the options well-known and relatively static.
    • Calculated or not? Does it require staging, heavy calculations, is volatile?
    • What's the lifecycle? Where does it come from, where does it go? What determines the states it has?
  2. What kind of process are you designing?
    • Displaying information? How rich is the interface?
    • Collecting information? What speed is the collection? How controlled is the interaction?
    • Business Rule Processing? Where does context come from? What is the rate of change (ROC) for the rules?
    • Transforming Data? Are the schemas well-defined? What is the ROC for the logic? 
    • A Workflow? Does it interact with user? How complex is the state machine?
    • Others – specialties? Hybrids?
  3. What patterns already implement similar behavior?
    • Ex: ui - > validator - > access server -> data contract
    • Framework provides the patterns.
    • Consume others as appropriate.
    • If you can’t define it using patterns, define it using prose.
    • Patterns are succinct, you only have to call out the exceptions.
  4. What is unique about the behavior being implemented?
    • Start with prose – write it out, follow the Design Considerations template.
    • Move to formalizing your design – use patterns/practices to describe processes.
    • Break it out and keep the scope of each component small and isolated.
  5. What are the operational considerations?
    • Security? How much or little trust? How controlled, and managed?
    • Retention? Lifecycle of data and the artifacts from processing.
    • Performance?
    • These data points go into the Requirements Map.
  6. What specific services are to be consumed?
    • Using particular APIs? Controls? Schemas?
    • Whatever specifics you know (typically filled in detailed design)
    • If you know it, put it in the Design Considerations document
 These were just my off-the-top list, so keep the flames low, eh?

Monday, November 20, 2006

Tic and Tie

Many years ago I worked routinely with finance people.  Lately, I find myself in their midst yet again.  On my latest engagement, I've been coming across an interesting phrase for which I haven't been able to find a solid etymology.

The phrase as Tick and Tie. Or maybe Tic and Tie? Or ??

There are many people that use this phrase, managers, accountant types, legal eagles, etc.  They all seem to provide their own subtext and implications, but somehow they all seem to understand what it means by unspoken agreement.  When pressed, no solid answers were at hand.

As best I can figure, it relates to checking the numbers or answers, and relating the specific numbers or answers to their supporting information.  When working a proposal, projection, or model, this is a crucial step necessary for validating that all the information can be defended.  During facilitation we call this  the clarify step.  In computer terms we call it a check-sum.

Lacking a good definition, I'm presenting a bogus history.  Tick as in making check marks (ticks) on each entry. And Tie as in connecting each item back to the supporting documentation from which the number is derived.

If you've got the real one, I'd love to hear it.

Saturday, October 07, 2006

Google Goes On

Someone pointed out yet another new Google feature (YANGF) recently.  It seems that now they've added a new capability to be able to search public source code.


The Google Code Search feature is another remarkably useful tidbit to come out of the Google Labs.

If you use the advanced version you can even filter by language.  This will certainly make finding that little tidbit of C# syntax you just can't remember, that much easier.

Good going, Google!

Thursday, October 05, 2006

Curing Kerberos Configuration Craziness

Today I had the chance to pore through a clients Kerberos configuration.  The system as designed needs to provide access based on the users account on the client, through the IIS server, and into the SQL Server.  This setup is necessary for the precision auditing and process-level access controls required by the client.

A configuration such as this is not particularly uncommon but it sure isn't commonly documented.  I did find lots of places that reiterated the same pointers, tips, and tools over and over again, but they were surprisingly unhelpful at debugging when the default behavior stops working as expected.

If we were using the default configurations the various services would all be running under SYSTEM or Network Service accounts and this works without a hassle.  However, that isn't really the safest and most manageable way to operate your system and the minute you start deviating from the simple case, things get tricky pretty quickly.

Our security configurations (like most mature organizations) require that services run under domain accounts.  This includes the IIS Application Pool, and SQL Server.  For this to work then, the domain accounts we are using for these services must support delegation.  And then you have some specific steps to follow to bring it all together.  Namely, you need SPNs assigned to domain accounts.

There are lots of references for how to establish SPNs so I'll leave that to you.  But I did want to point out to other unique things about Kerberos against SQL Server.

A) When you are taking the SPN route, remember to include the port number in the SPN.
B) Use "Integrated Security=SSPI" in your connection string.  This one tends to trip people up.

This wasn't exactly rocket science, but there are so few checklists and practical guidance for this subjectively common subject area that I thought maybe this would spare someone else a few hours of poking the servers with a stick.

Monday, September 18, 2006

Phone Surprise

My old phone started acting up so I had to get a new one.  This was the cause of much deliberation and ballyhoo since I've been wicked busy and haven't had time to stop for a breadth, let alone to search for a new phone.

I went back over some feedback I got early, did some googling and chose the HP6515.  It is quite the sweet piece of geek candy, let me tell you.  Not as tiny as my previous candy bar but not quite the beast the JasJar can be.

It's fast, got solid features like built-in A2DP and GPS. I'm not having any problems so far, but I'll definitely post again once I've taken it for a richer ride around my neighborhood.

Friday, September 08, 2006

Deconstructing TFS SQL

This week while trying to get some custom build behaviors kicking, I had a chance to poke around the TFS SQL databases.  Just trying to unwind the schema makes for some pretty scary driving.

Whoever was actually working on these databases needs a refresher in their database skills.  They use multiple names for the same logical key, the don't use DRI, and there is no standardization or reuse to speak of.  Frankly it is a miracle the thing functions.  And pretty obvious why it can be as slow as it has been known to be.

This in no way is a knock on the product.  It is a huge undertaking, long overdue, and a valiant first attempt.  But it has a long way to go, and recruiting some actual database talent into the TFS product group couldn't hurt.

For example, trying to figure out how to list the items in a changeset was difficult until you unspool that VersionTo and VersionFrom in a namespace are really changeset ids.  Whoa!  That just happened.  No kidding.

Anyway, perhaps once a roadmap is fully laid out, I'll be more forgiving, but right now, it seems like something stinky and gross.  But I guess it works, and beggars can't be choosers.

Wanna know how to get any other internals from TFS, I'm collecting a ton.  All you have to do is ask...

Monday, August 28, 2006

The DRM Fight Continues

In an important volley some hack programmers released a tool called FairUse4WM which strips the protection from music files that have digital rights protection embedded.  There point is that if they paid to download the music, they should be able to listen to it in any medium they choose and rights management restricts that.  This is of course, a totally bogus argument, but the software is nifty if illegal.

In response, Microsoft patched the rights management software to not allow this.  Supposedly.

I in no way condone the stealing of music.  This is an important lesson however, that whatever one person can create, another can destroy.

Wednesday, August 23, 2006

Toolbox Addition

Recently, I was trying to unravel some pretty hairy code that I inherited. After spending a bit of time trying to map the various aspects of the algorithms implemented I took some advice and tried out some various tools to help with this.

The one I finally ended up actually using was from Logic Explorers.  They've got a pretty handy set of features that let you diagram out code and then using filtering and stuff to get just to the good stuff.  I found it particularly helpful for teaching my lower level engineers.

It is one thing to go over the code and explain why it isn't elegant or needs to be simplified or whatever.  It is much simpler to show them a diagram which actually looks like spaghetti and then they understand why it needs work.

Being a visual person, tools like this really help me.  If you think better on a white board, this might be a good addition to your toolbox too.

Friday, August 11, 2006

New Phone?

Currently I have an I-Mate SP3 and a JasJar.  Unfortunately, they seem to be nearing the end of their lives.  Which means I now need to look around for a new phone.

I've been reading reviews and am a little stymied.  This review of the TyTN from HTC (the guys who make the I-Mate) was very positive but I fear it is a little too big.  Also, the camera quality isn't what I have been hoping for.

If need be I will again go with the two phone approach.  A very small phone with no keyboard, and a bigger phone with a keyboard and an SD slot.

Here's my combined list for an ideal phone:
  • T-Mobile compatible
  • Windows Mobile 5
  • 2.0+ Megapixel Camera
  • SD (not mini) slot
  • Regular headset jack
  • WiFi
If I'm going with a small phone, it should be really small, clam-shells are okay and need not have the SD slot or WiFi.  The larger phone needs at least the same resolution screen as the JasJar.

Any thoughts?

Monday, August 07, 2006

Customizing TFS

On my current gig we are using TFS to manage project lifecycle, version control, and quality assurance.  While there are still quite a few enhancements we are waiting for in much anticipated service pack, the current version is humming nicely.

We found that all the templates had things we liked, and things we didn't like.  Those that collected more information were too bulky to use.  Those that were simply to understand, didn't collect the data points we required.  Which brings us to customizating the work item templates.

For myself, the key to understanding work items templates (WITs) was just mapping Fields to Controls, and then worrying about the Transitions seperately.  The States got in the way in most cases, because I tend to think that most information should be configured by the user not the system.  I recognize that will be taken as a religious statement by many, but oh well.

To start with, we mapped all the data for our modified WIT into the most appropriate field.  In many cases, we simply borrowed the fields from other templates and then used them for our purposes.  After we had all the fields which represented the data we wanted to collect, we were able to figure out which ones had information displayed and how it looked on-screen.  This was pretty straight-forward and totally subjective.

With the data being collected and used on-screen we were then able to get fancy by using Transitions to restrict input, validate states, and in some cases, default some data.  We only used States in a few situations.

If you'd like to see our modified WITs, shoot me an email.

Why didn't I use the process editors?  Because we were shooting for the lightest possible learning curve, smallest number of adjustments, and quickest turn-around.  If you, like me, just have some work to get done and want to start collecting some data, I advise steering clear of the fancy tools too.  Sometimes the simple approach really is the best.

Tuesday, July 18, 2006

Pragmatic Project Principles?

My latest project has some interesting challenges.  Firstly, like virtually all interesting projects the deadline is fairly determined.  It happens to be far away, which is good, but fixed nonetheless.  Next, the resources to meet the tasks are unfamiliar with the technologies we are using, they aren't formally trained in software engineering, and have existed in a culture of complacency for the last several years. Okay, so having resources that are barely competent and lazy is different but not insurmountable.  After all, the best solutions I've ever known have been created by lazy people to facilitate their laziness (and yes, I am known for being mayor of lazytown).  Lastly, it is run by formally trained, highly experienced consultants who have been thoroughly brainwashed and bamboozled into plan-driven methodologies (think waterfall approach and the like).

The main challenge with this is that plan-driven approaches revolve, by definition, around a detailed plan of tasks and schedule, hence the name.  Which works well in environments consisting of relatively known behaviors, requirements, and abilities.  For example, a team of consultants all similarly trained on a project with ample time to define and document the requirements in sufficient detail.  That would not be this project.

To embrace the uniqueness of the environment the approach followed must be capable of supporting the differing levels of resources and abilities, the ambiguous nature of the requirements, and a general resistance to behavioral change.  Simply put, when you have people whose performance you can't estimate, working on tasks that are not fully defined, you really won't have much of a plan to manage against.  And any plan you initially create will invariable fall apart under the speed of which changes are encountered. See Sun Tzu for details.

There are various techniques for operating under these types of conditions, after all we're not the first nor will we be the last to find ourselves in such tumultuous waters.  In following posts, I'll discuss some of these approaches which I have found to be especially effective.  They specifically impact the Document and Design phases of the 5-D Approach which I've discussed previously.

Saturday, July 01, 2006

They Really Did

Pretty much any rational person would understand that the most valuable thing to a software development team is the Source Code they are writing.  They want it protected.  They keep it safe, they respect it.  After all, it is the fruit of their labor.

On my most recent project I'm working with a group of developers over in India who are partnered with my engineers here in America.  For efficiencies sake, we agreed to host the master copy of the source code in India to make it easier for those developers. Evidently, this is giving them way to much credit.

Several times we'd come back in the morning and the items we had worked on (we being anyone in the US) had been deleted.  Vanished, gone, poof.  At the time we wrote this off to just configuration problems or accidents.  It was only a few files here and there, and mostly there were back-ups.

This past week we came in and the WHOLE THING WAS GONE! Someone had DELETED our entire set of source code and associated items.  There was nothing!  Hundreds of man-hours vanished overnight.  No reasons, no oops.  Just gone.  And what is worse, they tried to hide it!  They didn't call and say "Umm, guys..."  We had to find out for ourselves!  What a nightmare.

Long story short, this whole off-shore development thing is turning into a way bigger hassle than it's worth.  Welcome to my personal hell...

Friday, June 23, 2006

All-You-Can-Watch TV

Finally a true all-you-can-watch deal from broadcast provider.  DirecTV is offering a new package called Titanium that gives you every channel, every pay-per-view, every movie, every sports package, everything they broadcast all for one fixed fee.


The cost for this feast of the senses? $7500 a year or about $625 a month.

To help you handle that much content, they provide up to 10 DVRs for your pad and 24/7 concierge service.  I'm not really sure what the concierge service might include. For this price tag I'm not sure I want to know either.

What about you? Interested?

Friday, May 26, 2006


This particular project I've been on is making judicious use of the InternalsVisibleTo assembly attribute.  It's one of the handiest little capabilities I've fallen for in some time.

Coincidently, part of why I like it so much is that my life is a bit like having InternalsVisibleTo for every single other person out there.  In my quest for transparency being able to let others have a peek behind the curtain is must once in while.

Mind you, I'm nowhere near as capable in this department as my good friend Brian who just seems to have people falling all over themselves to socialize with him wherever he goes.  No kidding, the man spoke to her for 3 minutes and she was making doe-eyes at him!  Next day, the security guard wanted to give him a special Private Screening (if you know what I mean).  And lastly, in the cafeteria, some random person actually just came up to him and asked him about the proper use of dental floss!  I swear this is true, I couldn't make this up if I'd tried.  Dental floss!  At what point do you just walk up to someone and ask about how to use dental floss?  He just brings this out in people.  I should probably be inspired, or better yet take notes and ask for lessons.  As it is, I just ride the roller-coaster of being depressed that he is so much cooler than I am, and then feeling superior because of how cool my friends are.

Good thing I'm straight or all this gushing over a friend could be misconstrued. ;-)

Monday, May 15, 2006

Playing on the Plane

This past weekend, while stuck in a tin can at 30,000 feet, I had some time to kill.  Never one to waste a moment (who am I kidding?) I took the opportunity to familiarize myself with the workings of the new Sony Vegas Platinum.  So far, it's one of the coolest video editing tools I've ever used, and I have used more than a few.

Check out what a few minutes of screwing around will get you:
Okay, so it was more than a few minutes, but definitely less than a couple of hours. Now that I know what's possible and how easy it is to create these, I just might have to get my creative juices flowing and kick out a few more. Heaven knows I've got plenty of video that is just waiting for that special treatment.

Friday, April 28, 2006

Engineering Lies

My current "paying-the-bills"-strategy involves working with a company that is doing offshore development.  I've been burning the candle at both ends trying to keep this engagement running smoothly.  Shortly I will have to spend a significant amount of time overseas to handle this fiasco.

Kawasaki recently posted "The Top Ten Lies of Engineers".  It was humorous but definitely struck a chord with my situation.  Specifically #8:
We can do this faster, cheaper, and better with an offshore programming team in India.
Rank and file engineers usually don't tell this lie; it's the CTO who does. Somehow we've got it in our heads that every programmer in India is good, fast, and cheap, and every programmer in the United States is lousy, slow, and expensive. My theory is that for version 1.0 of  a product, the maximum allowable distance between the engineers and marketers is thirty feet.
Once again, funny and insightful all in one go.

Wednesday, March 08, 2006

Team Foundation Server

My recent efforts to deploy a Team Foundation Server have paid off.  This is totally against the best efforts of the actual product to foil my attempts.

Seriously, if you just read the documentation provided to do the installation you will end up pulling your hair out.  However, if you wade through a slew of blog posts, forums messages, and other references it is possible to realize this product with its outstanding feature set.

The key that would have made this whole thing easier for me, would have been more information about the precise integration between Sharepoint Services and TFS.  Specific areas that are important are how the security credentials for each should be configured and why, and a means to allow the Sharepoint data sources to be independantly configured.  The two-step of requiring Sharepoint to be setup but not configured and requiring the TFS installation to configure the Sharepoint data sources is really confusing, error-prone, and just plain unfriendly.

In any event, I finally have VPC images with working installations of TFS so I can start working through specific process template customizations and so forth.  Wish me luck!

Sunday, February 26, 2006

It's coming! TFS is coming!

Having been anticipating this release generally for many years and this product specifically for almost two years, I was very pleased to read that Team Foundation Server is in RC mode.

This product will definitely impact the development processes being bandied about by the masses. [rubs hands with glee...]

Thursday, February 23, 2006


A bunch of cry-babies in Europe are suing Microsoft yet again for supposed violations in software that hasn't even been released yet.  This has to be one of the most ridiculous things I've heard in a while.
To be sure, I am distinctly aware of the plainly evil way Microsoft has tended to treat its customers.  It is no secret that I worked there for several years and that facing evidence of horrible customer treatment is one of the key reasons I choose not to work there anymore.  But just because they tend to treat their customers poorly is no reason to sue for behaviors they might exhibit.
For example, the points cited in the article were:
  • Office incompatiblity - since when is a requirement that your program integrates with everyone elses?  Isn't it a little extreme that Group A is suing because they can't figure out how to gracefully handle a file created by Group B.
  • HTML Replacement - evidently, the fact that MS prefers to innovate and extend on HTML that is just unfair to those who would rather keep the status quo.  XAML has an open specification so there is no reason they couldn't choose to support it.  Or even to ignore it and create their own language or extensions.
  • DRM Bundling - are you kidding me?  So because they are adding a feature to increase security for users, it creates an unfair advantage?  The feature is useless unless all their applications support it.  So how could they not bundle this?  Isn't this exactly the type of support that other DRM solutions would like to create if they could?

As downhill as Microsoft has gone over the years, it is lawsuits like this that just make the world a harsher place.  It is whining children like the clowns at Real, Oracle, and Sun who stifle creation, impede progress, and choke the life out of innovation and progress.  We should sue them for wasting all our time.

I am first to vote with my time, chatter, and pocketbook when I see evil in the marketplace.  Hotmail for example, is sorely lacking in features, is almost unusable because of advertising and its garbage interface.  So now I use GMail for my primary personal email client after being a loyal hotmail fan for many years.  Likewise, I the Firefox browser as my primary web client because of features and performance that are lacking in IE.  If you don't like a product, you can ignore it, speak out against it, or pick a better alternative.  But tieing up our courts just to make a statement is petty, wasteful, immature, and...well...evil.

Tuesday, January 31, 2006

Use Cases +1

In doing some research online, I re-read a post by Paul Hartley (Intentional Software) that brought up Use Cases.

His basic premise is that the practice of law specifically relating to the drafting of contracts is very similar to the practice of software engineering in the implementation of code. This seems like one of those things that should be obvious, seeing as how we use the word contract to describe interface relationships often enough. Once you've finished the article however, it's obvious that the challenges extend beyond just component interactions.

Specifically, his illustrations in how Use Cases are a tool to help in both practices were enlightening. I now have yet another tool when explaining the value and approach for Use Cases.

The Morass of Chaos

Recently I have been struggling with a new architecture. Not the architecture itself, mind you, the process being used to derive it. It's no secret that I am competent and capable when it comes to synthesizing requirements into an architecture supported by solid design trade-offs. In my own mind I like to think this is because I'm quick to assimilate data, I have a robust breadth of experience, and an unwillingness to compromise on correctness. In this particular environment, none of these tools have value. Instead, I find myself without a reliable resource for requirements, forced to propose pseudo-architecture with no foundation in design, and pseudo-design with no context in an architecture. How did this become the norm?

Don't get me wrong, I'm no stranger to highly fluid (some would say volatile) situations in which even the baseline defies definition daily. No small portion of my repute lies in just such distinction. However, success on those terms comes from discipline in the art of the architecture. From a strategy of systematically adding structure on the foundation of designed components. Without some handle, some thread to hold onto, it becomes impossible to weave through the morass of chaos.

In the world of software engineering, like most industries I suppose, we tend to pretend that our challenges and concerns are unique. This self-delusion allows us the confidence to explore these issues without bias or prejudice, supposedly open-mindedly. As often as not I feel it hems us in and inhibits our ability to take the learning done by others and simply apply it. This has been resonating in my thoughts quite a bit lately.

Have I become too rigid in my approach? Should I be more compassionate in my practice? While empathy is not my style by any means, perhaps some allowances need to be made. How do others handle the impotence created by managerial ignorance? Surely not everyone takes the Dilbertian approach towards their workplace. There must be a middle position here. There must exist a way to become if not supportive of, at least less frustrated by, mediocrity. What a pathetic path this is to ponder. Is this the normalcy so many discuss of which I have been blatantly ignorant? I miss my bliss.

Monday, January 09, 2006

Playing Catch Up

If you can't tell, I'm kind of playing catch-up today on some topics that I have been sorely neglecting.

Joel posted a new entry a few days ago and I'm just now getting around to going through it.  Turns out he must have been reading my journal.  Now most of the time, I think the Joel comes off as a blow-hard, but then he puts up a post like this one and redeems himself complete.

That should spell out exactly how self-centered I am. It is is easy for me to pooh-pooh his exceptional work until it lines up with my own ramblings. What can I say, I'm a jerk sometimes.  In any case, read the flippin' article. It's good.  Even if he pretty much ripped off what I've been ranting about for past 8 years.  ;-)

Better than JasJar?

There is an interesting review of the new DualCor device in PC Magazine (details here).  At first glance, it appears like it might even be an improvement over my much prized JasJar. I've been in love with my phone for quite a while now, since it truly is a great convergence form-factor for me.  But being able to take it just a smidgen further when necessary is pretty seductive.

The thing I would be worried about is the same thing I'm always worried about with equipment like this. With the JasJar, the cover can be closed like a clam-shell. Then I can open it and leave it open like a tablet when I desire. Unfortunately, the DualCor is always in tablet mode. Which means the screen is constantly being exposed to dirt, oil, grim, and whatnot. I just don't need that kind of stress in something so vital to my every day.

And of course, it's just big. I mean really.  People said the JasJar was big, but this thing is huge!  Sexy...but huge.

Wednesday, January 04, 2006

New Amazon Controls

If you are reading this on then you have probably noticed the cool new additions to the template.  Namely the two new sections on Books & Movies.  These are examples of a new control I've made available that uses Amazon Wishlists to store collections of books, movies, and cds.  Using the Amazon Wishlist service means I can maintain as many lists as I want, and they can hold any Amazon products I desire.  So I have lists for Top Movies, Mentoree Reading Lists, and Favorites Tunes.  Since they come from Amazon, the details are provided their service and can include information like artist, publication or release date, track information, director, cast, and so forth.

The script that draws the controls is embedded using an ASPX wrapper around a special control I've created in C# using the .NET Framework.  You can download the assemblies here or just reference the wrapper directly as I have done.  If you are hosting your own pages, you might want to pull down the assemblies and embed them directly within your own ASPX pages.  By referencing the control directly in your own host environment, it will improve the performance and make it easier for you to customize the look and feel.  Let me know if you'd like access to the assemblies.

If you aren't capable of hosting your own ASPX pages, then you can reference the wrapper page I have provide at
To embed the script, add the following code to your template:

<script type="text/javascript" src="

You can then change the listid property to point to a list of your own choosing.

The output of the wrapper is JavaScript which will render the items in the WishList as an UnOrdered List.  You can control the look and feel using ClassNames.

Feel free to play with these as much as you like and use them to host your own lists of Amazon items!  You can choose how many items to show, whether they show in random order, and the level of detail associated with each entry.

Any feedback is appreciated.