Bi-coastal pair programming, XP over VNC

December 9th, 2005 | Filed under Rapid development

Mark and I did our first bi-coastal pair programming session last week with him in Brooklyn and me here in San Diego. I donned the headset, we called one another on the phone (yay free long distance), and with his Mac as a VNC server (using OS X VNC), I connected to his machine. For the most part he drove while we talked, read docs, coded and tested.

At first it was a little uncomfortable, because Mark felt like he was performing and I felt like a voyeur. I’ve trained myself to look away from people’s screens, so it was strange to watch him type and mouse legitimately. Once we got through the initial weirdness, though, it was one of the most productive co-coding sessions I’ve ever had. It’s amazing what two sets of eyes can do. And your frustration level never goes very high, either, because you have someone else joking about things. (Like when we couldn’t get our first unit test to succeed for the umpteenth time, he simply said, “Mark is angry,” which sent me into a fit of giggles.) Performance for the most part was good, except for switching between windows, which sometimes lagged as my viewer had to redraw things. Mark was also using Vonage to talk to me, so presumably that hogged up a bunch of his bandwidth.

This weekend, I drive and he uses the cell phone. Yay pair programming!


Secure your Apache Configuration

December 9th, 2005 | Filed under Apache web server

This guide to securing Apache is way handy. I liked the bit about limiting access by IP address.

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

Is good way to make sure no one else on the network is hitting your dev server.

20 ways to Secure your Apache Configuration

Common Greasemonkey Pitfalls

December 9th, 2005 | Filed under Javascript, Greasemonkey

The Greasemonkey user script that saves me several minutes of typing every day broke with Firefox 1.5 and Greasemonkey 0.6.4. But thanks to the ever-instructive Mark Pilgrim and his O’Reilly article about safe Greasmonkey scripting, it now works. Specifically the “Pitfall #3: Named Forms and Form Elements” section addressed the bit that was tripping up my old code.

If you too use Movable Type, my user script autofills in the upload directory with a date-based folder name - great for rapid-fire posting with tons of images, like on Lifehacker.

Set MT Upload Directory [Scribbling.net]

O’Reilly Network: Avoid Common Pitfalls in Greasemonkey [O’Reilly Network]


Lifeblog (mostly Atom) Posting Protocol Example

December 4th, 2005 | Filed under PHP, XML, API, Atom

I’ve been using Nokia’s Lifeblog software on both the PC and my phone to post to my cameraphone blog for months now and having a ball with it. (See my review of Lifeblogging with the Nokia 7610 for more info.)

Right now I’m using TypePad to host the web part of it, but if I ever want to build the capability into Scribblish (and I will) Robert Price has a nice walkthrough on how he did it for his homegrown PERL-based CMS. Also of interest alongside this - an Atom PHP implementation.

Robert Price - Lifeblog Posting Protocol Example [Robert Price]
PHP AtomAPI Implementation [Isolani]

Tags: Database schemas

December 4th, 2005 | Filed under Databases, Reference, Schemas, SQL

Somewhat old news that I found myself looking up tonight: database schemas for tags, ranging from stuffing keywords into a giant field to 2NF to 3NF.

Being the good database girl that I am, I tend toward third normal form (the last example, which involves 3 tables), but enforcing cascading deletes to trash orphaned tags would be a lot of more work for the app. At the other end of the spectrum, the single table solution seems insane (aren’t LIKE’s generally a no-no?), but at one point when Matt suggested this at Kinja and I consequently almost passed out, after some debate I realized there might be times this would fit best. (Note to self: there is never One True Way.) Maybe in media res, and the 2 table solution is best.

Anyway, a good reference for Web 2.0 taggy apps getting built out there.

Tags: Database schemas [Philipp Keller]

Getting started with PHP

November 22nd, 2005 | Filed under PHP

Someone asked me today about where to get started learning PHP. There are so many ad-covered pop-up launching PHP tutorial/community sites out there that teach you how to learn PHP3, I told him to check out the tutorial from the horse’s mouth on PHP.net, and a nice beginner area on the Zend site as well. Any other good ones I missed?

Getting Started [PHP Manual]
Absolute Beginners [Zend]

Phoogle Maps 2.0

November 21st, 2005 | Filed under PHP

Drop a Google Map onto your web page with PHP, easy as pie with Phoogle and a Google Maps API key. Gawker Stalker’s crying out for this.

Phoogle Maps 2.0 [system7designs via digg]

Yahoo! Japan Most popular blog

November 8th, 2005 | Filed under Search Engine Optimization

Technorati's most popular

Technorati is listing Yahoo! Japan as its most popular “blog,” right now, above BoingBoing. Bug? Inside joke? Who knows.

Technorati Top 100 Popular Blogs

MovableType makes me old and cranky

November 7th, 2005 | Filed under CMS, WordPress, MovableType

Ever since I started posting to Lifehacker several times a day, I’ve developed a deep resentment for the software that publishes the site, MovableType. There are days when it takes between 40 and 50 seconds to publish a single post. Fifty seconds probably doesn’t sound like a long time to you, but when you do it a couple of dozen times a day - what with edits and updates - we’re talking about almost half an hour of my life, snatched from me. I’m a perpetual mugging victim.
I sit at my computer every day watching MT publish each post at the pace of a tiny, moist snail travelling across a vast stone and I can feel myself getting old. Any software that gives you the time to deeply consider the seconds of your life ticking away, any software that makes you hate it by evoking the image of yourself hurdling from cradle to grave while gazing at its wrench logo - this is not software to be used by someone who is not a masochist.
Now, I have to give MT the benefit of the doubt. It may not be MT that’s slow - it may be a non-performant plugin, or the fact that over 20 editors are posting to 17 sites using one MT installation (though that doesn’t seem too unreasonable for a multi-user system). It may be that our servers are shitty (though I doubt it, Nick’s thrown some serious cash at our server situation and hosting facility). The folks at SixApart (one of whom is my friend - hi Anil!) did an amazing thing with MovableType, which was raise the bar for personal publishing systems way higher than Blogger set it.
But that was then.
Now, Gawker’s got a tech team of talented people who are unable to figure out what makes MT so freaking slow even working with SixApart support to figure it out. Now, we’ve got comments publishing in batch - not real-time - because the servers couldn’t handle MT’s heavy republishing process. We’ve got a publishing server sync’ing to front-end web servers - because one server couldn’t handle MT’s heavy republishing process plus the serving of static HTML files which costs, oh I don’t know, nothing. We’ve got ME pulling my HAIR out every day simply trying to get my job done with a tool that, from this user’s perspective, feels nothing but broken. The fact that the TypePad site I contribute to, Misbehaving, is raped by uncontrollable spam comments every day only confirms my distrust of the MT codebase.
My brief experience here with WordPress and a few useful plugins, in comparison, has been heaven.
And so the next raising of the bar.

MovableType [SixApart]

SilverStripe Tree Control

November 7th, 2005 | Filed under Javascript, CSS, DHTML

Here’s a really neat DHTML expand and collapse tree view for list items. Simply include a javascript and CSS file into your page, then apply the appropriate ID’s to your list. Check out my quick and dirty demo.

Thanks, Su!

SilverStripe Tree Control

Well-designed weblog: Maniacal Rage

November 6th, 2005 | Filed under Design, Ruby on Rails

Happened upon this personal site by Garrett Murray today, via torrez, and found the design really inspiring. I love sites with a dark background and light text - so much easier to read. I like how there’s lots of empty space but that navigation links appear when you rollover the post and titles, wondering what’s what. I used to dog Ruby on Rails sites for always having the same look - the big headlines, certain font families and colors. I don’t know if it’s the default style in the Rails view templates or the fact that Rails fans are influenced by 37 Signals or what - but Maniacal Rage doesn’t. Just looking at it I couldn’t tell what CMS or platform publishes it which is rare with most blogs. (Give it a try - lots of TypePad, WordPress, MT, RoR and Blogger sites are identifiable by style.)
Bonus: there’s no drop shadow or rounded corners, which are really getting on my nerves lately. *stares at drop shadows on this page*
Anyway, if I were a designer, this is the kind of site I’d want to create. It’s got my wheels turning about my sad, poor, bare scribbling.net.

Maniacal Rage. Senseless acts of writing.

Google Sitemaps

November 5th, 2005 | Filed under Search Engine Optimization

Google Sitemaps looks really cool. From what I can see of it, you submit an XML document which defines a map of your site - page locations, their update frequency and priority - and the Googlebot indexes as you specify (though Google doesn’t make any promises, presumably to discourage spammers and rogue SEOers). Looks like they’re going to provide site stats based on sitemaps as well.

I told the MSN Search team last month that tools for web publishers - like stats, popularity rankings of pages, configurable internal site search - would be the killer app that would get site publishers to adopt and spread a particular brand’s search box. Looks like the big G is headed in that direction.

And! They’re accepting pings when a site changes!!

Google Sitemaps (BETA) Help

The top 5 red flags of software development

October 30th, 2005 | Filed under Startup dot com

It’s the “Before you finish X, could you do Y?” that always gets me.

The top 5 red flags of software development [Signal vs. Noise (by 37signals)]

Robots.txt Generator

October 25th, 2005 | Filed under Essential Tools, Search Engine Optimization

This robots.txt file generator is super-useful. I came this close to writing one of these myself back when I wrote Help the Googlebot understand your web site but I never got around to it.

Robots.txt Generator [McAnerin Networks Inc]

Edit in Place with JavaScript and CSS

October 24th, 2005 | Filed under DHTML, Interface design

Here’s some useful edit-in-place Flickr style DHTML.

Edit in Place with JavaScript and CSS [Tool-man]

Using Patterns in Web Design

October 20th, 2005 | Filed under Design, Interface design

Speaking of prototypes, I really dig 37 Signals’ approach: for each web page, on paper, list the page elements needed, group related items together, design each chunk, and then arrange them on the page.

An Introduction to Using Patterns in Web Design [37 Signals]

AJAX Golden Rule

October 20th, 2005 | Filed under AJAX

Just because you can doesn’t mean you should.


Fast prototyping - with an emphasis on FAST

October 20th, 2005 | Filed under Javascript, DHTML, Rapid development, Interface design

I’m building this thing with some buddies. My current responsibility is the prototype. This thing’s going to use some DHTML and AJAX, and I can envision the screens in my mind, all working in beautiful, usable form, a culmination of all the good interface techniques I’ve seen without all the ones that suck.

So I start to prototype, and I decide I want to totally wow my friends with a nearly-working front end. I’ve only got a few days, mind you - we’re working in 3-day dev cycles. And like an idiot, I wind up getting totally bogged down in writing and debugging Javascript for one little minor piece of functionality that we’ll probably throw out in the end anyway because this is a quick and dirty prototype. End result? Instead of a flashy, nearly-working proto, I had NOTHING to show for all my Javascript screwing around.

Lesson? There is no room for anal perfectionism in rapid prototyping.


Microsoft Search Champs

October 18th, 2005 | Filed under Startup dot com, User testing

I spent a day up at the Microsoft campus in Redmond last week meeting with their search team along with several other bloggers discussing web search problems and solutions. It was a pretty amazing day for me. No matter how much MS’ approach to things irritates or enrages me, the fact is that it’s one of the greatest software companies on the planet which brought personal computing to the masses. This means I was starstruck and totally excited to visit campus, which is a huge, sprawling, beautiful place.

Since I signed an NDA 70 pages long which requires I give up my first born child if I reveal any company secrets for the next 100 years, I can’t say much except 1. the search team was having the same discussions we had back at Kinja two years ago (which hurt, deep, since Kinja still languishes) and 2. the search team is bigger than any team I’ve ever worked for, they are aware of their status as underdog, and they are willing to drop more than a few bucks to listen to random bloggers to sit around and demand what they want from search.

A weird and dizzying experience for someone who’s worked only for small companies which sometimes required I go out and buy more toilet paper for the women’s bathroom.

eWeek coverage of the event quotes me briefly and erroneously calls the meeting “camp,” when the name of it is Search Champs. Only jokingly, a few of us bloggers called it camp.

Microsoft Camp Studies Blog Search [eWeek]

The Singleton Design Pattern for PHP

October 18th, 2005 | Filed under PHP, Application design

Singleton’s come in handy for things like, oh, access control lists. (Thanks, Mark.)

The Singleton Design Pattern for PHP