Writing an Application is Like Writing a Short Story

I’m a notoriously compulsive hobbyist. I seem to have new pastimes every week, and today they happen to be gardening and writing short stories.

I bought a handbook that lays out the basics of short story writing (plot, character, dialogue, yadda yadda) but some pages into it, I decided, “Fuck it. This feels like work. Writers are supposed to chug wine in brasseries and let the drunk angst write itself, right? Nabokov and Kundera and Maupassant never wrote outlines and character sketches, silly!”

So I throw the book in the corner and get to it. I write five pages of rambling prose, hit save, and call it a night. This morning, I re-read it. I find that it’s lacking…plot, character, and dialogue. So I think and think and finally sigh and write an outline. A character sketch. Some dialogue. Then I go back to my original piece, ready to carve it up and make it play nice with all my new notes. I start laboring through it sentence by sentence, and then I realize: “Dear God… I’m refactoring!” I quickly close the thing and get back to work, which is the same goddamned thing except I get paid for it.

Anyway, the point is this. We’re used to seeing movies where writers are easy-going, substance-abusing geniuses who just get smacked in the head by a muse who writes their novels for them. Likewise, movies tell us that “hackers” plop down in front of a scrolling jumble of green ASCII and “crack” NSA servers in five minutes. You don’t see ‘em motionless before a screen, thinking… that’s lame!

But the reality, for both writers and programmers, is that a project should be 80% planning and 20% implementation. (Arbitrary statistics, but it’s something like that.) You should have a database schema, wireframes for your UI, and lists of models, controllers and functions before you write a line of code. Because if you just go with the flow and create a bunch of crap, trust me, it will be broken beyond belief and you’ll be better off re-writing it from scratch.

P.S. Maybe next week, if my plants are still alive, I’ll write something deep comparing coding and gardening.

Posted in Technology | 3 Comments

…And We’re Back!

Some people have asked where I’ve disappeared to. Well, it’s been a long, dark winter over here in Sweden, and I’ve been [hibernating/trying not to commit suicide/coding/growing my company]. Mostly that last one. I’ve struck two long-term development deals with iAmplify and Digipoint, hired another programmer, and then pretty much went to sleep hoping that I’d wake up to April. And here I am, look forward to more updates!

Posted in Entrepreneurship | 1 Comment

Freelancers: Always Log Your Hours

This is not immediately obvious those who charge a flat rate per project, instead of by the hour. But unless you track your hours, you know neither how much you’re making on your current project, nor the fair price to charge for a comparable project in the future. Remember, $2000 might sound like a pretty pile of cash for a site, but unless you know how long it took you to build, you don’t know if you’re making any more money than a busboy.

It’s also your fault that I have to explain “why I charge three times more than the guy you found on Craigslist”. Be fair to you and me. Track your hours. Bill accordingly.

How much is fair? I’ll give that some more thought and write a post later.

Posted in Angry Development Tips, Entrepreneurship, Project Management & Productivity, Technology | 2 Comments

CSS Tip: Don’t Duplicate Attributes

In your CSS, you specify that your #header, #footer and #sidebar elements should be baby blue. A week later, your picky designer asks that they be changed to lilac. Of course, you can change the color for all three elements, but, as the DRY gods will tell you, find/replace is error-prone.

You should only specify colors (and, preferably, most attributes) only once in your stylesheet.

The Wrong(ish) Way:

.header {
color:baby-blue;
font-size:humungo
} .footer {
color:baby-blue;
font-size:tiny;
}

The Right(er) Way:

.header, .footer {
color:baby-blue;
} .header {
font-size:humungo
} .footer {
font-size:tiny;
}

Posted in Angry Development Tips, Design, Technology | Leave a comment

Best Free Javascript/DHTML Calendar I’ve Seen

Check out the Swazz Calendar. Small file size, easy to integrate and actually works.

One caveat: by default, it sets the date the European way (dd/mm/yyyy). To change to the American format, find the following line in the prepcalendar function:

calvalarr[d]=”+(d-cd)+’/'+(cm-(-1))+’/'+cy;

and change it to:

calvalarr[d]=”+(cm-(-1))+’/'+(d-cd)+’/'+cy;

Then find these lines in function lcs:

ccm=curdtarr[1]-1;
ccy=curdtarr[2];
prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]);

Change them to:

ccm=curdtarr[0]-1;
ccy=curdtarr[2];
prepcalendar(curdtarr[1],curdtarr[0]-1,curdtarr[2]);

VoilĂ . (That means “There you go” in English. ;) )

Posted in Technology | Leave a comment

Cranky Old Hag

A dear friend noted that few of my posts are constructive: they’re mostly biting criticism and ranting about practices that don’t work.

But the topics I address (technology, business, recruiting) are so open-ended that you can do things many different ways. And they all work, except for the ones that don’t. It seems that as long as you avoid common pitfalls—which I like to point out—you can do whatever you damned well please.

Plus, the web is brimming with talented programmers writing excellent how-tos. So I think I’ll continue being a cranky old hag. Now get off my lawn!

Posted in Angry Development Tips | 1 Comment

Seducing Coders Doesn’t Work

In a bout of desperation to find a competent CSS coder, I shot off the following email to Dave Shea, founder of css Zen Garden:

Dear Dave,

When I look deeply into your code, you make my heart smile. You are not like the others, I can tell. No: you are not like those fools who wormed their way into my heart by showing me pretty graphics, only to break it with un-reusable CSS classes. You are not like the designer who coded my latest project (http://openmarketllc.com/) using nested tables. You are not superficial: you don’t care what a page looks like, but only that it’s written in sustainable, W3C-compliant code. Can’t you see, Dave? We were meant to be. I knew it from the moment I first laid eyes on css Zen Garden. Won’t you take my PSD’s into your capable hands and make them melt into a magic puddle of CSS-based pages? Dave, won’t you be mine? And if so, what is your hourly rate?

Love,
Mariya

It didn’t work. Apparently, he’s booked solid. :(

Posted in Technology | 1 Comment

Holy Magnolia! RoboZen is a Real Robot

Some guy actually invented a robotic Zen garden called RoboZen. I don’t know the status of the project but I will try to find out, and perhaps help with his Java project. (Holy magnolia!)

Posted in Technology | 2 Comments

Phishing Emails Should be Easy to Report

I appreciate how easy it is to report PayPal and Ebay phishing emails : just forward them to spoof@paypal.com or spoof@ebay.com. I assumed that all financial companies would have the sense to set up no-brainer email addresses to handle phishing concerns. But alas, my forwards to spoof@chase.com and spoof@bankofamerica.com bounced. Get a clue!

Posted in Technology | 1 Comment

I’m Online? Looking at a Website? No Shit!

There’s no hope for the web, is there? Most sites are poorly made and look like oatmeal on a baby bib. Others are developed cleanly by someone whose code doesn’t suck only to face another hurdle: the idiot copywriter.

The fun at this jewelry outfit begins with the domain name: steveclarkweb.com. I admit, it’s hard to find a good one, and steveclark.com is registered by a New Jersey ambulance chaser. But steveclarkweb? You don’t want “jewelry” or “designs” or “creations” to differentiate you from hordes of other Steve Clarks? No: a domain name has a far more important function. Even before people see your site, it should explicitly let them know that it is, in fact, on the web.

The tagline is also very important to this end. Steve Clark describes his site as “The Online Jewelry Showcase of Steven Clark.” There is space for ten words, and online is one of them. Wise choice, my friend, because I was under the false impression that I could jump through the screen and see real jewelry. Thanks for clearing that up!

But you know, I’m still not sure what this page is for. Is it for walking dogs? Will it make me a cheeseburger? Is it an alternative to The Google? I have to read the Basic Overview on the homepage to find out:

This website is designed to allow for shopping one of the finest fashion jewelry lines in the USA. It is meant to be available to my existing customers and to help find new ones.

So even though I still don’t know what kind of jewelry you sell, how much it costs, or even if you sell wholesale or retail, I am lucky to have received much more useful information:

  1. I’m in a virtual jewelry showcase, not a real one,
  2. this “website” of which you speak is designed to allow for shopping, and
  3. I am eligible to partake in this shopping experience if I have shopped here before, or even if I have not.

Truly online web-based internet homepage website marketing at its best!

UPDATE: Don’t get me started on requiring logins to view the catalog. Or that you have to personally message the guy to even get a login. I mean, that’s such lax security… you should have to apply in person to be eligible.

Posted in Angry Development Tips, Design, Entrepreneurship, Technology | 1 Comment