me@jbrains.ca

Permanent link to this article Your "Discuss" links are broken?

I could use your help, if you have the patience to help me.

At least one person has reported the “Discuss” links are broken for him. They work for me, whether I read postings on the web or through my RSS reader Net News Wire. If you have trouble with the “Discuss” links, I’d appreciate knowing about them. Please send me email describing the problem so I can diagnose it. Thanks!

Digg! Discuss

July 10, 2008 08:56 

Permanent link to this article If we are serious about speed...

I have been reading the Cutter IT Journal from March 2003, when they ran a special issue on Critical Chain Project Management. I wanted to share this especially salient point. I don’t know how to help my clients understand this, particularly because my clients usually find themselves behind the eight-ball and in desperate need of this advice.

If we are serious about speed, we must understand what is required for people to “go faster.” We are not asking them to work faster! We are asking them to wait, to rest, and then work at full speed. And then rest again. Our strategy is to remove all the obstacles that cause them delay and to recognize that relay runners don’t run at full speed all day. They are not “fully utilized” because full utilization of resources is inefficient for speed. For our people to do tasks faster, we must reduce their workload and lower their utilization. This is not a sacrifice for the organization, it is the means for substantially greater project throughput. For our people to do tasks faster, we must reduce their workload and lower their utilization.

How do I help them understand? Click the Discuss link to give me your suggestions.

Digg! Discuss

July 07, 2008 03:00 agile, people, extreme programming

Permanent link to this article Find out where I'm appearing

To borrow from Garr Reynolds, who has taught me much about presentations:

So if you’d like to know where I plan to appear next, click the link under my photo or subscribe to my appearances calendar:

Feel free to invite me anywhere with any amount of notice. You never know what we can work out. Be sure to tell me enough about your invitation to pique my interest!

See you on the road, which would be a town near you!

Digg! Discuss

July 07, 2008 03:00 speaking, people, presenting

Permanent link to this article Agile Adoption Patterns, the book

I would like to announce the release of Amr Elssamadisy’s book Agile Adoption Patterns on Safari at O’Reilly. Amr invited me to write a foreword, but even if he hadn’t, I would heartily endorse his book.

Digg! Discuss

July 03, 2008 03:00 agile, people, extreme programming

Permanent link to this article A rare opportunity in September

Friends, I have been carefully constructing a rather complex travel itinerary for August and September, and one of my prospective clients has gone rather dark on me. As a result, I have ten days of time available that I would like to offer to you at cost. You read that correctly: you can hire me to help your organization between September 1 and September 10 at the unusually low rate of covering reasonable travel costs for Sarah and me. As you might expect, some conditions apply.

  • I will be in Amsterdam, Netherlands on August 31 and I need to fly to Chicago, USA on September 11, so you could hire me in the period in between for up to 9 days, as I’d prefer to have Monday as slack in our travel schedule.
  • I would like to work out a fixed travel budget for our travel expenses, rather than submit receipts.
  • We don’t need a fancy hotel, but prefer someplace with a kitchenette so we can prepare our own meals in the room.
  • We need to eat well, so we prefer a hotel near a local market or good-quality grocery store with fresh produce that is either less than a 15-minute walk or easy to reach with public transport.
  • I want fun work, which means a multi-disciplinary opportunity, including all aspects of your software delivery system, from the boardroom to the bullpen.
  • If prospective client gets back to me by Friday and wants me during this time, then I need to give them priority.

If this interests you, please send email right now to the address in the top-left corner of the page with the subject “Crazy Joe’s September 2008 Consulting Special” or something like that, and I’ll get back to you.

Digg! Discuss

July 01, 2008 00:57 agile, speaking, extreme programming

Permanent link to this article What I've said so far...

...courtesy of wordle.net.

Digg! Discuss

June 25, 2008 03:00 

Permanent link to this article On the importance of disciplined software design and the implications of succumbing to poor practice

Proceed at your own risk.

Digg! Discuss

June 24, 2008 03:00 testing, agile, coding standards, design, extreme programming

Permanent link to this article Testing the UI: presentation and rendering

I recently read Jeff Patton’s column at StickyMinds. His latest article tells us the secret to automated acceptance tests. I responded, and I include that response here.

I like this article, Jeff, but I’d like to point out that programmers can automate more tests in advance without risking a ripple effect when a customer wants to move a field around.

We know that many designs exhibit high coupling between “the UI” and “the logic”, and teasing that coupling apart—mostly moving (business) logic out of the UI—is one step towards more flexibility, less ripple effect and more valuable automated end-to-end tests. We have all seen it. I invite programmers to take one more step.

Inside “the UI” I find two major kinds of code: UI toolkit client code and more general toolkit-neutral code. When I format a monetary amount as ”$12.50”, I can make that decision without involving the UI toolkit; but when I decide to display the text ”$12.50” as a label or in a text field, I need to involve the UI toolkit in that decision. I invite programmers to separate their UI into presentation logic (UI toolkit neutral) and rendering logic (UI toolkit specific). If you do this, you will have an “abstract UI” or “presentation layer” you can test without drawing a real UI. These tests run quickly because they run in memory without having to paint a screen or invoke a UI toolkit component of any kind. You don’t need end-to-end tests here. When someone decides to move a field around, none of your presentation layer tests need to change, and you avoid the ripple effect. Yes, your end-to-end tests change, but over time you’ll automate fewer of those, preferring instead to automate the presentation layer tests.

So programmers, do your worst! Introduce a true presentation layer into your design, starting with the next screen or page. You’ll thank yourself, and maybe me.

Digg! Discuss

June 19, 2008 03:00 testing, agile, refactoring, design, antipatterns, extreme programming

Permanent link to this article JUnit Recipes coming soon to Safari Online

I would like to announce that Manning Publications has begun sending its books to Safari Online, the subscription-based O’Reilly service. I have found the service useful over the past three years, particularly after our flood wiped out much of my professional development book collection. If you subscribe to the service, but have not yet read JUnit Recipes, you will soon have your chance!

Digg! Discuss

June 18, 2008 03:00 junit, testing, agile, writing, design, extreme programming

Permanent link to this article Fixing Mail.app as it pertains to IMAP and gmail

I am in the process of making gmail my One and Only Mail Database. My first tentative steps showed that gmail filters duplicate emails, which is great, because I have multiple copies of several hundred emails, thanks to POP. Naively, I just started dragging emails from my other Inboxes to my gmail/IMAP/personal mail Inbox and letting the messages synchronize on the gmail server. My goal was to make my other Mail.app accounts empty so I could disable them. This worked well for a while, but for most of today, Mail.app has been telling me this:

Mail has undone actions on some messages
so that you can redo the actions while online.
Mail has saved other messages in mailbox “INBOX”
in “On My Mac” so that you can complete the 
actions while online.  

Additional information: The attempt to read data 
from the server “imap.gmail.com” failed.

I read an article or two and figured I’d overburdened my gmail server and it was scolding me by limiting my access for a while. When about eight hours passed without any change, I knew I had a problem, and that problem was the same email over and over again. Something about embroidery of all things. Each time the message popped up in my “On my Mac” INBOX, I moved it to Trash, then erased deleted messages… nothing worked. Finally, out of desperation, I simply pasted the entire message—you can see it’s quite long—into Google.

Seek and ye shall find.

The advice there, however, didn’t impress me. I might not be a Mail.app developer, but I imagine that if I delete my entire offline cache, I’ll lose all the emails I moved into my gmail/IMAP/personal mail inbox. That would be bad, considering it’s about 10000 messages, many of which matter to me. I thought I should investigate, and fortunately, it wasn’t too hard to figure out what to do.

I went to ~/Library/Mail/IMAP-[myemailaddress]/.OfflineCache and saw about 10000 numbered files. I looked at one of them and saw an email. I figured I could grep to find the offending email, delete it, restart Mail.app, then all would be well. So I did, and so far it is.

To be clear, here is what I did:

$ cd ~/Library/Mail/IMAP-****/.OfflineCache
$ ls
1000        1001        1002        1003        1004        1005        1006        1007        1008        1009
1010        1011        1012        1013        1014        1015        1016        1017        1018        1019
1020        1021        1022        1023        1024        1025        1026        1027        1028        1029
....
$ grep -i embroidery *
[...Matched email 854....]
$ rm 854

That worked great. I hope it helps you, too.

Digg! Discuss

June 11, 2008 03:00 mac, just to be clear

Older entries | Older entries at diasparsoftware.com