Just trying to make sense of things...

Favor Concepts Over Commands

Monday, 19 October 2009 13:25 by jordan.terrell

Finally, I understand Git!!!

For a while I’ve been scratching my head on why so many people are jumping on the Git bandwagon.  I understood conceptually the benefits of a Distributed Version Control System (DVCS), but every time I sat down to learn Git I ended up more confused than when I started.

I even bought a book - Pragmatic Version Control Using Git.  Even after going through that book I still didn’t get it.  I was drowning in a sea of commands and I understood the basics of adding and committing files, however, outside of that I was finding myself getting into trouble and not having a clue on how to work through it.  I tried using some visual tooling to help, but it didn’t.  I attributed it to Git being far to complicated (and in some ways it is compared to other VCSes), and stopped trying to learn Git with a plan to pick it up in the future.  Much later in the future.

Then I stumbled on a book that, although being published by Apress, is available in open source formPro Git.  Not much time had passed since my last attempt, so I wasn’t really enthusiastic about reading another Git book, so I semi-begrudgingly read chapter 1.  Still, I wasn’t excited – chapter 1 covered the same stuff that was in Pragmatic Version Control Using Git.  Chapter 2 wasn’t that much better – just a laundry list of commands that you are presented with.

Honestly, I don’t know why I kept reading, but I’m SO glad I did.  Chapter 3 is where things just clicked.  The author started to use visualizations to show how Git works, and he started to explain all the underlying concepts of how Git represents things.  As each command is executed, he would show a visualization of how the Git repository changed, and that further reinforced the conceptual ideas.  Thru the rest of the book the visualizations were used and this added so much to the value of the content.

I finally understand Git and I will be slowly moving over to it as my main VCS – replacing Subversion.  I still think that the supporting tools need to mature (e.g. Visual Git tools – I don’t like command prompt source control), but the basic toolkit is rock solid.

If you want to learn Git, I strongly suggest you buy Pro Git (support the author).  If you plan to teach Git using any medium (e.g. book, blog, talk), please favor teaching concepts over commands – your audience just might git [sic] it!

Categories:   Programming | General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Google Wave = Social Networking Crack

Friday, 2 October 2009 10:19 by jordan.terrell

At least according to others…

I’ve not received an invitation to Google Wave yet.  But from looking at Robert Scoble and Louis Gray’s blog posts, it may be a bit overhyped and overemphasize real-time communication.  It makes me think of people who watch the stock market real-time – every little fluctuation in a stock price or derivative causes a corresponding fluctuation in their heart rhythm.  Not for me.

I’ve found use for certain social networking sites, but I fall into the camp that doesn’t feel compelled to monitor the goings on of my friends and associates on a daily or even weekly basis.  Some social networking platforms I’ve seen bring the worst out of people and they encourage so much drama.

Google Wave, in some ways, aims to bring many of this social networking paradigms together into a unified platform.  Definitely something I’ll try and may even find use for – but so far, based on what I’ve read and seen – it might be something I group into what I affectionately call: Social Networking Crack.

DNUG Talk: Follow Up

Friday, 2 October 2009 10:01 by jordan.terrell

I think last night’s talk I gave on Domain Driven Design was a success.  I received good feedback from those who attended.  We had around 50 attendees.  A good number of people had never heard of Domain Driven Design (which was surprising to me), many had heard of it but didn’t know much about it, and one or two people had read the book.  It was exactly the audience makeup I was targeting.

Domain Driven Design is not an easy topic to introduce.  It’s very broad, at times very complex and intricate, and it is a very conceptual topic – that is to say, it is more about how you think and communicate about a domain (business problem/solution space), and less about how you write software around the domain.

I outlined a number of follow up resources – frankly a LOT of follow up resources.  Domain Driven Design isn’t something that you are going to pick up in a few months; it is going to take time to absorb and apply.  There are technical concerns that often influence how you apply Domain Driven Design, and those concerns can often be addressed with other documented patterns – that’s why I provided supporting resources.

If you came to my talk, I’d appreciate any feedback you’d like to offer.  I’m giving the talk again at the Twin Cities Code Camp on October 24.  That is going to be a challenge – I only have 75 minutes at that venue, and I easily used 90 minutes last night (excluding discussion about follow up resources).

Thanks to everyone who came!

DNUG Talk: Intro to Domain Driven Design

Thursday, 1 October 2009 07:51 by jordan.terrell

I’m giving a talk today at the Twin Cities .NET User Group, sponsored by ILM and hosted at Microsoft.  I chose to give it on Domain Driven Design because it is something that I’ve been learning since 2005, but there still seems to be many people who don’t know what it’s about.  I’ve received lots of feedback from people expressing interest in the topic, so hopefully we’ll see a good turn out.

I’ll be posting the resources after the talk – stay tuned!

Kindle: Where Does My Feedback Go?

Wednesday, 12 August 2009 13:55 by jordan.terrell

I recently provided a review of my Kindle DX experience – and it continues to be a positive one.  The “screensaver” that runs on the Kindle rotates through a number of images, the last of which displays an email address that you can use to provide feedback and suggestions about your Kindle experience.  I’ve done this twice, and here are the suggestions I’ve provided:

  • Organization
    • I would like the ability to mark books/documents as read or unread.
    • I would like the ability to mark items as private or public - show only public items on power up - provide some way to navigate to private items
    • I would like the ability to apply arbitrary tags to items - allow me to filter the item list by one or more tags
  • Screensaver settings
    • Allow the user to specify the amount of idle time the Kindle waits before it enters the "screensaver mode"
    • Allow the user to change the images used - some of them I really don't like (one or two I personally find mildly offensive) and I have turn the Kindle on and then off just to change it
    • Allow the user to disable the use of images - blank out the screen and display a simple message indicating that the Kindle has gone to sleep
  • PDF Support Enhancements
    • Add indexing/searching support across multiple PDF files - I realize this will not work with PDFs are are just images of text
    • Support dictionary look up of words in PDF files that contain text

After submitting this feedback, I received the following message:

Thanks for writing about Kindle DX feedback.
I'll send your comments to our Kindle team for consideration.
Strong customer feedback like yours helps us continue to improve the service we provide, and we're glad you took time to write to us.  It is always important for us to hear how customers react to all aspects.
Thanks for your interest in Amazon Kindle.
Please let us know if this e-mail resolved your question:
If yes, click here:
If not, click here:
Please note: this e-mail was sent from an address that cannot accept incoming e-mail.
To contact us about an unrelated issue, please visit the Help section of our web site.

Best regards,
We're Building Earth's Most Customer-Centric Company

Pretty standard boiler-plate “thanks for submitting your feedback” message.  Now, I’m not complaining about this message – it is the expected initial response.

However, I have not a clue where my feedback has gone or what is being done with it.  Did the product team review it?  Has it been added to a backlog of feature enhancements the development team is working on?  Or is it just rotting in a database somewhere?

I don’t think Amazon has done a good job of communicating the future roadmap of improvements and fixes to the Kindle platform and devices.  Even if they never plan to add enhancements, I am in some ways I’m okay with that – I really enjoy the Kindle experience as it is today.  But by giving me an avenue to submit feedback, Amazon has created an expectation that my feedback will somehow be acted upon.

Anyone at Amazon want to clue me in on what happens with the feedback from Kindle users?

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Customer Is Not A Party

Monday, 3 August 2009 10:59 by jordan.terrell

This is in response to this blog post and it’s comments (read it first).

I prefer the usage of the term Party because I also believe it is a more common abstract term.  I will say this though: Customer is not a Party.  It is a 'Role' that a 'Party' plays.  For instance, I would use 'Person' and 'Company' as parties, and 'Customer' and 'Supplier' as roles.

This is not my own idea.  Martin Fowler does a good job of talking about Accountability patterns, which is where he references the concept of a 'Party', but that concept goes much further than the Accountability patterns.

Archetype Patterns

There is a much greater pattern.  In fact there are two patterns - Archetype Patterns.  The first is the 'Party' Archetype Pattern, and then there is the 'Party Relationship' Archetype Pattern.  Both are closely related, as the latter builds on the former.  These two Archetype Patterns are well covered in a wonderful, if not horribly named book: Enterprise Patterns and MDA (hereafter EPM).  Many Archetype Patterns are discussed: Party, Party Relationship, Customer (which more accurately models this as a Party Role), Product, Inventory, Order, Quantity, Money, and Rule.

I would strongly recommend someone looking at Martin Fowler's Analysis Patterns for modeling ideas/concepts to also read EPM.  In my opinion EPM is, in some ways, a superset of what Analysis Patterns talks about, and EPM's patterns are more generally applicable – hence usage of the term Archetype.

One final comment - with all of these patterns there are two principles that need to be applied, as Martin Fowler pointed out (Analysis Patterns, page 13):

Principle: Patterns are a starting point, not a destination.

Principle: Models are not right or wrong, they are more or less useful.

I Don’t Borrow Books to People

Tuesday, 28 July 2009 23:06 by jordan.terrell

That might sound like an incredibly random and selfish statement, but let me expand on this thought:

I don’t borrow books to people, but I will give them away as a gift.

Telling you this was prompted by a review of the Kindle 2 by Rockford Lhotka. Rocky basically said one thing he doesn’t like about the Kindle is the inability to borrow books to other people – something that is easy to do with a real book.

This doesn’t bother me at all.  Rarely do I borrow books to other people, and this is because I’m very particular about how my books are treated.  For instance, I try not to eat or drink around them in a way that might risk wreaking them.  I also refuse to write on my books.  I’ve seen people borrow books from someone they know and then write their own notes in the margin. In my opinion that is a just a little rude.

The other reason I don’t borrow my books out is because I tend to buy books that have longer term value.  Generally I won’t buy a book about a new technology stack that will be here and gone inside of a year.  I did, however, say “generally” – not never.

I do have a double standard though – I will borrow your book if you let me.  I will treat it will respect and care, and I’ll be sure to set expectations as to when I plan on returning it.

So for those who know and interact with me in real life, don’t take it personal.  However, I might gift a book to you if I’m done with it, or I think you really should read it.

One more thing – someone recently asked if they could borrow my Kindle. Uhhh… Not going to happen!

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (4) | Comment RSSRSS comment feed

Review: Kindle DX

Monday, 13 July 2009 09:16 by jordan.terrell


Six years ago the very thought of reading a book on a electronic device was something I cringed at.  This reaction was not due to a dislike of technology, but because the technology had not matured to a point where the experience even came close to reading a real book.  LCD screens, although having improved, did not work at all outdoors, caused eyestrain, and required much more power than was convenient.

I can’t remember when this happened, but I remember when a technology company made the announcement that they had developed electronic paper that they felt would be viable in a reader device.  The idea of a reader device working just as well outside and inside, having no backlight and thus causing no eyestrain, and requiring power only when the paper needed to be updated (i.e. turn the page) – all of this intrigued me.  However, I made the assumption that such technology would not be available to consumers for 10-15 years.

Then came the first-generation Kindle. Guess I was wrong on the timeline.  Everything about it sounded (to me) like a viable platform.  However, content for the Kindle became my next issue.  It seemed like the Kindle’s content was heavily weighted toward the crowd most interested in the latest New York Times Best Sellers.  As I looked through the content that most interested me (mostly technical/reference), almost nothing was available via Kindle.  So, I promptly disregarded the Kindle release.

Then came the second-generation Kindle.  Definitely an improvement over the first generation device.  By this time some of the content I was interested in was starting to become available, but not enough to justify buying the device.  At this point I noticed that the Kindle could have other content converted, as long as you emailed it to a special Kindle email address.  However, I found out that this butchered most technical content.  So, once again, I promptly disregarded the Kindle release.

The DX

A few months later Amazon announced the Kindle DX.  At first glance the biggest distinction I could make is that it was a bigger screen.  Nice, but what really caught my attention was this: “native PDF support”.  Excellent!  There was way more content that I was interested in available in PDF format.  On top of that, I could produce documents in PDF format and use it for giving presentations.

I ordered and received the Kindle DX three weeks ago – it’s been a game changer.  I’ve already finished two books on the Kindle and I’m working on my third.  I’ve been using it for many other purposes as well, one of which is giving a talk off of it.  The PDF support has been phenomenal, and it is THE reason I’ve enjoyed owning the Kindle.  I’ve got way more content on my Kindle than I could probably consume in two years, but that’s okay.  It allows me to carry things along as reference material, and it lets me take advantage of those 5-10 minute gaps between activities to get some reading in.  I’ve even purchased some Kindle content directly from Amazon, which is almost TOO easy to do.

I’m hoping they continue to add support for the PDF format (e.g. searching across multiple PDFs, dictionary lookup of words while reading a PDF). That being said, I strongly recommend the DX, even if you are not interested in technical content.  The PDF support alone makes this a great platform!

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed

Google Announces Their New Operating System

Wednesday, 8 July 2009 10:17 by jordan.terrell

Google is trying to trade in on their marginal browser success, Google Chrome, with the announcement that they are going to develop, release, and market a new operating system, Google Chrome OS.

An admirable project to say the least, with touted goals such as security and performance.  This is really the next step in Google’s quest to turn the PC into what really amounts to a thin client to the web.  For some, that will be great.  For those whose focus at a PC is on using the Web for email, twitter, blogs, weather, and local/world news, this may end up being a great platform for them.

As far as applications go – the kind that actually need the raw power of a CPU and GPU – games, image editing, video editing, and software development tools – someone who uses these kinds of applications will likely find this new Google OS…wanting.  At least the first iterations of it.

Personally, I do not subscribe to the “everything on the Internet” approach.  At least not when the Internet platform is composed of HTML, CSS, JavaScript, Flash, and Silverlight.  Right now this platform can handle only a subset of application demands.  This, on top of the fact that constant Internet connectivity, although improving, is not always a given.  Bandwidth is still an issue for many.  Privacy is another – I refuse to store my documents and other digital assets solely on the Internet.  I may publish them on the Internet, but I’m not about to push my computing platform into the cloud.  For some things, it’s just not feasible. I have HD video recorded that requires terabytes of storage space – where am I going to put that on the cloud?  When am I going to have the time to push that much data through the tiny little straws we call “broadband Internet”?

As I said, the Google OS is an admirable project.  Challenging the status quo with regard computer operating systems will likely result in new ideas and innovations.  That being said – I think Google is a little premature in what they would like to accomplish with this.  That also being said, I’m more than willing to “eat crow” and be proven wrong.

Agile Zen

Wednesday, 10 June 2009 08:12 by jordan.terrell

Nate Kohari, of the Ninject fame, and his bride Nicole have just launched a new company and a new product, Agile Zen.  Agile Zen is a project management tool that emphasizes lean principles, drawn from the work done in the Toyota Production System.  I’ve not been able to interact with the site yet, but from the feature walkthrough it looks very clean and very powerful.  Having had a chance to look at the source code of Ninject and see the genius in its design and implementation, I can only expect the same out of Agile Zen.

I’ll be keeping an eye on this one!

Tags:   ,
Categories:   Programming | .NET
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed