If somebody had told me I'd be Pope someday, I'd have studied harder. -- Pope John Paul I
Michael D. Crawford
GoingWare Inc.
crawford@goingware.com
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.
Bookmark this page and check back from time to time to find new programming tips, articles, essays and newsletters that I've written.
My website development articles have been moved to my new website, Mister Markup: Professional Tools for Webmasters and Web Designers.
If you subscribe to the GoingWare Newsletter I'll let you know when I publish new material.
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
[Top]
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.
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.
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.
[Top]
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
On C++ software quality and institutional resistance to change.
My humble contribution to the ever-growing heap of coding standards documents.
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 delete rather than delete [].
Tips on how to use an uncommon and poorly understood C++ feature that is surprisingly useful and may improve the performance of your programs.
[Top]
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.
[Top]
Some of these have been moved to my new site Mister Markup: Professional Tools for Webmasters and Web Designers.
Why I don't want to let the AdSense scammers dupe innocent webmasters: Google AdSense saved me from poverty due to my mental illness.
A few simple, honest practices can dramatically increase your search engine referrals by making your pages more appealing in search results.
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.
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.
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.
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.
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.
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.
Are you a writer? Do you want to be a better writer? Join Write On! and discuss the art and craft of writing.
[Top]
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.
This essay will help you understand why I want to get out of software consulting, even though it can be high paying work.
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.
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.
[Top]
It's not just because Information wants to be Free, but because one has a responsibility to create Free Information.
... 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.
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.
Formerly the BeOS Journal - news about the Haiku OS, the Open Source clone of the BeOS operating system.
[Top]
The best-laid plans of mice and men...
[Top]
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.
[Top]
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.
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