Ahoy, mateys. Gather ye 'round the scuttled water butt and I'll tell yer a tale or two. My name is Craig Jones, and this is my personal weblog. I also blog in two other places: For computer producity tips, see my posts on codejacked.com. For my thoughts on software development and business, see my company weblog.
Friday, December 17, 2004
Announcing CollectorStreet.com
Click here to see some example ads (items that I am personally selling).
Sunday, September 12, 2004
Proud to be a Swing Voter
Saturday, June 19, 2004
Quick, Easy, Free UML Diagrams of Java Classes
I read in Martin Fowler's blog that there's a cool open-source tool, called UMLGraph, he's been playing with for rendering UML class diagrams. If Fowler says it's worth checking out, then that's good enough for me. What the heck? I'll give it an hour.
So, I installed the tool itself (a JavaDoc Doclet -- just one jar), and I installed the free executable from AT&T Labs that actually does the rendering. I added a JavaDoc command to my Ant build script, and I added a call to the AT&T tool. Walla! Pretty UML diagrams to go with my program! It couldn’t be any simpler.
Not that I'll ever wait until the end of a project and generate reams of UML documentation to sit on a shelf -- what this will allow me to do is start to write new Java code, without any meat on the bones yet, and immediately get diagrams as I go to show off at design reviews and whatnot. Don’t like the way the design looks? I'll just take advantage of the Eclipse refactoring tools, and then re-render the diagrams. Is that slick, or what? No need to pay for a Rational Rose license, nor go though contortions to install it. No need to learn how to use the Rose UI. And, best yet, no need to "transcribble" (transcribe with possible errors) the design into code -- it's already code.
Note that I've only played with UMLGraph's class diagrams thus far. There's also a way to draw sequence diagrams, but it doesn’t work off of the Java source. You have to use something called the PIC language, so that's not as slick, but I'm not complaining. Being able to render class diagrams quickly and easily (and cheaply) is a tremendous boon. I couldn't wait to spread the word.
Oh, and back to why I love the Java open-source community: Fowler's blog entry wasn't even a day old when the UMLGraph people changed the front page of their site to reference the suggestions for improvement that Fowler made. I wouldn't be surprised if the team has acted on them already.
Friday, June 18, 2004
Opting Out
Thursday, June 17, 2004
The Decline and Fall of Our Civil Rights
I saw this on techno.blog("Dion"): "Teacher Arrested at Airport - At New York Kennedy airport today, an individual later discovered to be a public school teacher, was arrested trying to board a flight while in possession of a ruler, a protractor, a setsquare, a slide rule and a calculator. Attorney general John Ashcroft believes the man is a member of the notorious al-gebra movement. He is being charged with carrying weapons of math instruction.
'Al-gebra is a very fearsome cult, indeed', Ashcroft said. 'They desire average solutions by means and extremes, and sometimes go off on a tangent in a search of absolute value. They consist of quite shadowy figures, with names like 'x' and 'y', and, although they are frequently referred to as 'unknowns', we know they really belong to a common denominator and are part of the axis of medieval with coordinates in every country.' As the great Greek philanderer Isosceles used to say, ! 'There are 3 sides to every triangle.' When asked to comment on the arrest, President Bush said, 'If God had wanted us to have better weapons of math instruction, He would have given us more fingers and toes."
Here's the serious part:
On last night's Tavis Smiley Show, civil rights attorney Connie Rice expressed dismay at how she seems to be the only one of her peers who is concerned about the extreme errosion of privacy that Patriot Act II will introduce. I was driving while listening and couldn't take notes, so I can't go into particulars, but I was appauled as she read off the things that Ashcroft will be able to do without a by-your-leave from anyone. It's scary stuff!
In searching via Google, I see she's really not totally alone in this. The Bill of Rights Defense Committee in MA is a prominent site with lots of resources and calls to action.
Sunday, June 06, 2004
Friedman on Outsourcing
It starts off by listing all of the things that are currently being outsourced from call centers (commonly divided into inbound, i.e. service calls, and outbound, i.e. sales calls), to proofreading novels, to Indian medical doctors analyzing x-rays. They say its only the tip of the iceberg. I'm waiting for someone to start outsourcing the proofreading of American résumés.
Thursday, May 20, 2004
Nickeled & Dimed to Death x 100
A few days ago I read an article on SlashDot about T-Mobile charging their customers a "Regulatory Programs Fee" which sounds like a government tax but is just a way for them to stick it to the customer without changing the prices they advertise. Sneaky, sneaky. I think they took their cue from the practice of hotels hitting you with a "resort fee" that's on top of the advertised rate and never mentioned until you arrive to check in. Sneaky, sneaky. (BTW, I was considering switching to T-Mobile once until I realized that the contract they wanted me to sign bound me to terms that appeared only on some arbitration company website that wouldn't come up in any browser. Talk about buying a pig in a poke!) Anyway, you can bet I'll be watching out for when my cell phone company follows T-Mobile's example.
And, of course, today my cable bill went up another $2.50 for the second year in a row.
It used to be that you had to watch out for being nickeled and dimed to death. Now, it's $2.50'd and $35.00'd to death.
Tuesday, May 18, 2004
Two Books on Being a Software Professional
The productmarketing blog points out that Gunderloy's book is "generous with references to other works," and that his index of all web-accessible references is online. Be sure to check it out, whether or not you read the book. At a quick glance, I recognize many sites that I know and love, and I'm sure I'll have fun exploring the rest.
Thursday, May 06, 2004
Tech Jobs on the Rise
Wednesday, April 28, 2004
Don’t Refactor and Enhance at the Same Time
Anyway, the bottom line is you aren't truly doing refactoring unless
- you isolate the refactoring activities from the feature-adding activities,
- before you apply a refactoring you have an automated unit test that puts the existing functionality through its paces, and
- the exact same unit test runs cleanly before and after the refactoring is applied.
Friday, April 23, 2004
The Myth of the 100-Year CD-ROM
Getting Hired
Saturday, April 17, 2004
CandidateMap.com
Friday, April 16, 2004
"Intro to Refactoring" on Tuesday, April 27
If you have heard the term "refactoring" bandied about, but you're confused as to exactly what it means, you are not alone. It doesn't help that people tend to misuse it all of the time. This introduction will define what refactoring is, what it is not, when you would want to use it and why. In case you are completely in the dark, you'll find an official definition of refactoring below, but don't worry if it doesn't make sense yet. All will be made clear.
This presentation will last a little over 1 hour and include 5 specific step-by-step examples of refactoring. The examples are in Delphi, but
should be easy enough to follow along for non-Delphi programmers as well. A basic understanding of object-oriented programming is assumed (e.g. encapsulation and inheritance). Being able to read a UML class diagram will definitely help as well.
"Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external
behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring." -- From www.refactoring.com
The OCDUG meetings are held at Red Brick Software, 1301 East Lincoln Avenue, Orange, CA 92865. [Directions]
User Interfaces for Infrequent Tasks
One way to hide complexity is through a guided UI (a.k.a. a wizard or an interview). A common misconception is that a wizard makes a good UI for novices, when in fact they are more properly employed to address infrequent tasks, and should have nothing to do with whether or not the user is a novice. Novices aren't novices for very long (when performing a frequent task). Writing a guided UI for a frequent task is bad, because it eventually bogs the user down. On the other hand, a guided UI is perfect for an infrequent task, especially a complicated, critical, or finicky one, no matter whether the user is generally regarded as a novice, intermediate, or advanced. You might say that when it comes to infrequent tasks, every user is always a novice.
Monday, April 05, 2004
Outsourcing Battle is a Red Herring
These executives keep asking the wrong question, "How can I continue to develop the same old crappy software, but do it cheaper?" They ought to be asking, "How can I develop better software?" "How can I develop it faster?" "How can I make it last longer and be more useful?" By improving the quality of their software it'll be more desirable. It'll draw more customers and can demand higher prices. Answering these questions can lead to a 100-fold improvement on the ROI versus any kind of cost-saving measure.
As an added bonus, better software is, well, better. If you want to talk about morality, let's talk about how much better our society will be when the software we use provides more intuitive user interfaces, adapts more easily to our needs, offers increased security, and performs faster.
The sad part is that the answers to these questions are right in front of our faces. All we have to do is open our eyes. The 'Net is a free, all-you-can eat buffet of best practices, high performance/high security open source frameworks, feature rich open source tools, design pattern catalogs, refactoring catalogs, ... you name it.
If you really want to keep the programming jobs at home, then quit sniveling and do something to make yourself and your fellow programmers more valuable. Pick one thing and explore it. Read up on a management methodology like XP, RUP, or Scrum. Or, become familiar with a tool like Eclipse. Or, try out the unit-testing framework that goes with your language of choice. Or, otherwise avail yourself of the wisdom of luminaries such as the Three Amigos (UML), the Gang of Four (Design Patterns), Martin Fowler (Refactoring), and Steven McConnell (Code Complete). Apply what you learn and pass it on. It's as simple as that. (Not easy, but simple.)
Tuesday, March 30, 2004
Levels of Indirection
A group of my coworkers in the Tucson office started a cable access show called Smokebreak TV and released their first episode last week. My friend, Vlad, a coworker with me in the local office, reviewed the episode in his blog, offering up an E-for-effort appreciation of the show and noting the potential bulldada factor. Being unfamiliar with the term, bulldada, I tried looking it up on Merriam-Webster as well as doing a "define:"-style Google search. Both turned up empty. I then tried a regular Google search on "buldada means" and got a hit on a book review that defined the term. The book in question was "Galaxy 666" by Pel Torro, which Ken DeVries called the worst science fiction novel ever written. He said that it "does for literature what Plan 9 From Outer Space did for the cinema." Reading the quoted passages is what sent me reeling. So, thanks guys. I owe you one.
Wednesday, March 24, 2004
iPod Race movie
Thursday, March 18, 2004
Endo-Testing with Mock Objects
By the way, for anyone still using Delphi, there’s a Delphi Magazine article on the subject.
Monday, March 15, 2004
You are Invited - Intro to UML & Design Patterns
The Unified Modeling Language (UML) comes in multiple forms and serves many purposes. This presentation will describe UML diagramming in particular and discuss the uses for it. All 9 diagram types will be presented with an emphasis on the Class diagram. (That's the one that most people think of when you just say "UML diagram.")
Software design patterns first became popular with a book called "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (a.k.a. "The Gang of Four"). All software is designed according to patterns, whether or not the programmers realize it. This book sheds light on how patterns are used in software design and offers up a catalog of certain patterns that tend to recur in good code. Many other pattern catalogs have emerged subsequently, but the original GoF catalog is still considered the proper starting point. This presentation will cover: the general concept of patterns, the difference between patterns and idioms, and how patterns are described and catalogued. One pattern (Singleton) will be discussed in detail.
The OCDUG meetings are held at Red Brick Software, 1301 East Lincoln Avenue, Orange, CA 92865. [Directions]
Friday, March 12, 2004
Proposed Spammer Punishment
When we finally figure out how to catch and convict spammers (and virus writers), I propose that they each be punished as follows:
- Lop off his or her head
- Put the head on stake
- Aim a web-cam at it as a warning to all other would-be spammers
That's not too lenient, is it?
Why Anti-Spam Technology Doesn't Work
Wednesday, February 25, 2004
Borland? Or Bore-bland?
I should mention that I was 10 minutes late, so I can’t speak to the very start of the meeting. When I arrived, Kaster was winding down from some introductory remarks about how Borland is repositioning itself as the "whole development lifecycle" company (or something like that) -- complete with an epiphany-inspiring puzzle piece logo that's sure to change my life forever.
Kaster then turned the floor over to two of his colleagues in the Starteam division (which is still located here in OC). They proceeded to bore us to death for almost an hour. Try as I might, I couldn't figure out why they were even up there. This had nothing to do with either Delphi or .NET. At first, I thought maybe they were leading up to some news about Starteam, but my anticipation faded fast when they started droning on with a demo of how to set up a Starteam project. Talk about old news! As a longtime Starteam user, I can attest that there was not one scintilla of information less than 3 years old. Maybe it was because of my seat in the back of the room -- one of those folding chairs with an attached writing desk -- but I could swear I was back in high school and had been sentenced to detention.
When they got to Q&A, I decided to throw them a bone. In keeping with their development lifecycle theme, I asked about how well Starteam integrates with their requirements tracking tool, Caliber RM. "For example," I asked. "Say a project manager is looking through the bugs that have been reported as change requests in Starteam and decides that a few of them should really be treated as feature requests for the next version. What facilities are there for converting such bug reports into Caliber requirements?" The answer I got was really convoluted, but what I think I heard was essentially "Ctrl-X/Ctrl-V." Am I missing something? How does the self-proclaimed thought leader in development environment integration expect to thrive by selling us bundled products that don’t integrate?
Needless to say, by the time Kaster got back in front of the projector and started to actually talk about Delphi 8, I was numb. I made a valiant effort to follow along and understand what big things Delphi 8 brings to the .NET table, but I didn’t see any. All I saw was Microsoft finger-pointing and all I heard was more old news: "Live data at design time this" and "still not quite drag-and-drop form design that." Ho, hum. By 8:45 I was counting the minutes until the meeting ended, hoping to salvage what was left of the evening with one of our famous parking-lot “after-meetings.” But the meeting ran long and there was still no end in sight, so I bolted.
Monday, February 23, 2004
Contact Management Software for Job Seekers
Wednesday, February 18, 2004
Computer Science Careers
- Joel Spolsky of Fog Creek Software is outspoken on many aspects of software craftsmanship. His site includes a pretty good forum discussion on questions to ask the employer during an interview. Be sure to check out Igor K's contribution at the end entitled, "How to research the company," as well as Ged Byrne's great list of questions such as "Do you fix bugs before writing new code?" and "Can you make a build in one step?"
- Right Management Consultants do a fantastic job running outplacement seminars and otherwise helping people to boost their careers.
- Software Development magazine is always a must read. Among the technical articles you will usually find one or two per month concerning software careers (salary surveys, outsourcing issues, résumé writing, etc.)
Tuesday, February 17, 2004
Can We At Least Agree on What "Agree" Means?
Shouldn’t that be “disagree?” I don’t know where this guy studied math, but I was taught that when there is a 55-45 split of opinon, that means there is LESS agreement among the parties than with a 67-33 split, not more. Prop 56 would certainly make it easier to get a spending bill to pass, but it would be in spite of disagreement among the legislators, not because they suddenly agree.
Monday, February 16, 2004
The Reasonable Man
Wednesday, February 11, 2004
Brainstorming and Pair-Programming
Vlad: "That's a bad design."
Craig: "Only because we are testing it."
I'll leave the circumstances to your imagination, although I assure you that I was serious at first, before I realized the absurdity of what I had said. Well, we both cracked up. Then, needless to say, we changed our tack. Chalk up another victory for pair-programming.
On a related note, Jim Powell, a colleague of mine, gave a presentation yesterday about brainstorming techniques. For example, he talked about how an initial pool of ideas can be built up in the generation phase by pushing the boundaries, piggy-backing on the previous ideas, and inverting or negating the previous ideas. (More on that in a moment.) Afterwards, it occurred to me that one of the reasons pair-programming works so well is that it basically amounts to an endless stream of mini-brainstorms between the two partners. I don’t have any objective proof, but I swear that whenever I pair with someone, we’ll write code that is easily 3-4 times tighter and cleaner that if I had written it alone. I'm sure the brainstorming aspect has a lot to do with why.
Regarding idea generation via negation, I will never forget the first time I tried it. I was using a technique called “20 Answers” which is essentially a way to do a brainstorm single-handedly. I started with a blank piece of paper and wrote my question at the top, “How can I get this bleepin’ report-printing framework to fill in the calculated totals I need on the cover sheet at the beginning of the report, even though the figures to be totaled haven’t been processed yet?” (That was back in my C/PM days, and the tool I was using didn’t know how to make a preview pass when generating a report.) Some of the possible answers that immediately came to mind were:
1. Somehow pre-calculate the totals
2. Write a post-processor to fix up the cover page
3. Bypass the framework and write the whole report in Print statements
But they were obviously too complicated. So, I loosened the constraints and brainstormed some more...
8. Find another framework and rewrite the whole app
9. Write my own framework from scratch
Of course, those were even more complicated. Eventually, I started getting really silly and downright contrarian. I thought to myself, what if I don’t try to answer the question at all? Or that I only answer part of the question? That generated a few more possibilities...
15. Perhaps I could convince the customer that they don’t really need the totals on the cover sheet?
16. Perhaps they’d settle for a summary page at the end instead of a cover sheet in front?
And then it finally hit me. Who says the cover sheet has to actually come out of the printer first? Thus:
19. Print a summary sheet at the end that looks like a cover page and have the clerk move that page to the front before mailing the report.
Walla! I had struggled with that problem for a few days before I brought out the "big guns" and went through the 20-Answers exercise. It’s true what they say about the power of getting things down on paper to stop the mental "looping." But disciplined brainstorming like that isn’t something that comes naturally to a single individual, at least not to me. When I’m pairing, however, it does happen naturally -- and constantly. It's just part of the conversation.
I’ve been pair-programming on and off for a few years now, and the more I practice it, the better my work gets. What’s your experience? Write me.
Thursday, January 22, 2004
Republic Day
This Sunday evening it'll be Monday morning in India where they will be celebrating Republic Day. Last August I had the opportunity to experience life in India first hand. It is a land of wild extremes -- big business cheek to jowl with abject poverty, fabulous art and architecture surrounded by squalor, and ancient icons of culture and religion upstaged by garish billboards and cell phone transceivers, just to name three. Even though I was warned to expect this, the reality is never quite like you imagine. My biggest surprise, however, was of the pleasant sort -- finding out just how friendly the people are. I guess nobody thought to warn me about that. Other than the street beggars (who I must say were really annoying), I didn’t meet a single unpleasant person during my entire stay in India. Indeed, almost everyone went out of his or her way to help me, to explain things to me, and to otherwise just wish me well.
So, to my friends in Mumbai and Bangalore, may you have an outstanding Republic Day. I hope it finds you healthy and happy.
Wednesday, January 21, 2004
Inane E-Mail Footers
If adding such verbiage to e-mails was ever effective, that effectiveness has got to be diluted 1,000 fold by now. Remember those 2 questions the airport attendants had to ask us about whether or not we packed our own luggage? After 7 years, the FAA finally quit making them ask us, because there wasn’t a single time when it did any good. I’ve never heard of those e-mail disclaimers doing anyone any good, either. Isn’t about time we stop cluttering up each other’s in-boxes with them?
Monday, January 19, 2004
A Brave New World Wide Web
"We don’t know what the web is for but we’ve adopted it faster than any technology since fire." -- David Weinberger (co-author), The Cluetrain Manifesto: The End of Business as Usual, 2000
According to Cluetrain, the magic of the Internet is that we are all finding our voices and communicating directly with each other. According to a Harris Interactive poll, 69% of American adults were users of the Internet in 2003 (as opposed to just 9% in 1995). What are these 146 million people talking about? Everything. We’re comparing notes and sharing first-hand knowledge. Cluetrain co-author Christopher Locke calls the Net "a powerful multiplier for intellectual capital." We are talking on many levels in many roles. We are doing it instantaneously and without filters.
One of the ways we are communicating is consumer-to-consumer. I probably don’t need to tell you the worth of reviews posted to www.amazon.com and www.epinions.com. You may have even found one valuable enough that you wanted to "pay it forward" by posting a review of your own, right? Us consumers collectively know more about any given product than the manufacturer does. After all, we have the company’s employees drastically outnumbered. Now that we are talking directly to each other, we are rapidly becoming a force to be reckoned with. Companies that decide to listen and join in on the conversation with an open and honest attitude will keep our business. Companies that don’t won’t.
One of the first causalities of this Brave New World Wide Web are monolithic computer software companies that don’t know how to give their customer’s what they really want. Enter open source software. Check out the first four winners of the newly announced Open Source Awards. Whether or not you find those projects to be useful, personally, you will certainly find it interesting to see the motivation behind their existence. What do they portend? Will all software go open source? Hardly. But the ones that remain commercial will have to be just as adaptable in their own way.
Thursday, January 15, 2004
TextPad (shareware) Keeps Getting Better and Better
- New features for cutting and pasting as HTML.
- Sped up many functions, especially when dealing with huge files.
- The Clip Library now includes a Clipboard History.
- A new command that duplicates the active line (or paragraph).
- Now takes advantage of the extra keys found on an Internet/Multi Media keyboard.
Wednesday, January 14, 2004
"Tae-Bo Flex" DVD is Inflexible
And then there's the brain-dead formatting. This production of Goodtimes Entertainment doesn't even take advantage of the fundamental features of a DVD! There is only one item on the menu: "Play." What's the point of that? It may as well just start playing. Better yet, how about a few more menu choices, like scene selection. Hello?! The 45 minute program isn't broken down into chapters at all, so the Skip Ahead button doesn't work. (You can't even use the Skip Back button to restart at the beginning.) This is supposed to be a DVD that we'll wear out watching over and over, yet they expect us to sit through the introduction every time. If it were up to me, I would have put in at least 4 chapter breaks: intro, warm-up, workout, cool-down, and credits. ( I don't need to be reminded how to warm up, and would rather do that while watching CNN, then skip straight to the workout.)
I bought Flex in a 3-pack with Flex Express and Cardio. Cardio isn't as bad content-wise, but it's not compelling either, and it still suffers the same poor production quality.