Textmate File Open tip: type a forward slash, get an open path box

Posted by amy on August 10, 2007

Yesterday I discovered, entirely by accident, that when you’ve got an Open File window in Textmate, hitting the forward slash / does precisely what you’d like it to do: drops down a box that allows you to type the path to the file to open, complete with tab completion, as in a command prompt.

I’m sure everyone in the world already knew this, but I’m still pretty new to Textmate, and even though I have the excellent Textmate book, there are only so many tips and shortcuts your brain can pick up at once.

It turns out that ordinary Finder windows also have a shortcut to get a path text entry box, but it’s not nearly as intuitive ( command-shift-G) as a simple /, and the tab completion is not as nice, because it tries to discourage you from getting into the guts of your computer. For example, in Textmate, if you type /u – tab, it gives you /usr; in the Finder, it tries to give you /Users . I understand that this makes sense for the average Finder user, but it’s still oddly disorienting.

Through the wonders of google, I just found out that there’s a way to make your Finder stop hiding root:

As you know, the Finder hides the standard Unix files and folders from you. You can “Go To Folder…” and type in the name of the folder such as /var/log, but that’s fiddly and you still don’t see the “dot” files, so for any serious session, it’s probably easier to drop into Terminal. Except, there’s a terminal command that will make all files and folders display in your Finder. defaults write com.apple.finder AppleShowAllFiles -bool true et voila

This works, I’ve tried it, but then I put it back the way it was because I decided I really didn’t want my dad mucking around in root while he’s checking his email. (Sorry, Dad.)

It’s easy to forget that the windowing system is just a windowing system — it’s not the OS. And that Finder is just an application. And that even the command prompt, which I am comfortable enough in (but not like Max, who is really one of the best commandline geeks I’ve ever known) is just a shell. Abstractions on top of abstractions, and all of them leaky…

Popularity: 11% [?]

On satisfying clients

Posted by max on August 09, 2007

Our next-youngest client, Ari (4), executed this project without our assistance. It worked out magnificently. Take two glossy magazine pages, a bunch of tape, and wrap pages around feet. Apply tape. VoilĂ : Magazine slippers / goblin shoes / “skates”.

Ari in his magazine skates

This is one reason not to ration tape.

Popularity: 10% [?]

On tape, kids, and clients

Posted by amy on August 08, 2007

First, a parent hack. Got kids? You should be reading Parent Hacks. Not got kids? Read on anyway, I relate the whole thing to user requirements at the end.

The hack: As soon as your kid is old enough not to eat it, buy a multipack of store-brand magic tape. Provide your child with the tape, scissors, the contents of your recycle bin (purged of dangerous items), and a box of broken toys and other small household items. Now leave your kid alone with the stuff.

The most important part of the hack: do not ration the tape.


Ari loves tape. We used to ration it. We value conservation, and using up gobs and gobs of tape seemed useless, expensive, and just plain wasteful. We didn’t understand the things he did with it. They were incomprehensible and often ugly. He used too much of it. It all seemed pointless. Three things made us change our minds:

First, we realized that tape is so cheap it’s essentially free, even when used in quantity like Ari uses it. Ari can easily spend an hour on a taping project, without needing, wanting, or even acknowledging parental attention. A babysitter costs us at least $12/hour. So not rationing tape actually saves us money.

Second, we realized that the tape served the goal of conservation by enabling the transformation of, basically, garbage, into toys and games and arts and crafts. Yes, eventually the stuff did end up on the curb anyway, but it enjoyed a (sometimes very long) second life as a more-or-less elaborate Ari contraption.

Third, we realized that tape is a non-toxic, easy to clean up, and remarkably versatile project supply that allows both two- and three-dimensional constructions. Glue is also versatile, but much, much messier.

Finally, we realized that while the things Ari made with the tape seemed senseless to us, they were valuable, important, and even beautiful to him. This is often the case with our childrens’ projects. We’ve come to realize how often we say no to kids, just reflexively, for no other reason than that what they want doesn’t make any sense to us, the grownups. (“No, don’t use up all that tape. What do you need all that tape for? Why do you have to tape the giraffe to a stick and hang rubber bands off him? What’s so important about putting those toy people in a cardboard-reinforced tape shell and carrying them around in an old purse? What the hell for???”)

When we find ourselves saying no, we stop and ask if there’s really a good reason for the ‘no’. We try to say yes, when we can. And so, we say yes to as much tape as he wants, whenever he wants.

What this has to do with clients:

Clients, like kids, often want, do, and care about things we don’t understand. It’s our job to try to understand them, and it’s difficult, exhausting work. It’s much, much easier to dismiss them. “No, what do you want to be able to download spreadsheets for? Who cares about what color that dumb little button is? That’s a ridiculous process anyway, why should I make the software conform to it?”

We want to build software that we care about, and that we understand. But that’s not our job. Our job is to help our clients do what is important for them.

“How can you compare clients to kids?” you may ask. “What kind of whupped parent are you that you treat your kids like they’re your clients?” or conversely “Isn’t it a little insulting to treat your clients like they’re children?” I’m not arguing for not setting limits for your children. I’m arguing for respecting them as people whose values we do not always understand, just as we respect our clients as people whose values we do not always understand. (Software development is just like anthropology, only better paid, I’ve always said.) We have broad and deep expertise in many areas that our kids don’t, and in order to help them do what is important for them, we’ll have to draw on that. But the same goes for clients. We don’t let our kids go without brushing their teeth, even though it’s not important to them, because we understand that toothbrushing is part of the infrastructure of living. We don’t let our clients’ projects go without version control, even though they don’t care about version control, because version control is part of the infrastructure of software development. We should not be slavishly trying to meet our clients’ every needs any more than we should do that with our kids, and even when our kids are at their most infuriating and most incomprehensible, we should remember that to them, the things they care about are every bit as important as the things we care about are to us.

We’re not the boss of our kids, and we’re not the slaves of our clients. We’re just the consultants.

Popularity: 12% [?]

“You know CSS, right?”

Posted by amy on June 29, 2007

Sure, I know CSS. Just like I know Javascript. But then your CSS does something weird, and you can’t figure out how to fix it, and you look online and you find stuff like this:

Be aware that most of the demos in this site employ the Holly hack to work correctly in IE, but now IE7 fails to read the old star-html hack which was the vehicle for feeding the Holly hack hasLayout fix. Further, IE7 cannot be shown a small height to trigger hasLayout as has been customary.

Or this:

Liquid layouts have their own problems in the wide screens, stretching both text lines and designs beyond belief in some cases. Besides the obvious, Explorer for Windows can also have very nasty bugs in liquid layouts when rigid content that shares space with floats happens to “lock up” the page width. When that happens, the bad old 3px bug induces content dropping, and the only cure is to use min-width to stop the shrinkage before lockup happens.

Unfortunately, IE does not support min-width as well as it supports the 3px bug, so a JavaScript is then needed to coerce compliance in IE. It’s a big pain in the you know where.

Really?That’s a big pain? You’re kidding me.

Anyway, all I want is for my footer to stay at the damn foot. This is only possible, apparently, if I can tell you in advance which one of three columns will be the longest. Or maybe there are some weird hacks that no longer work in IE7 that I could use. I’m not quite sure, because it turns out that CSS is not, as I’d previously believed, a mere aid to ensuring that your design is consistent across web pages and your html not too big, but an arcane alchemical pursuit, complete with footnotes.

More thoughts on this, but it’s my birthday, and apparently my son has bought a cupcake to share with me, that must be shared RIGHT NOW!

Popularity: 8% [?]

Typo to WordPress migration

Posted by max on June 25, 2007

The Stuart Johnston posting Automatic migration from typo to WordPress got us part of the way from Typo to WordPress, but a number of things have changed in Typo since those scripts were written, so it took some jiggering to get working. We were at Typo 4.1, and the database schema was somewhat different.

This is what I did to export the data from Typo:

bash$ mysqldump -u username -p name_of_typo_db articles_tags tags categorizations categories contents feedback > dumpster.sql

Then I imported that data into the WordPress database (just did “source dumpster.sql” within mysql), then sourced typo41_migrate.sql, which is modified from Johnston’s typo_to_wordpress_with_utw.sql script.

Comments welcome on the utility of my process.

Popularity: 10% [?]

hackety hack baby

Posted by amy on May 09, 2007

Hackety hack baby

Popularity: 6% [?]