Response to a recent posting in Google+

Recovered from the Wayback Machine.

My response to a recent post in Google+ by Ian Hickson:

You’re comparing apples to oranges, +Ian Hickson. There’s a world of difference between developing a specific piece of software and creating a specification.

In addition, you’re also incorrect with your understanding of the ‘tech lead model’. You may have worked on a lot of specs, but I’ve worked on a lot of projects for a great number of companies. What you’re saying is, well, hogwash.

Typically, software applications are defined for one specific use: a business use with well defined and finite customers who provide detailed instructions (user requirements) about what they want.

The tech team meets regularly with the users, and the users—or the group of people representing the users—are the ones that have the final say on the product.

There is usually an overall architect if the project is large—but they don’t just think up what’s needed on their own, and attempt to tell the users what they want. And the architect doesn’t work in a vacuum. The data people are the ones responsible for data design, and others are responsible for other decisions, such as types of equipment to purchase and software to use. Then there’s the testing team, the user acceptance folks, the documentation people, and so on.

I’ve worked on a couple of systems, including support for Saudi Arabia’s air force defense system, where the numbers of people in the team number into the hundreds. Someone playing King of the Mountain wouldn’t last a day.

It is very much a team effort.

And many of these teams work really well. I’ve been privileged to work with great teams at Boeing, Nike, Sierra Geophysics (a Halliburton subsidiary), John Hancock, and various other companies and government organizations. One key thing about all of the teams is the understanding of the importance of each team member, that no one is King of the Mountain, and cooperation and mutual respect is the name of the game.

The problem with your comment Ian, and others of like nature, is you really don’t have much exposure in the real world. You really haven’t worked that many jobs for many companies. You’ve insulated yourself in a tech bubble and you seem to believe if you say something with enough surety and confidence, others will believe you. True, some do, but primarily only among others like yourself, who typically haven’t a significant exposure to real world development.

You’re all spec wonks.

Being a spec wonk isn’t a bad thing, and brings its own expertise to the table—but it definitely doesn’t somehow magically make you all capable of understanding what everyone needs.

Because you’re all spec wonks, it’s especially important to get feedback and input from others who do have the real world experience you lack. But you just don’t see that. If anything, you seem to hold real world experience against people.

“Oh, I’ve done more spec work than any of these people. What do they know about specs?”

They may not know the mechanics of how a spec is worded, they may not have a lot of experience building browsers, but they definitely know what works outside the offices of Mozilla, Google, Opera, Microsoft, and Apple.

You know what’s funny, but in the teams I worked with, the most important player was the end user. We used to complain—loudly—if we couldn’t get access to reps from the business end. We needed these people because they knew what the application needed to do in order to be successful. We wanted to create successful applications.

The browser companies, they’ve forgotten all of this. They cater to a small portion of end users—most decidedly geek—and have ignored anyone else in their push to Be First with the latest gewgaw.

They incorporate stuff into browsers now that make them insecure and decrease their performance, but it’s all Cool and Stuff, and that’s OK for the tiny audience they only seem to care about. The only problem is, in the real world, we actually care more about security, reliability, performance, and accessibility than if the browser is all Cool and Stuff.

You have users wanting to be involved. You have experts from other fields asking, sometimes even begging, to be involved. You have other techs with vast experience—real world experience—wanting to be involved. Yet you throw it all away. And then you brag about it.



Look out: Android in the kitchen

Recovered from the Wayback Machine.

I was a late comer to the legions of mobile device owners. However, when I finally crossed over with my purchase of the first generation Kindle Fire, there was no looking back. To the Kindle Fire has now been added an Android smart phone and other tablets —the number of which I’ll keep to myself, or I’ll mark myself an Android junkie.

I watch TV shows and movies on the devices, do most of my research on them (paging through PDFs is much simpler with a touch screen), scan products at the store for background information not listed on the can, navigate to new locations, and yes, play games. Where the crafty devices shine, though, is in the kitchen.

I have an old red binder filled with recipes (not *women) I’ve collected, modified, or created over the years. Recently, I purchased the Living Cookbook software to manage my collection, as well as back it up to Dropbox for safekeeping. What I didn’t want to do with the new software, though, was continue to use paper recipes. With paper, I’ll inevitably spill something on the page, and the large letter size paper actually takes up a lot of counter space.

What I needed was to transfer my recipes from the software to my Android tablet (my Samsung Galaxy Tab 2 7.0 inch tablet in this case—sorry Apple). Luckily, there really is an Android app for that (don’t sue me Apple).

I downloaded My Cookbook, a free/pay app that allows us to create our own cookbooks. Though the interface is rather primitive, what it lacks in gewgaws it makes up for by being able to parse recipe files from many cookbook software applications, including Living Cookbook.

The work flow goes as follows:

  1. Enter the recipe into Living Cookbook. Cry a little when I see how many calories per serving. Vow to eat less.
  2. Export the recipe in any of the supported formats. I use the Living Cookbook .fdx format. Ummm, XML. Long time no see.
  3. Create a synch folder on Dropbox using a built-in My Cookbook feature. Copy the exported recipe to this folder from my computer.
  4. In my tablet, import the recipe into the application and I’m ready to go.

I bought a little tablet stand at Amazon, so the device sits upright and stable on my counter (away from the oven and sink, of course).

When I’m ready to cook something, I pull up the recipe, gather my ingredients, and then follow the directions. I would prefer having both ingredients and directions on same page, but it’s simple to swipe the page to move between views.

If I’m feeling text weary, I can use the My Cookbook feature that allows audio output of the directions. For the most part, though, it’s easy enough to read the instructions.

Once the ingredient manipulation is complete, I can return to the summary page and click the little timer icon. This triggers another Android application that runs a timer, My Cooking Timer programmed with each recipe’s cooking time.

While the end product is boiling/steaming/baking, I can pick up the tablet and check my email, read an article using Pocket, or even make notes for my book using a speech to text application or sound recorder. The speech-to-text app ListNote sometimes results in an some interesting wording, but at least I have enough to work with.

None of the applications impact on the timer—an important feature, because I have been known to get distracted and burn things. Just to note: a smoke detector is not designed to be a food timer.

From a food safety perspective, the use of the tablet is a plus, because using it ensures that I’m washing my hands frequently so as not to smear up the device. Washing hands frequently while cooking is essential to prevent cross-contamination. Going from handling chicken to chopping lettuce can make an interesting science experiment, but not necessarily an enjoyable eating experience.

Of course, you don’t need an Android tablet to do all of this. You can use your iPad or iPhone—if you have money left over from buying the device to actually purchase food to cook.

Ingredients for Cooking in the Kitchen with Android:

  • Cloud storage helps when it comes to interfacing a PC to an Android to share data. I’m partial to Dropbox, primarily because so many Android apps support it. And it’s free for most uses.
  • You can input recipes directly using most Android cookbook apps, but I find an application like Living Cookbook to be simpler and more comprehensive. The key is the ability to export the recipe (unless the software has a comparable mobile app that supports your device, which Living Cookbook does not).
  • A mobile cookbook app, such as My Cookbook that allows recipe import and/or direct addition. Be careful when selecting an app. A cookbook app is not the same type of app as a recipe app, which provides access to existing recipes, but rarely allows you to input your own.
  • Timer software that either works with your cookbook app, or that you can use outside the application. The My Cooking Timers Android app works with the My Cookbook app. There are freeware and pay versions of both apps.
  • A tablet stand that makes it easy to read the recipe and that securely holds the tablet out of the way on the counter. If you’re clever you can probably make something.
  • Soap, water, hand towel—because egg and Android don’t mix.
Just Shelley

Golden Girl going, going, going

Folks who have been reading my various publications over the years will know about Golden Girl.

Golden Girl, in her prime and brand new

Golden Girl is a 2002 Ford Focus I purchased when living in San Francisco a decade ago. She’s my first car, since I didn’t get a driver’s license until later in life. How much later in life is incidental to this story.

Golden Girl met the new neighbor on Saturday.

Golden Girl, a little worse for wear

The rear of the neighbor’s moving truck hit Golden Girl just right, half tearing off her bumper cover. No issue about who was at fault in the accident, since my car was parked, but his insurance (Geico) is playing the ‘still investigating’ card. I expect to get reimbursed for the damage…eventually.

This is the latest in a series of automotive challenges I’ve had with Golden Girl, and the time has come to say good-bye. For many years I used the bus, and it won’t kill me to use a bus, now. I’m in discussion with an animal welfare charity about donating the car. Even with the damage, the car is in good working order and would be relatively easy to fix. It should fetch a decent enough chunk of money.

I like the idea of Golden Girl’s final act (for me) to be helping critters.

Books JavaScript Technology

Finished tech review and the move to Node 0.8x

Just finished the final tech review of my Learning Node book. At 400 pages, it’s a big book. I must admit to being more than a little tired. Right now, I feel I could sleep for a week.

The big announcement in Node land is that unstable 0.7.x is being moved to stable 0.8.x next week. As a final act for my book, I put all the examples through a 0.7.10 tests. The results were better than I expected, not as good as I hoped.

I hit a couple of minor deprecation issues. For instance, path.exists has been deprecated in favor of fs.exists. I used the exit event with one child process application, and I needed to convert it to the new close event. This new event not only waits for the process to end, but all stdio pipes are closed.

Other modules ran into the same deprecation issues. Most of the testing modules in Chapter 14 won’t work with Node 0.8.x, but I think the changes to make them work will be minor.

Socket.IO didn’t work with 0.7.10 and the developers know it. I’m more than a little surprised at the reaction to people turning in issues related to the problem. Not to mention, closing the bugs without even attempting a fix. As I wrote in comments to the issues, today’s 0.7.x stable is about to become next week’s 0.8.x stable, and this bug is going to get very popular.

The db-mysql module also didn’t work with 0.7.10, and the highly popular jsdom module also had problems.

I noted the compatibility issues in the chapters, and provided alternative examples for those I could correct. That is the best I can do.

I’ve giv’n her all she’s got, Captain!

Books Writing

Changing course

Learning Node will be my last book for O’Reilly, at least for the foreseeable future.

Learning Node was a particularly exhausting book. Not only is there much to cover in one book, Node is a very dynamic technology. I like to think my coverage is both comprehensive and solid, but I guess we’ll see how the book does when it hits the streets.

In the next year, I’m going to enter the ranks of the self-published. I’m also focusing less on technology, and more on other areas of interest. What these areas are will become evident over the next several months.

My next book won’t be on technology, and I’m not sure that the one after will be on technology, either. I’m not saying Learning Node is my last book on technology, but I am most definitely taking a break from the tech book field. Most tech writers will understand when I write about the challenges in providing decent and accurate code examples for a new or changing technology, at the same time you’re trying to ensure that your grammar is correct, and your prose is clear and readable. Not only do you have to worry about your comma use in your text, you also have to worry about comma use in your code.

Just when you finally punch all the code, screen grabs, and text into a comprehensive whole, you’re then faced with an audience that’s just as likely to tell you it’s not interested in buying a book when they can find the material online, and for free.

I’m one of the lucky tech writers in that all but a couple of my books have earned out the advances, and provided relatively decent royalties. I’m not a bestselling author, but to earn out advances on 20 books isn’t bad in the tech field. At the same time, though, I’m not making it as a writer, and I have to try something new. That, or see if the local McDonald’s is hiring, because my days of tech contracting are over.

I plan on being as innovative as possible with my self-published works. For one, I don’t see any of the books being very large. Electronic publishing opens the doors for focused, shorter works, attractively priced. By attractively priced I mean that I don’t see any of my books priced at more than $5.00. In fact, I envision a Starbucks pricing model, with book prices comparable to prices you’d pay for a Starbucks coffee: smaller books will be equivalent to the price for a tall latte; larger, more complex works, closer to the price for a venti Caramel Macciato.

Lower prices and shorter works does not mean the books won’t be solid. My first self-published book is on a topic I’ve been researching for three years. But it’s a focused topic: too big for a Kindle Singles, and way too small for a more traditional book. It’s a topic that greatly interests me, and I think that’s the most important consideration.

Of course, I still have to worry about grammar and the damn commas, but at least I don’t have to worry about code.