Here you’ll find essays and tips on the business and practice of software and website development: website design and promotion, marketing, object oriented design, law, business, cross-platform development, refactoring, C++ programming, low-level debugging, and writing software for both Mac OS X and the Classic Mac OS.

What’s New?
Bookmark this page and check back from time to time to find new programming tips, articles, essays and newsletters that I’ve written.


Updated: Writing Cross-Platform Software: Getting Started

Ogg Frog is Coming Soon

If you subscribe to the GoingWare Newsletter I’ll let you know when I publish new material.

Spread the Word!

Do you like my articles? Have you found them helpful? You could really help me out by encouraging others to read my programming tips. Please link to this page from your website, your weblog or from message boards. Thanks!
— Mike

On Becoming a Programmer

Don’t Let It Get You Down

Words of advice to a broken man on how I overcame my mental illness and made a good life for myself as a software engineer.

Study Fundamentals Not Tools, APIs or OSes
Advice from an experienced professional on becoming a better programmer: rather than invest a lot of time wading through the plethora of industry buzzwords that are currently – and temporarily – in demand, devote your time and attention to learning fundamental knowledge and skills that can serve you well on any job, and for the rest of your career.


I was pleased to discover recently that this page is Google’s #1 hit for the query programming tricks. The various tips pages were served to over 69,000 unique IP addresses during the month of August, 2004.

Updated: Resign with Dignity

My resignation from now-bankrupt Live Picture Inc, three hours after receiving the news that it would be moving from a small town in rural Santa Cruz County to urban Silicon Valley. While I usually advocate working within your company to work for the better, sometimes one does not have the power to effect meaningful change, and in such a case a dignified resignation may be the better choice.

Object Oriented Design

You can help out GoingWare by clicking The Programming Pages’ ad above. Your vote will encourage them to display this page’s link more prominently on their site. Thank you.

PS. I don’t like the animated GIF either. I’ll see if I can paint a less glaring banner in Photoshop. Sorry. –Mike

New! Sermon at the Soup Kitchen
On C++ software quality and institutional resistance to change.

Pointers, References and Values
Passing Parameters, Returning Results, and Storing Member Variables with Musings on Good C++ Style
My humble contribution to the ever-growing heap of coding standards documents.

On Refactoring C++ Code

Properly Managing Memory Returned by transcode() in the Xerces XML Library
A discussion of how to handle data that is allocated internally to a library function but that is expected to be deleted by the caller. Although it is specific to the Xerces XML DOM library, it is a good discussion of approaching memory management and an illustration of code refactoring as it was actually practiced in a real product.

Perhaps most importantly, while the auto_ptr template is a great aid in managing your pointers, making your code easier to read and exception safe, but it is not correct to use auto_ptr on arrays because it releases the memory it holds with deleterather than delete [].

Relicensed: Pointers to C++ Member Functions

Tips on how to use an uncommon and poorly understood C++ feature that is surprisingly useful and may improve the performance of your programs.

Cross-Platform and Portable Development

Updated: Writing Cross-Platform Software: Getting Started
This article discusses the very basic concepts needed to get one set of source code to run on multiple platforms – byte order, alignment, and structure padding.


The Way of the White Hat SEO Ninja

Why I don’t want to let the AdSense scammers dupe innocent webmasters: Google AdSense saved me from poverty due to my mental illness.

White Hat Search Engine Optimization
A few simple, honest practices can dramatically increase your search engine referrals by making your pages more appealing in search results.

How to Promote Your Business on the Internet
Getting a Google search for software consultant to list my resume on its first page of search results didn’t require me to pay a lot of money to a search engine placement service. I didn’t have to do anything dishonest, like build a link farm. It didn’t cost a cent. It did take time and a lot of hard work, but my method is so simple that anyone could do it – and if you did, the Web would be a better place.

Earn High by Playing it Clean – Google AdSense tips and tricks that aren’t what you expect

I explain how I’m able to earn a living for myself by running a well-designed, legitimate, spam and popup-free website: the one you’re looking at right now. I wrote this essay because I saw that many of the pages that offer advice on how to earn money from Google AdSense are really scams aimed to get money from clueless and desperate webmasters by offerring to sell them advice that really ought to be as free as the air. In many cases, “AdSense Secrets” pages exist only to attract clicks to the AdSense advertisements placed on them. For that reason, I am committed never to place advertising on this article. I want there to be a safe place for webmasters to turn to without finding hands in their pockets.

Use Validators and Load Generators to Test Your Web Applications

Ensure that your web pages will render correctly in any browser as well as being accessible to the blind by using valid HTML. Also test your server application’s ability to withstand a heavy user load by testing with a load generator during development.

Painless Search Engine Site Submission
Ready-to-click links to the site submission pages of the top search engines. Manual submission of your site through this page is a lot quicker and easier than using site submission software, it’s totally free and won’t spam you with annoying ads for paid submission packages. You also won’t encounter the barriers the search engines use to defend themselves from spamming by the placement robots.

HTML Design Resources on the Web

This page has a number of handy links to tutorials and other information that are useful to the beginning web designer. I wrote it for my niece Denika the night I taught her to write her first web pages. It’s pretty spartan so far, but I plan to add lots more to it.

Please Help! I need your suggestions as I prepare a major revision to this article. See inside for details.

Free Hosting Service HTML Validation Test Page

You can use this tool to test whether a free website hosting service turns otherwise valid HTML documents into invalid ones by inserting erroneous advertising markup. Copy the page to any free host you are considering using, and click the link in it to have the whole page, including the advertising, validated by the W3C HTML Validation Service. Leave the page on the site to help the hosting service operators understand why valid markup is important and how to fix any problems that occur. Published at The Linux Quality Database.

Public Service Announcement
Are you a writer? Do you want to be a better writer? Join Write On! anddiscuss the art and craft of writing.


New! What I Learned from Stephen King Today
Sometimes I get discouraged. But reading what Stephen King had to go through before he got his big break as a writer makes me realize I am more fortunate than most, and that if I persist, all my hard work will pay off someday.

New: Self Employment: Even on a Good Day Things are Hard
This essay will help you understand why I want to get out of software consulting, even though it can be high paying work.

The Valley is Harsh Mistress

Founding a high-tech company is an incredibly risky proposition – and your worries are not over when your product ships, when you receive venture capital or even when you go public; in fact, VC’s and Wall Street often cause more problems than they solve.

This page discusses the troubles of Working Software, Live Picture, and operating system vendor Be, Inc. It recommends a couple of books, one about once-promising startup Go Corporation and the other a classic on large-scale software engineering.

Updated: Market Yourself – Tips for High-Tech Consultants
Find good high-tech consulting clients the old fashioned way: using the power of the web (traditional methods are recommended too). This is useful to traditional job seekers and contract programmers as well as independent consultants like myself.

If, like me, you’re tired of all the spam and annoying phone calls from irritating and ignorant recruiters who just want to make a quick buck without actually taking the trouble to actually read your resume (let alone understand what your skills actually mean) you’ll want to read this page.

Why let a headhunter earn 30% of your first year’s salary (if you’re perm) or your hourly pay (all the time, not just the first year)? You can just go to a little effort and find good jobs with clients who will be grateful they didn’t have to fork over all that money and deal with people who usually just hand them dozens of resumes for people who are probably both unqualified and uninterested.


New! Why I’m Proud To Be A Dirty GNU Hippy
It’s not just because Information wants to be Free, but because one has a responsibility to create Free Information.

New! I Don’t Know What This New Internet Will Look Like
… but I am as confident as I am that the Sun will rise tomorrow that it will be safe from terrorists. After all, we have the children to think about.

Updated: Links to Tens of Thousands of Legal Music Downloads (English)
Legãturi cãtre Zeci de Mii de Download-uri Legale de Muzicã (Românã)
You can avoid being sued or prosecuted for copyright violation if you download the music that many musicians make freely available on their websites, rather than using peer-to-peer file sharing. This article also explores some of the legal and historical issues behind file sharing and copyright, and suggests ways you can effect meaningful political change.

Read the Haiku News
Formerly the BeOS Journal – news about the Haiku OS, the Open Source clone of the BeOS operating system.

Haiku and BeOS Programming
The best-laid plans of mice and men…

Mac OS X and Darwin Programming

Subclassing an I/O Kit Device Driver
From the talk I gave at MacHack 18 in June 2003. An introduction to Mac OS X device driver programming, including writing user clients, Core Foundation plugins to interface to the user clients from user space, and calling the plugins from applications. There is an example driver and test program called FWDemo that does a little SCSI I/O over FireWire via SBP2.

Classic MacOS Programming

Updated:Secrets of the Debug Meisters: Tips and Tricks for MacsBug
A variety of handy commands and techniques I’ve collected over my years as a Mac programmer. Also includes the MacsBug Help File in HTML.

Resurrected:Debugging Software on the Macintosh by Terry Teague
Programmers and testers can use a variety of tools on the Macintosh to debug and test software. This document is intended to give some basic instruction for beta testers of Macintosh software products on how to use such tools to provide meaningful bug reports for the developers of those products.

This was on my old website, but I forgot to move it over when I got my own domain. Upon discovering it missing, over five years later, I thought it was lost, but found it on my old hard drive! — Mike